UNPKG

@irusland/homebridge-mqttthing

Version:

Homebridge plugin supporting various services over MQTT (with TLS fixes)

1,006 lines 98.5 kB
{ "pluginAlias": "mqttthing", "pluginType": "accessory", "schema": { "type": "object", "properties": { "type": { "type": "string", "title": "Type", "description": "Select the accessory type.", "placeholder": "lightbulb", "oneOf": [ { "title": "Air Pressure Sensor", "enum": [ "airPressureSensor" ] }, { "title": "Air Purifier", "enum": [ "airPurifier" ] }, { "title": "Air Quality Sensor", "enum": [ "airQualitySensor" ] }, { "title": "Carbon Dioxide Sensor", "enum": [ "carbonDioxideSensor" ] }, { "title": "Contact Sensor", "enum": [ "contactSensor" ] }, { "title": "Door", "enum": [ "door" ] }, { "title": "Doorbell", "enum": [ "doorbell" ] }, { "title": "Fan", "enum": [ "fan" ] }, { "title": "Fanv2", "enum": [ "fanv2" ] }, { "title": "Garage door opener", "enum": [ "garageDoorOpener" ] }, { "title": "Heater Cooler", "enum": [ "heaterCooler" ] }, { "title": "Humidity Sensor", "enum": [ "humiditySensor" ] }, { "title": "Irrigation System", "enum": [ "irrigationSystem" ] }, { "title": "Leak Sensor", "enum": [ "leakSensor" ] }, { "title": "Light bulb", "enum": [ "lightbulb" ] }, { "title": "Light bulb - on/off", "enum": [ "lightbulb-OnOff" ] }, { "title": "Light bulb - white dimmable (0-100)", "enum": [ "lightbulb-Dimmable" ] }, { "title": "Light bulb - white dimmable (0-255)", "enum": [ "lightbulb-White" ] }, { "title": "Light bulb - white with variable colour temperature", "enum": [ "lightbulb-ColTemp" ] }, { "title": "Light bulb - colour (separate topics)", "enum": [ "lightbulb-Colour" ] }, { "title": "Light bulb - HSV", "enum": [ "lightbulb-HSV" ] }, { "title": "Light bulb - RGB", "enum": [ "lightbulb-RGB" ] }, { "title": "Light bulb - RGBW", "enum": [ "lightbulb-RGBW" ] }, { "title": "Light bulb - RGBWW", "enum": [ "lightbulb-RGBWW" ] }, { "title": "Light Sensor", "enum": [ "lightSensor" ] }, { "title": "Lock Mechanism", "enum": [ "lockMechanism" ] }, { "title": "Microphone", "enum": [ "microphone" ] }, { "title": "Motion Sensor", "enum": [ "motionSensor" ] }, { "title": "Occupancy Sensor", "enum": [ "occupancySensor" ] }, { "title": "Outlet", "enum": [ "outlet" ] }, { "title": "Security System", "enum": [ "securitySystem" ] }, { "title": "Smoke Sensor", "enum": [ "smokeSensor" ] }, { "title": "Speaker", "enum": [ "speaker" ] }, { "title": "StatelessProgrammableSwitch", "enum": [ "statelessProgrammableSwitch" ] }, { "title": "Switch", "enum": [ "switch" ] }, { "title": "Television", "enum": [ "television" ] }, { "title": "Temperature Sensor", "enum": [ "temperatureSensor" ] }, { "title": "Thermostat", "enum": [ "thermostat" ] }, { "title": "Valve", "enum": [ "valve" ] }, { "title": "Weather Station", "enum": [ "weatherStation" ] }, { "title": "Window", "enum": [ "window" ] }, { "title": "Window Covering", "enum": [ "windowCovering" ] } ] }, "name": { "type": "string", "minLength": 1, "required": true, "title": "Name", "description": "Name of accessory, as displayed in HomeKit." }, "url": { "type": "string", "title": "URL", "description": "URL of MQTT server (optional), default: mqtt://localhost:1883", "placeholder": "mqtt://localhost:1883" }, "username": { "type": "string", "required": false, "title": "Username", "description": "Username for MQTT server (optional)" }, "password": { "type": "string", "required": false, "title": "Password", "description": "Password for MQTT server (optional)" }, "mqttOptions": { "type": "object", "title": "MQTT Options", "properties": { "keepalive": { "type": "integer", "title": "Keep Alive", "description": "Keep alive interval (seconds), or 0 to disable", "placeholder": 0 } } }, "mqttPubOptions": { "type": "object", "title": "MQTT Publish Options", "properties": { "retain": { "type": "boolean", "title": "Retain", "description": "Publishing - set Retain flag" } } }, "logMqtt": { "type": "boolean", "readOnly": false, "writeOnly": false, "title": "Log MQTT", "description": "Set to true to enable MQTT logging for this accessory" }, "codec": { "type": "string", "title": "Codec", "description": "Filename of JavaScript file implementing codec" }, "debounceRecvms": { "type": "integer", "title": "Receive Debounce (ms)", "description": "Whenever receiving a message on any configured topic, wait for the number of milliseconds specified before notifying Homekit. If a subsequent message is received during the debounce period, the debounce timer is restarted. This can be useful to filter extraneous notification messages from accessories." }, "optimizePublishing": { "type": "boolean", "title": "Optimize Publishing", "description": "Set to true to suppress republishing of the previously-published value (on each topic)" }, "topics": { "type": "object", "title": "Topics", "properties": { "getOnline": { "type": "string", "description": "Topic used to notify mqttthing of 'online' status" }, "getAirPressure": { "type": "string", "description": "Topic used to notify mqttthing of 'air pressure'", "condition": { "functionBody": "return ['airPressureSensor','airPressureSensor','weatherStation'].includes(model.type);" } }, "getSwitch": { "type": "string", "description": "Topic used to notify mqttthing of switch state", "condition": { "functionBody": "return ['doorbell','statelessProgrammableSwitch'].includes(model.type);" } }, "getRotationMode": { "type": "string", "description": "Topic used to notify mqttthing of 'rotation mode'", "condition": { "functionBody": "return ['heaterCooler'].includes(model.type);" } }, "setRotationMode": { "type": "string", "description": "Topic published by mqttthing to control 'rotation mode'", "condition": { "functionBody": "return ['heaterCooler'].includes(model.type);" } }, "setHSV": { "type": "string", "description": "In HSV mode, control topic published by mqttthing with comma-separated hue (0-360), saturation (0-100) and value (0-100)", "condition": { "functionBody": "return ['lightbulb','lightbulb-HSV'].includes(model.type);" } }, "getHSV": { "type": "string", "description": "In HSV mode, status topic used to notify mqttthing of comma-separated hue (0-360), saturation (0-100) and value (0-100)", "condition": { "functionBody": "return ['lightbulb','lightbulb-HSV'].includes(model.type);" } }, "getRGB": { "type": "string", "description": "In RGB mode, topic to notify mqttthing of comma-separated red, green and blue", "condition": { "functionBody": "return ['lightbulb','lightbulb-RGB'].includes(model.type);" } }, "setRGB": { "type": "string", "description": "In RGB mode, control topic published by mqttthing with comma-separated red, green and blue (all 0-255)", "condition": { "functionBody": "return ['lightbulb','lightbulb-RGB'].includes(model.type);" } }, "getRGBW": { "type": "string", "description": "In RGBW mode, topic to notify mqttthing of comma-separated red, green, blue and white", "condition": { "functionBody": "return ['lightbulb','lightbulb-RGBW'].includes(model.type);" } }, "setRGBW": { "type": "string", "description": "In RGBW mode, control topic published by mqttthing with comma-separated red, green, blue and white (all 0-255)", "condition": { "functionBody": "return ['lightbulb','lightbulb-RGBW'].includes(model.type);" } }, "getRGBWW": { "type": "string", "description": "In RGBWW mode, topic to notify mqttthing of comma-separated red, green, blue, warm_white and cold_white", "condition": { "functionBody": "return ['lightbulb','lightbulb-RGBWW'].includes(model.type);" } }, "setRGBWW": { "type": "string", "description": "In RGBWW mode, control topic published by mqttthing with comma-separated red, green, blue, warm_white and cold_white (all 0-255)", "condition": { "functionBody": "return ['lightbulb','lightbulb-RGBWW'].includes(model.type);" } }, "getWhite": { "type": "string", "description": "Topic used to notify mqttthing of white level (0-255) - can be used with getRGB for RGBW with separately-published white level", "condition": { "functionBody": "return ['lightbulb','lightbulb-White','lightbulb-RGB'].includes(model.type);" } }, "setWhite": { "type": "string", "description": "Control topic published by mqttthing with white level (0-255) - can be used with getRGB for RGBW with separately-published white level", "condition": { "functionBody": "return ['lightbulb','lightbulb-White','lightbulb-RGB'].includes(model.type);" } }, "getWatts": { "type": "string", "description": "Topic used to notify mqttthing of 'current consumption' [Watts] (optional, Eve-App-only)", "condition": { "functionBody": "return ['outlet'].includes(model.type);" } }, "getVolts": { "type": "string", "description": "Topic used to notify mqttthing of 'voltage' [Volts] (optional, Eve-App-only)", "condition": { "functionBody": "return ['outlet'].includes(model.type);" } }, "getAmperes": { "type": "string", "description": "Topic used to notify mqttthing of 'electricCurrent' [Amperes] (optional, Eve-App-only)", "condition": { "functionBody": "return ['outlet'].includes(model.type);" } }, "getTotalConsumption": { "type": "string", "description": "Topic used to notify mqttthing of 'electricCurrent' [Amperes] (optional, Eve-App-only)", "condition": { "functionBody": "return ['outlet'].includes(model.type);" } }, "setTargetState": { "type": "string", "description": "Topic published by mqttthing to control 'target alarm state'", "condition": { "functionBody": "return ['securitySystem'].includes(model.type);" } }, "getTargetState": { "type": "string", "description": "Topic that may be published to notify HomeKit that the target alarm state has been changed externally.", "condition": { "functionBody": "return ['securitySystem'].includes(model.type);" } }, "getCurrentState": { "type": "string", "description": "Topic used to notify mqttthing that an alarm state has been achieved. HomeKit will expect current state to end up matching target state.", "condition": { "functionBody": "return ['securitySystem'].includes(model.type);" } }, "setActiveInput": { "type": "string", "description": "Topic published by mqttthing to control 'active input source' (optional).", "condition": { "functionBody": "return ['television'].includes(model.type);" } }, "getActiveInput": { "type": "string", "description": "Topic used to notify mqttthing of 'active input source' (optional).", "condition": { "functionBody": "return ['television'].includes(model.type);" } }, "getWeatherCondition": { "type": "string", "description": "Topic used to notify mqttthing of 'weather condition' (optional, Eve-only)", "condition": { "functionBody": "return ['weatherStation'].includes(model.type);" } }, "getRain1h": { "type": "string", "title": "Get Rain 1H", "description": "Topic used to notify mqttthing of 'rain [mm] in last 1h' (optional, Eve-only)", "condition": { "functionBody": "return ['weatherStation'].includes(model.type);" } }, "getRain24h": { "type": "string", "title": "Get Rain 24H", "description": "Topic used to notify mqttthing of 'rain [mm] in last 24h' (optional, Eve-only)", "condition": { "functionBody": "return ['weatherStation'].includes(model.type);" } }, "getUVIndex": { "type": "string", "title": "Get UV Index", "description": "Topic used to notify mqttthing of 'UV index' (optional, Eve-only)", "condition": { "functionBody": "return ['weatherStation'].includes(model.type);" } }, "getVisibility": { "type": "string", "description": "Topic used to notify mqttthing of 'visibility [km]' (optional, Eve-only)", "condition": { "functionBody": "return ['weatherStation'].includes(model.type);" } }, "getWindDirection": { "type": "string", "description": "Topic used to notify mqttthing of 'wind direction' (optional, Eve-only)", "condition": { "functionBody": "return ['weatherStation'].includes(model.type);" } }, "getWindSpeed": { "type": "string", "description": "Topic used to notify mqttthing of 'wind speed [km/h]' (optional, Eve-only)", "condition": { "functionBody": "return ['weatherStation'].includes(model.type);" } }, "getmaxWind": { "type": "string", "description": "Topic used to notify mqttthing of 'wind speed [km/h]' (optional, Eve-only)", "condition": { "functionBody": "return ['weatherStation'].includes(model.type);" } }, "getDewPoint": { "type": "string", "description": "Topic used to notify mqttthing of 'DewPoint' (optional, Eve-only)", "condition": { "functionBody": "return ['weatherStation'].includes(model.type);" } }, "getActive": { "type": "string", "description": "Topic used to notify mqttthing of 'active'", "condition": { "functionBody": "return ['airPurifier','fanv2','faucet','heaterCooler','humidifierDehumidifier','irrigationSystem','valve','cameraEventRecordingManagement','television','televisionSpeaker','targetControl'].includes(model.type);" } }, "setActive": { "type": "string", "description": "Topic published by mqttthing to control 'active' state", "condition": { "functionBody": "return ['airPurifier','fanv2','faucet','heaterCooler','humidifierDehumidifier','irrigationSystem','valve','cameraEventRecordingManagement','television','televisionSpeaker','targetControl'].includes(model.type);" } }, "getAirQuality": { "type": "string", "description": "Topic used to notify mqttthing of 'air quality'", "condition": { "functionBody": "return ['airQualitySensor'].includes(model.type);" } }, "getAirQualityPPM": { "type": "string", "description": "Topic used to notify mqttthing of 'air quality voc in ppm' (Eve-only)", "condition": { "functionBody": "return ['airQualitySensor'].includes(model.type);" } }, "setDuration": { "type": "string", "description": "Topic published by mqttthing to control 'default duration (seconds)' (optional, with external timer)", "condition": { "functionBody": "return ['valve'].includes(model.type);" } }, "getDuration": { "type": "string", "description": "Topic used to notify mqttthing of 'default duration (seconds)' (optional, with external timer)", "condition": { "functionBody": "return ['valve'].includes(model.type);" } }, "getBatteryLevel": { "type": "string", "description": "Topic used to notify mqttthing of 'battery level'", "condition": { "functionBody": "return ['airPressureSensor','airPressureSensor','airQualitySensor','batteryService','carbonDioxideSensor','carbonMonoxideSensor','contactSensor','humiditySensor','leakSensor','lightSensor','motionSensor','occupancySensor','smokeSensor','temperatureSensor','valve','weatherStation'].includes(model.type);" } }, "getCarbonDioxideDetected": { "type": "string", "description": "Topic used to notify mqttthing of 'carbon dioxide detected'", "condition": { "functionBody": "return ['carbonDioxideSensor'].includes(model.type);" } }, "getCarbonDioxideLevel": { "type": "string", "description": "Topic used to notify mqttthing of 'carbon dioxide level'", "condition": { "functionBody": "return ['airQualitySensor','carbonDioxideSensor'].includes(model.type);" } }, "getCarbonDioxidePeakLevel": { "type": "string", "description": "Topic used to notify mqttthing of 'carbon dioxide peak level'", "condition": { "functionBody": "return ['carbonDioxideSensor'].includes(model.type);" } }, "getCarbonMonoxideDetected": { "type": "string", "description": "Topic used to notify mqttthing of 'carbon monoxide detected'", "condition": { "functionBody": "return ['carbonMonoxideSensor'].includes(model.type);" } }, "getCarbonMonoxideLevel": { "type": "string", "description": "Topic used to notify mqttthing of 'carbon monoxide level'", "condition": { "functionBody": "return ['airQualitySensor','carbonMonoxideSensor'].includes(model.type);" } }, "getCarbonMonoxidePeakLevel": { "type": "string", "description": "Topic used to notify mqttthing of 'carbon monoxide peak level'", "condition": { "functionBody": "return ['carbonMonoxideSensor'].includes(model.type);" } }, "getChargingState": { "type": "string", "description": "Topic used to notify mqttthing of 'charging state'", "condition": { "functionBody": "return ['airPressureSensor','airPressureSensor','airQualitySensor','batteryService','carbonDioxideSensor','carbonMonoxideSensor','contactSensor','humiditySensor','leakSensor','lightSensor','motionSensor','occupancySensor','smokeSensor','temperatureSensor','valve','weatherStation'].includes(model.type);" } }, "getContactSensorState": { "type": "string", "description": "Topic used to notify mqttthing of 'contact sensor state'", "condition": { "functionBody": "return ['contactSensor'].includes(model.type);" } }, "getCoolingThresholdTemperature": { "type": "string", "description": "Topic used to notify mqttthing of 'cooling threshold temperature'", "condition": { "functionBody": "return ['heaterCooler','thermostat'].includes(model.type);" } }, "setCoolingThresholdTemperature": { "type": "string", "description": "Topic published by mqttthing to control 'cooling threshold temperature'", "condition": { "functionBody": "return ['heaterCooler','thermostat'].includes(model.type);" } }, "getCurrentAmbientLightLevel": { "type": "string", "description": "Topic used to notify mqttthing of 'current ambient light level'", "condition": { "functionBody": "return ['lightSensor','weatherStation'].includes(model.type);" } }, "getCurrentDoorState": { "type": "string", "description": "Topic used to notify mqttthing of 'current door state' (from 'door current values'). Use either 'current door state' or 'door moving'.", "condition": { "functionBody": "return ['garageDoorOpener','lockManagement'].includes(model.type);" } }, "getDoorMoving": { "type": "string", "description": "Topic used to notify mqttthing whether or not the door is moving (as a simpler alternative to getCurrentDoorState). Use either 'current door state' or 'door moving'.", "condition": { "functionBody": "return ['garageDoorOpener'].includes(model.type);" } }, "getCurrentAirPurifierState": { "type": "string", "description": "Topic used to notify mqttthing of 'current air purifier state'", "condition": { "functionBody": "return ['airPurifier'].includes(model.type);" } }, "getCurrentFanState": { "type": "string", "description": "Topic used to notify mqttthing of 'current fan state'", "condition": { "functionBody": "return ['fanv2'].includes(model.type);" } }, "getCurrentHeaterCoolerState": { "type": "string", "description": "Topic used to notify mqttthing of 'current heater cooler state'", "condition": { "functionBody": "return ['heaterCooler'].includes(model.type);" } }, "getCurrentHeatingCoolingState": { "type": "string", "description": "Topic used to notify mqttthing of 'current heating cooling state'", "condition": { "functionBody": "return ['thermostat'].includes(model.type);" } }, "getCurrentHorizontalTiltAngle": { "type": "string", "description": "Topic used to notify mqttthing of 'current horizontal tilt angle'", "condition": { "functionBody": "return ['windowCovering','cameraControl'].includes(model.type);" } }, "getCurrentPosition": { "type": "string", "description": "Topic used to notify mqttthing of 'current position'", "condition": { "functionBody": "return ['door','window','windowCovering'].includes(model.type);" } }, "getCurrentRelativeHumidity": { "type": "string", "description": "Topic used to notify mqttthing of 'current relative humidity'", "condition": { "functionBody": "return ['airQualitySensor','humidifierDehumidifier','humiditySensor','thermostat','weatherStation'].includes(model.type);" } }, "getCurrentTemperature": { "type": "string", "description": "Topic used to notify mqttthing of 'current temperature'", "condition": { "functionBody": "return ['airQualitySensor','heaterCooler','temperatureSensor','thermostat','weatherStation'].includes(model.type);" } }, "getCurrentVerticalTiltAngle": { "type": "string", "description": "Topic used to notify mqttthing of 'current vertical tilt angle'", "condition": { "functionBody": "return ['windowCovering','cameraControl'].includes(model.type);" } }, "getHeatingThresholdTemperature": { "type": "string", "description": "Topic used to notify mqttthing of 'heating threshold temperature'", "condition": { "functionBody": "return ['heaterCooler','thermostat'].includes(model.type);" } }, "setHeatingThresholdTemperature": { "type": "string", "description": "Topic published by mqttthing to control 'heating threshold temperature'", "condition": { "functionBody": "return ['heaterCooler','thermostat'].includes(model.type);" } }, "setHoldPosition": { "type": "string", "description": "Topic published by mqttthing to control 'hold position'", "condition": { "functionBody": "return ['door','window','windowCovering'].includes(model.type);" } }, "getInUse": { "type": "string", "description": "Topic used to notify mqttthing of 'in use' state", "condition": { "functionBody": "return ['outlet','irrigationSystem','valve'].includes(model.type);" } }, "getLeakDetected": { "type": "string", "description": "Topic used to notify mqttthing of 'leak detected'", "condition": { "functionBody": "return ['leakSensor'].includes(model.type);" } }, "getLockCurrentState": { "type": "string", "description": "Topic used to notify mqttthing of 'lock current state'", "condition": { "functionBody": "return ['garageDoorOpener','lockMechanism'].includes(model.type);" } }, "getLockTargetState": { "type": "string", "description": "Topic used to notify mqttthing of 'lock target state'", "condition": { "functionBody": "return ['garageDoorOpener','lockMechanism'].includes(model.type);" } }, "setLockTargetState": { "type": "string", "description": "Topic published by mqttthing to control 'lock target state'", "condition": { "functionBody": "return ['garageDoorOpener','lockMechanism'].includes(model.type);" } }, "getMotionDetected": { "type": "string", "description": "Topic used to notify mqttthing of 'motion detected' state", "condition": { "functionBody": "return ['doorbell','lockManagement','motionSensor'].includes(model.type);" } }, "getMute": { "type": "string", "description": "Topic used to notify mqttthing of 'mute'", "condition": { "functionBody": "return ['microphone','speaker','televisionSpeaker'].includes(model.type);" } }, "setMute": { "type": "string", "description": "Topic published by mqttthing to control 'mute' state", "condition": { "functionBody": "return ['microphone','speaker','televisionSpeaker'].includes(model.type);" } }, "getName": { "type": "string", "description": "Topic used to notify mqttthing of 'name' (optional, rarely-used)" }, "getNitrogenDioxideDensity": { "type": "string", "description": "Topic used to notify mqttthing of 'nitrogen dioxide density'", "condition": { "functionBody": "return ['airQualitySensor'].includes(model.type);" } }, "getObstructionDetected": { "type": "string", "description": "Topic used to notify mqttthing of 'obstruction detected'", "condition": { "functionBody": "return ['door','garageDoorOpener','window','windowCovering'].includes(model.type);" } }, "getOccupancyDetected": { "type": "string", "description": "Topic used to notify mqttthing of 'occupancy detected'", "condition": { "functionBody": "return ['occupancySensor'].includes(model.type);" } }, "getOn": { "type": "string", "description": "Topic used to notify mqttthing of on/off state", "condition": { "functionBody": "return ['fan','lightbulb','lightbulb-OnOff','lightbulb-RGB','lightbulb-RGBW','lightbulb-RGBWW','lightbulb-HSV','lightbulb-Dimmable','lightbulb-Colour','lightbulb-Colour','lightbulb-ColTemp','outlet','switch','cameraControl'].includes(model.type);" } }, "setOn": { "type": "string", "description": "Topic published by mqttthing to control on/off state", "condition": { "functionBody": "return ['fan','lightbulb','lightbulb-OnOff','lightbulb-RGB','lightbulb-RGBW','lightbulb-RGBWW','lightbulb-HSV','lightbulb-Dimmable','lightbulb-Colour','lightbulb-ColTemp','outlet','switch','cameraControl'].includes(model.type);" } }, "getHue": { "type": "string", "description": "Topic used to notify mqttthing of hue (range 0-360)", "condition": { "functionBody": "return ['lightbulb','lightbulb-Colour'].includes(model.type);" } }, "setHue": { "type": "string", "description": "Topic published by mqttthing to control hue (range 0-360)", "condition": { "functionBody": "return ['lightbulb','lightbulb-Colour'].includes(model.type);" } }, "getSaturation": { "type": "string", "description": "Topic used to notify mqttthing of saturation (range 0-100)", "condition": { "functionBody": "return ['lightbulb','lightbulb-Colour'].includes(model.type);" } }, "setSaturation": { "type": "string", "description": "Topic published by mqttthing to control saturation (range 0-100)", "condition": { "functionBody": "return ['lightbulb','lightbulb-Colour'].includes(model.type);" } }, "getBrightness": { "type": "string", "description": "Topic used to notify mqttthing of brightness (range 0-100)", "condition": { "functionBody": "return ['doorbell','lightbulb','lightbulb-Dimmable','lightbulb-Colour','lightbulb-ColTemp'].includes(model.type);" } }, "setBrightness": { "type": "string", "description": "Topic published by mqttthing to control brightness (range 0-100)", "condition": { "functionBody": "return ['doorbell','lightbulb','lightbulb-Dimmable','lightbulb-Colour','lightbulb-ColTemp'].includes(model.type);" } }, "getColorTemperature": { "type": "string", "description": "Topic used to notify mqttthing of colour temperature (range 140-500)", "condition": { "functionBody": "return ['lightbulb','lightbulb-ColTemp','lightbulb-Colour'].includes(model.type);" } }, "setColorTemperature": { "type": "string", "description": "Topic published by mqttthing to control colour temperature (range 140-500)", "condition": { "functionBody": "return ['lightbulb','lightbulb-ColTemp','lightbulb-Colour'].includes(model.type);" } }, "getOzoneDensity": { "type": "string", "description": "Topic used to notify mqttthing of 'ozone density'", "condition": { "functionBody": "return ['airQualitySensor'].includes(model.type);" } }, "getPM10Density": { "type": "string", "title": "Get PM10 Density", "description": "Topic used to notify mqttthing of 'PM10 Density'", "condition": { "functionBody": "return ['airQualitySensor'].includes(model.type);" } }, "getPM2_5Density": { "type": "string", "title": "Get PM2.5 Density", "description": "Topic used to notify mqttthing of 'PM2.5 Density'", "condition": { "functionBody": "return ['airQualitySensor'].includes(model.type);" } }, "getPositionState": { "type": "string", "description": "Topic used to notify mqttthing of 'position state'", "condition": { "functionBody": "return ['door','window','windowCovering'].includes(model.type);" } }, "getRemainingDuration": { "type": "string", "description": "Topic used to notify mqttthing of 'remaining duration'", "condition": { "functionBody": "return ['irrigationSystem','valve'].includes(model.type);" } }, "getRotationDirection": { "type": "string", "description": "Topic used to notify mqttthing of 'rotation direction'", "condition": { "functionBody": "return ['fan','fanv2'].includes(model.type);" } }, "setRotationDirection": { "type": "string", "description": "Topic published by mqttthing to control 'rotation direction'", "condition": { "functionBody": "return ['fan','fanv2'].includes(model.type);" } }, "getRotationSpeed": { "type": "string", "description": "Topic used to notify mqttthing of 'rotation speed'", "condition": { "functionBody": "return ['airPurifier','fan','fanv2','heaterCooler','humidifierDehumidifier'].includes(model.type);" } }, "setRotationSpeed": { "type": "st