homebridge-http-sensors-switches
Version:
This plugin communicates with your devices over HTTP or MQTT. Currently it supports Light Bulb, Switches, Outlets, Fan, Garage Door, Shades / Blinds, Temperature/Humidity, Motion, Contact and Occupancy sensor, Door, Sprinkler, Valve, Air Quality, Smoke, C
1,224 lines (1,223 loc) • 61.3 kB
JSON
{
"pluginAlias": "HttpSensorsAndSwitches",
"pluginType": "platform",
"headerDisplay": "Sensors, Switches, Lights",
"footerDisplay": "Please use Unique ID's",
"singular": true,
"schema": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"description": {
"title": "Description",
"type": "string"
},
"devices": {
"type": "array",
"title": "Devices",
"description": "",
"items": {
"type": "object",
"properties": {
"deviceType": {
"type": "string",
"title": "Device Type",
"oneOf":[
{"title":"Temperature & Humidity Sensor","enum":["Sensor"]},
{"title":"Switch","enum":["Switch"]},
{"title":"Outlet","enum":["Outlet"]},
{"title":"Light Bulb","enum":["LightBulb"]},
{"title":"Fan","enum":["Fan"]},
{"title":"Motion Sensor","enum":["MotionSensor"]},
{"title":"Contact Sensor","enum":["ContactSensor"]},
{"title":"Battery","enum":["Battery"]},
{"title":"Light Sensor","enum":["LightSensor"]},
{"title":"Air Quality","enum":["AirQualitySensor"]},
{"title":"Carbon Dioxide","enum":["CarbonDioxideSensor"]},
{"title":"Smoke Sensor","enum":["SmokeSensor"]},
{"title":"Occupancy Sensor","enum":["OccupancySensor"]},
{"title":"Door","enum":["DoorOpener"]},
{"title":"Garage Door","enum":["GarageDoorOpener"]},
{"title":"Window","enum":["Window"]},
{"title":"Window Covering","enum":["WindowCovering"]},
{"title":"Valve","enum":["Valve"]}
],
"required": true,
"default": "Switch",
"placeholder": "Switch"
},
"enableLogging": {
"title": "Enable Logging",
"description": "Enable console Logging",
"type": "boolean",
"required": false,
"default": true
},
"deviceID": {
"title": "Device ID",
"description": "Please input Unique ID for this device",
"type": "string",
"required": true
},
"deviceName": {
"title": "Device name",
"description": "Device name",
"type": "string",
"required": true
},
"deviceManufacturer": {
"title": "Device Manufacturer",
"description": "Device Manufacturer",
"type": "string",
"required": false
},
"deviceModel": {
"title": "Device Model",
"description": "Device Model",
"type": "string",
"required": false
},
"deviceSerialNumber": {
"title": "Device Serial Number",
"description": "Device Serial number or leave it blank and will be generated automaticaly",
"type": "string",
"required": false
},
"deviceFirmwareVersion": {
"title": "Device Firmware version",
"description": "Device Firmware version",
"type": "string",
"required": false
},
"ignoreHttpsCertErrors": {
"title": "Ignore HTTPS Certificate Errors",
"type": "boolean",
"default": false,
"description": "If enabled, the plugin will skip certificate validation when connecting to this device over HTTPS. Use only for trusted local devices with self-signed certificates.",
"required": false
},
"trustedCert": {
"title": "Trusted Certificate (PEM format)",
"type": "string",
"description": "Paste the full PEM-encoded certificate here to validate HTTPS connections without skipping verification.",
"required": false
},
"urlON": {
"title": "URL turn ON",
"description": "URL to Turn On the Switch / Light",
"type": "string",
"required": false
},
"urlOFF": {
"title": "URL turn OFF",
"description": "URL to Turn OFF the Switch / Light",
"type": "string",
"required": false
},
"sharedPolling": {
"title": "Shared Polling",
"description": "Share url status between devices",
"type": "boolean",
"required": false
},
"sharedPollingId": {
"title": "Share Polling group name",
"description": "Share Polling group name",
"type": "string",
"required": false
},
"urlStatus": {
"title": "URL Status",
"description": "URL to retrieve JSON of Device status",
"type": "string",
"required": false
},
"stateName": {
"title": "Parameter Name for On/Off",
"description": "JSON Parameter Name for On/Off status",
"type": "string",
"required": false
},
"onStatusValue": {
"title": "Parameter Value for status On",
"description": "JSON return Value for status ON (true, 1, ON)",
"type": "string",
"required": false
},
"offStatusValue": {
"title": "Parameter Value for status OFF",
"description": "JSON return Value for status OFF (false, 0, OFF)",
"type": "string",
"required": false
},
"inUseStateName": {
"title": "Parameter Name for: in USE",
"description": "JSON Parameter Name for in Use status",
"type": "string",
"required": false
},
"inUseOnStatusValue": {
"title": "Parameter value for In Use Status ON",
"description": "JSON return Value for status In Use ON (true, 1)",
"type": "string",
"required": false
},
"inUseOffStatusValue": {
"title": "Parameter value for In Use Status OFF",
"description": "JSON return Value for status in use OFF (false, 0)",
"type": "string",
"required": false
},
"useRGB": {
"title": "Use RGB Color",
"description": "Use RGB instead of HSV",
"type": "boolean",
"required": false
},
"useBrightness255": {
"title": "Use Brightness 0 - 255",
"description": "Use Brightness 0 - 255 not 0 - 100",
"type": "boolean",
"required": false
},
"methodUpdate": {
"title": "use GET method",
"description": "Default is POST method",
"type": "boolean",
"required": false
},
"useColorTKelvin": {
"title": "Color Temperature in Kelvin",
"description": "Mired (153-500), Kelvin (2000-6500)",
"type": "boolean",
"required": false
},
"rgbParamName": {
"title": "Parameter Name for RGB",
"description": "JSON Parameter Name for RGB color",
"type": "string",
"required": false
},
"urlLightBulbControl": {
"title": "HTTP address Light Bulb Control",
"description": "HTTP address where to send Device control commands",
"type": "string",
"required": false
},
"brightnessParamName": {
"title": "Parameter Name for Brightness",
"description": "JSON Parameter Name for Brightness",
"type": "string",
"required": false
},
"saturationParamName": {
"title": "Parameter Name for Saturation",
"description": "JSON Parameter Name for Saturation",
"type": "string",
"required": false
},
"hueParamName": {
"title": "Parameter Name for HUE",
"description": "JSON Parameter Name for HUE",
"type": "string",
"required": false
},
"colorTemperatureParamName": {
"title": "Parameter Name for Color Temperature",
"description": "JSON Parameter Name for Color Temperature",
"type": "string",
"required": false
},
"urlDeviceControl": {
"title": "HTTP address Device Control",
"description": "HTTP address where to send Device control commands",
"type": "string",
"required": false
},
"paramNameStatusActive": {
"title": "Parameter Name for Active",
"description": "JSON Parameter Name for Active (on/off)",
"type": "string",
"required": false
},
"paramNameInUse": {
"title": "Parameter Name for In Use",
"description": "JSON Parameter Name for In Use (on/off)",
"type": "string",
"required": false
},
"paramNameTargetDoorState": {
"title": "Parameter Name for Target Door State",
"description": "JSON Parameter Name for TargetDoorState",
"type": "string",
"required": false
},
"paramNameCurrentDoorState": {
"title": "Parameter Name for CurrentDoorState",
"description": "JSON Parameter Name for Current Door State",
"type": "string",
"required": false
},
"paramNameObstructionDetected": {
"title": "Parameter Name for Obstruction Detected",
"description": "JSON Parameter Name for Obstruction Detected",
"type": "string",
"required": false
},
"paramNameStatusJammed": {
"title": "Parameter Name for Device Jammed",
"description": "JSON Parameter Name for Device Jammed",
"type": "string",
"required": false
},
"paramNameTargetPosition": {
"title": "Parameter Name for Target Position",
"description": "JSON Parameter Name for Target Position",
"type": "string",
"required": false
},
"paramNameCurrentPosition": {
"title": "Parameter Name for Current Position",
"description": "JSON Parameter Name for Current Position",
"type": "string",
"required": false
},
"paramNamePositionState": {
"title": "Parameter Name for Position State",
"description": "JSON Parameter Name for Position State",
"type": "string",
"required": false
},
"paramNameHoldPosition": {
"title": "Parameter Name for Hold Position",
"description": "JSON Parameter Name for Hold Position",
"type": "string",
"required": false
},
"paramNameRotationSpeed": {
"title": "Parameter Name for Rotation Speed",
"description": "JSON Parameter Name for Rotation Speed",
"type": "string",
"required": false
},
"paramNameRotationDirection": {
"title": "Parameter Name for Rotation Direction",
"description": "JSON Parameter Name for Rotation Direction",
"type": "string",
"required": false
},
"paramNameSwingMode": {
"title": "Parameter Name for Swing Mode",
"description": "JSON Parameter Name for Swing Mode",
"type": "string",
"required": false
},
"paramNameCurrentFanState": {
"title": "Parameter Name for Current Fan State",
"description": "JSON Parameter Name for Current Fan State",
"type": "string",
"required": false
},
"paramNameTargetFanState": {
"title": "Parameter Name for Target Fan State",
"description": "JSON Parameter Name for Target Fan State",
"type": "string",
"required": false
},
"paramNameContactSensorState": {
"title": "Parameter Name for Contact Sensor State",
"description": "JSON Parameter Name for Contact Sensor State",
"type": "string",
"required": false
},
"paramNameCurrentAmbientLightLevel": {
"title": "Parameter Name for Current Ambient Light Level",
"description": "JSON Parameter Name for Current Ambient Light Level",
"type": "string",
"required": false
},
"paramNameCO2Detected": {
"title": "Parameter Name for CO2 Detected",
"description": "JSON Parameter Name for CO2 Detected",
"type": "string",
"required": false
},
"paramNameSmokeDetected": {
"title": "Parameter Name for Smoke Detected",
"description": "JSON Parameter Name for Smoke Detected",
"type": "string",
"required": false
},
"paramNameOccupancyDetected": {
"title": "Parameter Name for Occupancy Detected",
"description": "JSON Parameter Name for Occupancy Detected",
"type": "string",
"required": false
},
"paramNameMotionDetected": {
"title": "Parameter Name for Motion Detected",
"description": "JSON Parameter Name for Motion Detected",
"type": "string",
"required": false
},
"paramNameAirQuality": {
"title": "Parameter Name for Air Quality",
"description": "JSON Parameter Name for Air Quality",
"type": "string",
"required": false
},
"paramNamePM2_5Density": {
"title": "Parameter Name for PM2.5 Density",
"description": "JSON Parameter Name for PM2.5 Density",
"type": "string",
"required": false
},
"paramNamePM10Density": {
"title": "Parameter Name for PM10 Density",
"description": "JSON Parameter Name for PM10 Density",
"type": "string",
"required": false
},
"paramNameOzoneDensity": {
"title": "Parameter Name for Ozone Density",
"description": "JSON Parameter Name for Ozone Density",
"type": "string",
"required": false
},
"paramNameNitrogenDioxideDensity": {
"title": "Parameter Name for Nitrogen Dioxide Density",
"description": "JSON Parameter Name for Nitrogen Dioxide Density",
"type": "string",
"required": false
},
"paramNameSulphurDioxideDensity": {
"title": "Parameter Name for Sulphur Dioxide Density",
"description": "JSON Parameter Name for Sulphur Dioxide Density",
"type": "string",
"required": false
},
"paramNameCarbonMonoxideLevel": {
"title": "Parameter Name for Carbon Monoxide Level",
"description": "JSON Parameter Name for Carbon Monoxide Level",
"type": "string",
"required": false
},
"paramNameVOCDensity": {
"title": "Parameter Name for VOC Level",
"description": "JSON Parameter Name for Volatile Organic Compounds Level",
"type": "string",
"required": false
},
"paramNameCO2Level": {
"title": "Parameter Name for CO2 Level",
"description": "JSON Parameter Name for CO2 Level",
"type": "string",
"required": false
},
"paramNameCO2PeakLevel": {
"title": "Parameter Name for CO2 Peak Level",
"description": "JSON Parameter Name for CO2 Peak Level",
"type": "string",
"required": false
},
"paramNameStatusFault": {
"title": "Parameter Name for Fault",
"description": "JSON Parameter Name Device Fault",
"type": "string",
"required": false
},
"paramNameBatteryLevel": {
"title": "Parameter Name for Battery level",
"description": "JSON Parameter Name for Battery level",
"type": "string",
"required": false
},
"paramNameStatusLowBattery": {
"title": "Parameter Name for Low Battery",
"description": "JSON Parameter Name for Low Battery",
"type": "string",
"required": false
},
"paramNameStatusChargingBattery": {
"title": "Parameter Name for Charging Battery",
"description": "JSON Parameter Name for Charging Battery",
"type": "string",
"required": false
},
"paramNameStatusTampered": {
"title": "Parameter Name for Tampered",
"description": "JSON Parameter Name Device is Tampered",
"type": "string",
"required": false
},
"paramNameValveType": {
"type": "number",
"title": "Valve Type",
"oneOf":[
{"title":"Generic valve","enum":[0]},
{"title":"Irrigation","enum":[1]},
{"title":"Shower head","enum":[2]},
{"title":"Tap","enum":[3]}
],
"required": false
},
"sensorUrl": {
"title": "Sensor URL",
"description": "JSON file containing sensor readings (temperature, humidity)",
"type": "string",
"required": false
},
"temperatureName": {
"title": "Parameter Name for Temperature",
"description": "JSON parameter name for Temperature reading",
"type": "string",
"required": false
},
"humidityName": {
"title": "Parameter Name for Humidity",
"description": "JSON parameter name for Humidity reading",
"type": "string",
"required": false
},
"updateInterval": {
"title": "Update interval",
"description": "update interval for reading Sensors, default is 60000 = 60 seconds = 1 minute",
"type": "integer",
"required": false
},
"sharedPollingInterval": {
"title": "Update Interval",
"description": "Update interval, default is 60000 miliseconds",
"type": "integer",
"required": false
},
"mqttBroker": {
"title": "MQTT Broker",
"description": "URL of MQTT Broker",
"type": "string",
"required": false
},
"mqttPort": {
"title": "MQTT port",
"description": "1883",
"type": "number",
"required": false
},
"mqttUsername": {
"title": "MQTT Username",
"description": "MQTT Username",
"type": "string",
"required": false
},
"mqttPassword": {
"title": "MQTT Password",
"description": "MQTT Password",
"type": "string",
"required": false
},
"mqttTemperature": {
"title": "MQTT Topic Temperature",
"description": "mqtt Topic Temperature",
"type": "string",
"required": false
},
"mqttHumidity": {
"title": "MQTT Topic Humidity",
"description": "mqtt Topic Humidity",
"type": "string",
"required": false
},
"mqttSwitch": {
"title": "MQTT Topic Switch",
"description": "MQTT Topic Switch",
"type": "string",
"required": false
},
"mqttRGB": {
"title": "MQTT Topic RGB",
"description": "MQTT Topic RGB",
"type": "string",
"required": false
},
"mqttBrightness": {
"title": "MQTT Topic Brightness",
"description": "MQTT Topic Brightness",
"type": "string",
"required": false
},
"mqttHue": {
"title": "MQTT Topic Hue",
"description": "MQTT Topic Hue",
"type": "string",
"required": false
},
"mqttSaturation": {
"title": "MQTT Topic Saturation",
"description": "MQTT Topic Saturation",
"type": "string",
"required": false
},
"mqttColorTemperature": {
"title": "MQTT Topic Color Temperature",
"description": "MQTT Topic Color Temperature (Kelvin)",
"type": "string",
"required": false
},
"mqttInUse": {
"title": "MQTT Topic In Use",
"description": "MQTT Topic In Use",
"type": "string",
"required": false
},
"mqttReconnectInterval": {
"title": "MQTT Reconnect interval (sec)",
"description": "MQTT Reconnect interval default is set to 60 sec",
"type": "number",
"required": false
},
"mqttRotationSpeed": {
"title": "Parameter Name for Rotation Speed",
"description": "MQTT Topic Name for Rotation Speed",
"type": "string",
"required": false
},
"mqttRotationDirection": {
"title": "MQTT Topic for Rotation Direction",
"description": "MQTT Topic Name for Rotation Direction",
"type": "string",
"required": false
},
"mqttSwingMode": {
"title": "MQTT Topic for Swing Mode",
"description": "MQTT Topic Name for Swing Mode",
"type": "string",
"required": false
},
"mqttCurrentFanState": {
"title": "MQTT Topic for Current Fan State",
"description": "MQTT Topic Name for Current Fan State",
"type": "string",
"required": false
},
"mqttTargetFanState": {
"title": "MQTT Topic for Target Fan State",
"description": "MQTT Topic Name for Target Fan State",
"type": "string",
"required": false
},
"mqttMotionDetected": {
"title": "MQTT Topic Motion Detected",
"description": "MQTT Topic Motion Detected",
"type": "string",
"required": false
},
"mqttContactSensorState": {
"title": "MQTT Topic Contact Sensor State",
"description": "MQTT Topic Contact Sensor State",
"type": "string",
"required": false
},
"mqttCurrentAmbientLightLevel": {
"title": "MQTT Topic Current Ambient Light Level",
"description": "MQTT Topic Current Ambient Light Level",
"type": "string",
"required": false
},
"mqttCO2Detected": {
"title": "MQTT Topic for CO2 Detected",
"description": "MQTT Topic Name for CO2 Detected",
"type": "string",
"required": false
},
"mqttSmokeDetected": {
"title": "MQTT Topic for Smoke Detected",
"description": "MQTT Topic Name for Smoke Detected",
"type": "string",
"required": false
},
"mqttOccupancyDetected": {
"title": "MQTT Topic for Occupancy Detected",
"description": "MQTT Topic Name for Occupancy Detected",
"type": "string",
"required": false
},
"mqttAirQuality": {
"title": "MQTT Topic for Air Quality",
"description": "MQTT Topic Name for Air Quality",
"type": "string",
"required": false
},
"mqttPM2_5Density": {
"title": "MQTT Topic for PM2.5 Density",
"description": "MQTT Topic Name for PM2.5 Density",
"type": "string",
"required": false
},
"mqttPM10Density": {
"title": "MQTT Topic for PM10 Density",
"description": "MQTT Topic Name for PM10 Density",
"type": "string",
"required": false
},
"mqttOzoneDensity": {
"title": "MQTT Topic for Ozone Density",
"description": "MQTT Topic Name for Ozone Density",
"type": "string",
"required": false
},
"mqttNitrogenDioxideDensity": {
"title": "MQTT Topic for Nitrogen Dioxide Density",
"description": "MQTT Topic Name for Nitrogen Dioxide Density",
"type": "string",
"required": false
},
"mqttSulphurDioxideDensity": {
"title": "MQTT Topic for Sulphur Dioxide Density",
"description": "MQTT Topic Name for Sulphur Dioxide Density",
"type": "string",
"required": false
},
"mqttCarbonMonoxideLevel": {
"title": "MQTT Topic for Carbon Monoxide Level",
"description": "MQTT Topic Name for Carbon Monoxide Level",
"type": "string",
"required": false
},
"mqttVOCDensity": {
"title": "MQTT Topic for VOC Level",
"description": "MQTT Topic Name for Volatile Organic Compounds Level",
"type": "string",
"required": false
},
"mqttCO2Level": {
"title": "MQTT Topic for CO2 Level",
"description": "MQTT Topic Name for CO2 Level",
"type": "string",
"required": false
},
"mqttCO2PeakLevel": {
"title": "MQTT Topic for CO2 Peak Level",
"description": "MQTT Topic Name for CO2 Peak Level",
"type": "string",
"required": false
},
"mqttTargetDoorState": {
"title": "MQTT Topic for Target Door State",
"description": "MQTT Topic Name for Target Door State",
"type": "string",
"required": false
},
"mqttCurrentDoorState": {
"title": "MQTT Topic for Current Door State",
"description": "MQTT Topic Name for Current Door State",
"type": "string",
"required": false
},
"mqttObstructionDetected": {
"title": "MQTT Topic for Obstruction Detected",
"description": "MQTT Topic Name for Obstruction Detected",
"type": "string",
"required": false
},
"mqttStatusJammed": {
"title": "MQTT Topic for Status Jammed",
"description": "MQTT Topic Name for Status Jammed",
"type": "string",
"required": false
},
"mqttTargetPosition": {
"title": "MQTT Topic for Target Position",
"description": "MQTT Topic Name for Target Position",
"type": "string",
"required": false
},
"mqttCurrentPosition": {
"title": "MQTT Topic for Current Position",
"description": "MQTT Topic Name for Current Position",
"type": "string",
"required": false
},
"mqttPositionState": {
"title": "MQTT Topic for Position State",
"description": "MQTT Topic Name for Position State",
"type": "string",
"required": false
},
"mqttHoldPosition": {
"title": "MQTT Topic for Hold Position",
"description": "MQTT Topic Name for Hold Position",
"type": "string",
"required": false
},
"mqttActive": {
"title": "MQTT Topic for Active",
"description": "MQTT Topic Name for Active (on/off)",
"type": "string",
"required": false
},
"mqttFault": {
"title": "MQTT Topic for Fault",
"description": "MQTT Topic Name for Device is Fault",
"type": "string",
"required": false
},
"mqttBatteryLevel": {
"title": "MQTT Topic for Battery Level",
"description": "MQTT Topic Name for Battery Level",
"type": "string",
"required": false
},
"mqttBatteryChargingState": {
"title": "MQTT Topic for Battery Charging State",
"description": "MQTT Topic Name for Battery Charging State",
"type": "string",
"required": false
},
"mqttLowBattery": {
"title": "MQTT Topic for Low Battery",
"description": "MQTT Topic Name for Low Battery",
"type": "string",
"required": false
},
"mqttTampered": {
"title": "MQTT Topic for Tampered",
"description": "MQTT Topic Name for Tampered",
"type": "string",
"required": false
},
"discordWebhook": {
"title": "Discord WebHook",
"description": "URL to Discord WebHook",
"type": "string",
"required": false
},
"discordUsername": {
"title": "Discord Username",
"description": "Name for publisher",
"type": "string",
"required": false
},
"discordAvatar": {
"title": "Discord Avatar",
"description": "URL to Online Avatar image",
"type": "string",
"required": false
},
"discordMessage": {
"title": "Discord Message",
"description": "Message",
"type": "string",
"required": false
}
}
}
}
}
},
"layout": [
{
"key": "devices",
"type": "array",
"title": "Devices:",
"items": [
{
"key": "devices[]",
"type": "fieldset",
"title": "{{ value.deviceName || 'new Device' }}",
"expandable": true,
"expanded": false,
"items": [
"devices[].enableLogging",
"devices[].deviceType",
{
"key": "devices[].paramNameValveType",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'Valve';"
}
},
"devices[].deviceName",
"devices[].deviceID",
"devices[].deviceManufacturer",
"devices[].deviceModel",
"devices[].deviceSerialNumber",
"devices[].deviceFirmwareVersion",
{
"key": "devices[]",
"type": "fieldset",
"title": "Settings",
"items": [
{
"key": "devices[]",
"type": "fieldset",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'LightBulb';"
},
"items": [
{
"type": "flex",
"flex-flow": "row wrap",
"items": [
"devices[].useRGB",
"devices[].useBrightness255",
"devices[].useColorTKelvin"
]
}
]
},
{
"key": "devices[]",
"type": "fieldset",
"title": "⚙️ HTTP {{ value.deviceType }} Settings",
"expandable": true,
"expanded": false,
"items": [
{
"type": "flex",
"flex-flow": "row wrap",
"items": [
"devices[].sharedPolling",
"devices[].sharedPollingId",
"devices[].sharedPollingInterval"
]
},
{
"title": "Security Settings",
"type": "section",
"expandable": true,
"expanded": false,
"items": [
"devices[].ignoreHttpsCertErrors",
{
"key": "devices[].trustedCert",
"type": "textarea",
"title": "Trusted Certificate (PEM format)",
"description": "Paste the full PEM-encoded certificate here to validate HTTPS connections without skipping verification.",
"rows": 5
}
]
},
{
"title": "Battery Settings",
"type": "section",
"expandable": true,
"expanded": false,
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'Sensor';"
},
"items": [
"devices[].paramNameBatteryLevel",
"devices[].paramNameStatusChargingBattery",
"devices[].paramNameStatusLowBattery"
]
},
{
"type": "section",
"title": "-----------------------------------------"
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'Switch';"
},
"items": [
"devices[].urlStatus",
"devices[].urlON",
"devices[].urlOFF",
"devices[].stateName",
"devices[].onStatusValue",
"devices[].offStatusValue"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'Battery';"
},
"items": [
"devices[].urlStatus",
"devices[].updateInterval",
"devices[].paramNameBatteryLevel",
"devices[].paramNameStatusChargingBattery",
"devices[].paramNameStatusLowBattery"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'Sensor';"
},
"items": [
"devices[].sensorUrl",
"devices[].updateInterval",
"devices[].temperatureName",
"devices[].humidityName"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'CarbonDioxideSensor';"
},
"items": [
"devices[].urlStatus",
"devices[].updateInterval",
"devices[].paramNameCO2Detected",
"devices[].paramNameCO2Level",
"devices[].paramNameCO2PeakLevel",
"devices[].paramNameStatusActive",
"devices[].paramNameStatusFault",
"devices[].paramNameStatusLowBattery",
"devices[].paramNameStatusTampered"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'MotionSensor';"
},
"items": [
"devices[].urlStatus",
"devices[].updateInterval",
"devices[].paramNameMotionDetected",
"devices[].paramNameStatusActive",
"devices[].paramNameStatusFault",
"devices[].paramNameStatusLowBattery",
"devices[].paramNameStatusTampered"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'ContactSensor';"
},
"items": [
"devices[].urlStatus",
"devices[].updateInterval",
"devices[].paramNameContactSensorState",
"devices[].paramNameStatusActive",
"devices[].paramNameStatusFault",
"devices[].paramNameStatusLowBattery",
"devices[].paramNameStatusTampered"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'LightSensor';"
},
"items": [
"devices[].urlStatus",
"devices[].updateInterval",
"devices[].paramNameCurrentAmbientLightLevel",
"devices[].paramNameStatusActive",
"devices[].paramNameStatusFault",
"devices[].paramNameStatusLowBattery",
"devices[].paramNameStatusTampered"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'SmokeSensor';"
},
"items": [
"devices[].urlStatus",
"devices[].updateInterval",
"devices[].paramNameSmokeDetected",
"devices[].paramNameStatusActive",
"devices[].paramNameStatusFault",
"devices[].paramNameStatusLowBattery",
"devices[].paramNameStatusTampered"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'AirQualitySensor';"
},
"items": [
"devices[].urlStatus",
"devices[].updateInterval",
"devices[].paramNameAirQuality",
"devices[].paramNamePM2_5Density",
"devices[].paramNamePM10Density",
"devices[].paramNameOzoneDensity",
"devices[].paramNameNitrogenDioxideDensity",
"devices[].paramNameSulphurDioxideDensity",
"devices[].paramNameCarbonMonoxideLevel",
"devices[].paramNameVOCDensity",
"devices[].paramNameStatusActive",
"devices[].paramNameStatusFault",
"devices[].paramNameStatusLowBattery",
"devices[].paramNameStatusTampered"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'OccupancySensor';"
},
"items": [
"devices[].urlStatus",
"devices[].updateInterval",
"devices[].paramNameOccupancyDetected",
"devices[].paramNameStatusActive",
"devices[].paramNameStatusFault",
"devices[].paramNameStatusLowBattery",
"devices[].paramNameStatusTampered"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'LightBulb';"
},
"items": [
"devices[].urlON",
"devices[].urlOFF",
"devices[].urlStatus",
"devices[].stateName",
"devices[].onStatusValue",
"devices[].offStatusValue",
"devices[].urlLightBulbControl",
"devices[].brightnessParamName",
{
"key": "devices[].rgbParamName",
"condition": {
"functionBody": "return model.devices[arrayIndices].useRGB;"
}
},
{
"key": "devices[].saturationParamName",
"condition": {
"functionBody": "return !model.devices[arrayIndices].useRGB;"
}
},
{
"key": "devices[].hueParamName",
"condition": {
"functionBody": "return !model.devices[arrayIndices].useRGB;"
}
},
"devices[].colorTemperatureParamName"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'Outlet';"
},
"items": [
"devices[].urlStatus",
"devices[].urlON",
"devices[].urlOFF",
"devices[].stateName",
"devices[].onStatusValue",
"devices[].offStatusValue",
"devices[].inUseStateName",
"devices[].inUseOnStatusValue",
"devices[].inUseOffStatusValue"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'Fan';"
},
"items": [
"devices[].methodUpdate",
"devices[].urlStatus",
"devices[].urlDeviceControl",
"devices[].paramNameStatusActive",
"devices[].paramNameRotationSpeed",
"devices[].paramNameRotationDirection",
"devices[].paramNameSwingMode",
"devices[].paramNameCurrentFanState",
"devices[].paramNameTargetFanState"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'GarageDoorOpener';"
},
"items": [
"devices[].methodUpdate",
"devices[].urlStatus",
"devices[].urlDeviceControl",
"devices[].paramNameTargetDoorState",
"devices[].paramNameCurrentDoorState",
"devices[].paramNameObstructionDetected",
"devices[].paramNameStatusJammed"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'DoorOpener';"
},
"items": [
"devices[].methodUpdate",
"devices[].urlStatus",
"devices[].urlDeviceControl",
"devices[].paramNameTargetPosition",
"devices[].paramNameCurrentPosition",
"devices[].paramNamePositionState",
"devices[].paramNameObstructionDetected",
"devices[].paramNameStatusJammed"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'Valve';"
},
"items": [
"devices[].methodUpdate",
"devices[].urlStatus",
"devices[].urlDeviceControl",
"devices[].paramNameStatusActive",
"devices[].paramNameInUse"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'Window';"
},
"items": [
"devices[].methodUpdate",
"devices[].urlStatus",
"devices[].urlDeviceControl",
"devices[].paramNameTargetPosition",
"devices[].paramNameCurrentPosition",
"devices[].paramNamePositionState"
]
},
{
"type": "section",
"condition": {
"functionBody": "return model.devices[arrayIndices].deviceType === 'WindowCovering';"
},
"items": [
"devices[].methodUpdate",
"devices[].urlStatus",
"devices[].urlDeviceControl",
"devices[].paramNameTargetPosition",
"devices[].paramNameCurrentPosition",
"devices[].paramNamePositionState",
"devices[].paramNameHoldPosition",
"devices[].paramNameStatusJammed"
]
}
]
},
{
"key": "devices[]",
"type": "fieldset",
"title": "📡 MQTT {{ value.deviceType }} Settings",
"expandable": true,
"expanded": false,