UNPKG

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
{ "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,