homebridge-enphase-envoy
Version:
Homebridge plugin for Photovoltaic Energy System manufactured by Enphase.
1,438 lines • 164 kB
JSON
{
"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;"
}
}
}
},
"acBatterieName": {
"title": "Accessory name",
"type": "string",
"placeholder": "Accessory name",
"description": "Accessory name for Home app, if not set will use default name",
"required": false
},
"acBatterieBackupLevelSummaryAccessory": {
"title": "AC Baterry Summary Accessory",
"type": "object",
"properties": {
"displayType": {
"title": "Accessory type",
"type": "integer",
"minimum": 0,
"maximu