UNPKG

homebridge-enphase-envoy

Version:

Homebridge plugin for Photovoltaic Energy System manufactured by Enphase.

1,437 lines • 165 kB
{ "pluginAlias": "enphaseEnvoy", "pluginType": "platform", "singular": true, "fixArrays": true, "strictValidation": true, "headerDisplay": "This plugin works with Enphase Photovoltaic system. Devices exposed to the HomeKit needs to be added manually.", "footerDisplay": "For documentation, please see [GitHub repository](https://github.com/grzegorz914/homebridge-enphase-envoy).", "schema": { "type": "object", "properties": { "devices": { "title": "Devices", "type": "array", "items": { "type": "object", "properties": { "name": { "title": "Accessory name", "type": "string", "placeholder": "Accessory name", "description": "Accessory name to be displayed in Home app", "required": true }, "host": { "title": "IP/Hostname", "type": "string", "placeholder": "IP address or hostname", "format": "hostname", "description": "IP Address or hostname of the Enphase Envoy gateway (defaults to envoy.local). For firmware v7+, please set the IP address.", "required": false }, "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 4, "default": 1, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Light Bulb", "enum": [ 1 ] }, { "title": "Fan", "enum": [ 2 ] }, { "title": "Humidity Sensor", "enum": [ 3 ] }, { "title": "Carbon Monoxide Sensor", "enum": [ 4 ] } ], "description": "Accessory type for Home app", "required": true }, "envoyFirmware7xxTokenGenerationMode": { "title": "Envoy Credentials Mode", "type": "integer", "minimum": 0, "maximum": 2, "default": 0, "oneOf": [ { "title": "Envoy password", "enum": [ 0 ] }, { "title": "Enlighten credentials", "enum": [ 1 ] }, { "title": "Self-generated token", "enum": [ 2 ] } ], "description": "Method used login to Envoy api", "required": true }, "envoyPasswd": { "title": "Envoy password", "type": "string", "placeholder": "Envoy password", "description": "Envoy password (only if you altered the default password)", "format": "password", "condition": { "functionBody": "return model.devices[arrayIndices].envoyFirmware7xxTokenGenerationMode === 0;" }, "required": false }, "enlightenUser": { "title": "Enlighten username/email address", "type": "string", "placeholder": "user@example.com", "description": "Enphase Enlighten username.", "condition": { "functionBody": "return model.devices[arrayIndices].envoyFirmware7xxTokenGenerationMode === 1;" }, "required": false }, "enlightenPasswd": { "title": "Enlighten password", "type": "string", "placeholder": "password", "description": "Enlighten password", "format": "password", "condition": { "functionBody": "return model.devices[arrayIndices].envoyFirmware7xxTokenGenerationMode === 1;" }, "required": false }, "envoyToken": { "title": "Envoy token", "type": "string", "placeholder": "Token", "description": "Provide self-generated token (if relevant)", "format": "password", "condition": { "functionBody": "return model.devices[arrayIndices].envoyFirmware7xxTokenGenerationMode === 2;" }, "required": false }, "envoyTokenInstaller": { "title": "Installer", "type": "boolean", "default": false, "description": "Enable for installer-provided token", "condition": { "functionBody": "return model.devices[arrayIndices].envoyFirmware7xxTokenGenerationMode === 2;" }, "required": true }, "productionStateControl": { "title": "Production State Control", "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Switch", "enum": [ 1 ] }, { "title": "Outlet", "enum": [ 2 ] }, { "title": "Lightbulb", "enum": [ 3 ] } ], "description": "Accessory type in Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Accessory name", "description": "Accessory name", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].productionStateControl.displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use accessory name as a prefix", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].productionStateControl.displayType > 0;" } } } }, "productionStateSensor": { "title": "Production State Sensor", "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type in Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Accessory name", "description": "Accessory name", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].productionStateSensor.displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use accessory name as a prefix", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].productionStateSensor.displayType > 0;" } } } }, "plcLevelControl": { "title": "PLC Level Refresh Control", "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Switch", "enum": [ 1 ] }, { "title": "Outlet", "enum": [ 2 ] }, { "title": "Lightbulb", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Accessory name", "description": "Accessory name for Home app", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].plcLevelControl.displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use accessory name as a prefix", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].plcLevelControl.displayType > 0;" } } } }, "powerProductionSummary": { "title": "Power Summary", "type": "integer", "minimum": 1, "default": 1000, "description": "Using the Enphase app, provide the total (W) of all microinverters (used to calculate percentage)", "required": true }, "powerProductionStateSensor": { "title": "Power State Sensor", "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].powerProductionStateSensor.displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].powerProductionStateSensor.displayType > 0;" } } } }, "powerProductionLevelSensors": { "title": "Sensors", "type": "array", "items": { "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false }, "compareMode": { "title": "Comparison mode", "type": "integer", "default": 0, "oneOf": [ { "title": ">", "enum": [ 0 ] }, { "title": ">=", "enum": [ 1 ] }, { "title": "==", "enum": [ 2 ] }, { "title": "<", "enum": [ 3 ] }, { "title": "<=", "enum": [ 4 ] } ], "description": "Comparison mode", "required": true }, "powerLevel": { "title": "Power Level", "type": "integer", "minimum": 0, "description": "Power level in (W) for comparison to sensor that was triggered", "required": false }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false } } } }, "energyProductionStateSensor": { "title": "Energy State Sensor", "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].energyProductionStateSensor.displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].energyProductionStateSensor.displayType > 0;" } } } }, "energyProductionLevelSensors": { "title": "Sensors", "type": "array", "items": { "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false }, "compareMode": { "title": "Comparison mode", "type": "integer", "default": 0, "oneOf": [ { "title": ">", "enum": [ 0 ] }, { "title": ">=", "enum": [ 1 ] }, { "title": "==", "enum": [ 2 ] }, { "title": "<", "enum": [ 3 ] }, { "title": "<=", "enum": [ 4 ] } ], "description": "Comparison mode", "required": true }, "energyLevel": { "title": "Enargy Level", "type": "integer", "minimum": 0, "default": 0, "description": "Energy level in (Wh) to compare to sensor that was triggered", "required": false }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false } } } }, "energyProductionLifetimeOffset": { "title": "Energy Lifetime Offset", "type": "integer", "default": 0, "description": "Here set offset in (Wh) for energy production (if needed)", "required": false }, "powerConsumptionTotalStateSensor": { "title": "Power State Sensor", "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].powerConsumptionTotalStateSensor.displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].powerConsumptionTotalStateSensor.displayType > 0;" } } } }, "powerConsumptionTotalLevelSensors": { "title": "Sensors", "type": "array", "items": { "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false }, "compareMode": { "title": "Comparison mode", "type": "integer", "default": 0, "oneOf": [ { "title": ">", "enum": [ 0 ] }, { "title": ">=", "enum": [ 1 ] }, { "title": "==", "enum": [ 2 ] }, { "title": "<", "enum": [ 3 ] }, { "title": "<=", "enum": [ 4 ] } ], "description": "Comparison mode", "required": true }, "powerLevel": { "title": "Power Level", "type": "integer", "minimum": 0, "default": 0, "description": "Power level in (W) for comparison to sensor that was triggered", "required": false }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false } } } }, "energyConsumptionTotalLifetimeOffset": { "title": "Energy Lifetime Offset", "type": "integer", "default": 0, "description": "Offset in (Wh) for energy consumption total (if needed)", "required": false }, "energyConsumptionTotalStateSensor": { "title": "Energy State Sensor", "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].energyConsumptionTotalStateSensor.displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].energyConsumptionTotalStateSensor.displayType > 0;" } } } }, "energyConsumptionTotalLevelSensors": { "title": "Sensors", "type": "array", "items": { "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false }, "compareMode": { "title": "Comparison mode", "type": "integer", "default": 0, "oneOf": [ { "title": ">", "enum": [ 0 ] }, { "title": ">=", "enum": [ 1 ] }, { "title": "==", "enum": [ 2 ] }, { "title": "<", "enum": [ 3 ] }, { "title": "<=", "enum": [ 4 ] } ], "description": "Comparison mode", "required": true }, "energyLevel": { "title": "Enargy Level", "type": "integer", "minimum": 0, "default": 0, "description": "Energy level in (Wh) to compare to sensor that was triggered", "required": false }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false } } } }, "powerConsumptionNetStateSensor": { "title": "Power State Sensor", "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].powerConsumptionNetStateSensor.displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].powerConsumptionNetStateSensor.displayType > 0;" } } } }, "powerConsumptionNetLevelSensors": { "title": "Sensors", "type": "array", "items": { "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false }, "compareMode": { "title": "Comparison mode", "type": "integer", "default": 0, "oneOf": [ { "title": ">", "enum": [ 0 ] }, { "title": ">=", "enum": [ 1 ] }, { "title": "==", "enum": [ 2 ] }, { "title": "<", "enum": [ 3 ] }, { "title": "<=", "enum": [ 4 ] } ], "description": "Comparison mode", "required": true }, "powerLevel": { "title": "Power Level", "type": "integer", "default": 0, "description": "Here set power level in (W) to compare at which the sensor fired, negative value (-) mean exporting energy to the grid.", "required": false }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false } } } }, "energyConsumptionNetLifetimeOffset": { "title": "Energy Lifetime Offset", "type": "integer", "default": 0, "description": "Offset in (Wh) for net energy consumption (if needed)", "required": false }, "energyConsumptionNetStateSensor": { "title": "Energy State Sensor", "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].energyConsumptionNetStateSensor.displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].energyConsumptionNetStateSensor.displayType > 0;" } } } }, "energyConsumptionNetLevelSensors": { "title": "Sensors", "type": "array", "items": { "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false }, "compareMode": { "title": "Comparison mode", "type": "integer", "default": 0, "oneOf": [ { "title": ">", "enum": [ 0 ] }, { "title": ">=", "enum": [ 1 ] }, { "title": "==", "enum": [ 2 ] }, { "title": "<", "enum": [ 3 ] }, { "title": "<=", "enum": [ 4 ] } ], "description": "Comparison mode", "required": true }, "energyLevel": { "title": "Energy Level", "type": "integer", "minimum": 0, "default": 0, "description": "Here set energy level in (Wh) to compare at which the sensor fired.", "required": false }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false } } } }, "qRelayStateSensor": { "title": "State Sensor", "type": "object", "properties": { "displayType": { "title": "Accessory type", "type": "integer", "minimum": 0, "maximum": 3, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Accessory type for Home app", "required": true }, "name": { "title": "Accessory name", "type": "string", "placeholder": "Sensor name", "description": "Name for the sensor accessory in the Home app", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].qRelayStateSensor.displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "default": false, "description": "Use the accessory name as a prefix", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].qRelayStateSensor.displayType > 0;" } }, "multiphase": { "title": "Multiphase", "type": "boolean", "default": false, "description": "Enables multiphase support, if present", "required": false, "condition": { "functionBody": "return model.devices[arrayIndices].qRelayStateSensor.displayType > 0;" } } } }, "acBatterieName": { "title": "Accessory name", "type": "string", "placeholder": "Accessory name", "description": "Accessory name fo