UNPKG

homebridge-tasmota-control

Version:
1,351 lines (1,350 loc) 62.2 kB
{ "pluginAlias": "tasmotaControl", "pluginType": "platform", "singular": true, "fixArrays": true, "strictValidation": true, "headerDisplay": "This plugin works with ESP devices flashed with Tasmota Firmware. Devices are exposed to HomeKit as separate accessories and each needs to be manually paired.", "footerDisplay": "For documentation please see [GitHub repository](https://github.com/grzegorz914/homebridge-tasmota-control).", "schema": { "type": "object", "properties": { "name": { "title": "Platform", "type": "string", "default": "Tasmota Control" }, "devices": { "title": "Devices", "type": "array", "items": { "type": "object", "properties": { "name": { "title": "Name", "type": "string", "placeholder": "socket" }, "host": { "title": "IP/Hostname", "type": "string", "placeholder": "192.168.1.5", "format": "hostname" }, "auth": { "title": "Authorization", "type": "boolean", "default": false }, "user": { "title": "User", "type": "string", "placeholder": "username", "condition": { "functionBody": "return model.devices[arrayIndices].auth === true;" } }, "passwd": { "title": "Password", "type": "string", "placeholder": "password", "format": "password", "condition": { "functionBody": "return model.devices[arrayIndices].auth === true;" } }, "disableAccessory": { "title": "Disable Accessory", "type": "boolean", "default": false, "description": "Here You can disable this accessory." }, "miElHvac": { "title": "RESTFul", "type": "object", "properties": { "heatDryFanMode": { "title": "Heat", "type": "integer", "minimum": 0, "maximum": 3, "anyOf": [ { "title": "Heat", "enum": [ 1 ] }, { "title": "Dry", "enum": [ 2 ] }, { "title": "Fan", "enum": [ 3 ] } ], "description": "Select the operating mode for Heat, if this mode is not supported, it will be disabled." }, "coolDryFanMode": { "title": "Cool", "type": "integer", "minimum": 0, "maximum": 3, "anyOf": [ { "title": "Cool", "enum": [ 1 ] }, { "title": "Dry", "enum": [ 2 ] }, { "title": "Fan", "enum": [ 3 ] } ], "description": "Select the operating mode for Cool, if this mode is not supported, it will be disabled." }, "autoDryFanMode": { "title": "Auto", "type": "integer", "minimum": 0, "maximum": 3, "anyOf": [ { "title": "Auto", "enum": [ 1 ] }, { "title": "Dry", "enum": [ 2 ] }, { "title": "Fan", "enum": [ 3 ] } ], "description": "Select the operating mode for Auto, if this mode is not supported, it will be disabled." }, "remoteTemperatureSensor": { "title": "External Sensor", "type": "object", "properties": { "enable": { "title": "Activate", "type": "boolean", "default": false, "description": "This enable external remote sensor for A.C. device." }, "path": { "title": "Path", "type": "string", "format": "hostname", "placeholder": "http://192.168.1.1/tempsensor", "description": "Here set the path to the external temperature sensor.", "condition": { "functionBody": "return model.devices[arrayIndices].miElHvac.remoteTemperatureSensor.enable === true;" } }, "refreshInterval": { "title": "Refresh Interval", "type": "number", "minimum": 1.0, "maximum": 600, "multipleOf": 0.5, "description": "Here set the sensor data refresh time in (sec).", "condition": { "functionBody": "return model.devices[arrayIndices].miElHvac.remoteTemperatureSensor.enable === true;" } }, "auth": { "title": "Authorization", "type": "boolean", "default": false, "condition": { "functionBody": "return model.devices[arrayIndices].miElHvac.remoteTemperatureSensor.enable === true;" } }, "user": { "title": "User", "type": "string", "placeholder": "username", "condition": { "functionBody": "return model.devices[arrayIndices].miElHvac.remoteTemperatureSensor.enable === true && model.devices[arrayIndices].miElHvac.remoteTemperatureSensor.auth === true;" } }, "passwd": { "title": "Password", "type": "string", "placeholder": "password", "format": "password", "condition": { "functionBody": "return model.devices[arrayIndices].miElHvac.remoteTemperatureSensor.enable === true && model.devices[arrayIndices].miElHvac.remoteTemperatureSensor.auth === true;" } } }, "allOf": [ { "if": { "required": [ "enable" ], "properties": { "enable": { "const": true } } }, "then": { "required": [ "path", "refreshInterval" ] } }, { "if": { "required": [ "auth" ], "properties": { "auth": { "const": true } } }, "then": { "required": [ "user", "passwd" ] } } ] }, "presets": { "title": "Presets", "type": "array", "items": { "type": "object", "properties": { "displayType": { "title": "Type", "type": "integer", "minimum": 0, "maximum": 5, "anyOf": [ { "title": "Disabled", "enum": [ 0 ] }, { "title": "Outlet", "enum": [ 1 ] }, { "title": "Switch", "enum": [ 2 ] }, { "title": "Motion Sensor", "enum": [ 3 ] }, { "title": "Occupancy Sensor", "enum": [ 4 ] }, { "title": "Contact Sensor", "enum": [ 5 ] } ], "description": "Select the characteristic type to be displayed in HomeKit app." }, "name": { "title": "Name", "type": "string", "placeholder": "Preset name", "description": "Your own name displayed in Homebridge/HomeKit app." }, "mode": { "title": "Operation Mode", "type": "string", "anyOf": [ { "title": "HEAT", "enum": [ "heat" ] }, { "title": "DRY", "enum": [ "dry" ] }, { "title": "COOL", "enum": [ "cool" ] }, { "title": "FAN", "enum": [ "fan" ] }, { "title": "AUTO", "enum": [ "auto" ] } ], "description": "Select the operation mode.", "condition": { "functionBody": "return model.devices[arrayIndices[0]].miElHvac.presets[arrayIndices[1]].displayType > 0;" } }, "setTemp": { "title": "Target Temperature", "type": "number", "minimum": 10, "maximum": 31, "multipleOf": 0.5, "description": "Here set the target temperature.", "condition": { "functionBody": "return model.devices[arrayIndices[0]].miElHvac.presets[arrayIndices[1]].displayType > 0 && (model.devices[arrayIndices[0]].miElHvac.presets[arrayIndices[1]].mode === heat || model.devices[arrayIndices[0]].miElHvac.presets[arrayIndices[1]].mode === cool || model.devices[arrayIndices[0]].miElHvac.presets[arrayIndices[1]].mode === auto);" } }, "fanSpeed": { "title": "Fan Speed", "type": "string", "anyOf": [ { "title": "AUTO", "enum": [ "auto" ] }, { "title": "QUIET", "enum": [ "quiet" ] }, { "title": "1", "enum": [ "1" ] }, { "title": "2", "enum": [ "2" ] }, { "title": "3", "enum": [ "3" ] }, { "title": "4", "enum": [ "4" ] } ], "description": "Select the fan speed.", "condition": { "functionBody": "return model.devices[arrayIndices[0]].miElHvac.presets[arrayIndices[1]].displayType > 0;" } }, "swingV": { "title": "VANE Vertical Direction", "type": "string", "anyOf": [ { "title": "AUTO", "enum": [ "auto" ] }, { "title": "UP", "enum": [ "up" ] }, { "title": "UP MIDDLE", "enum": [ "up_middle" ] }, { "title": "CENTER", "enum": [ "center" ] }, { "title": "DOWN MIDDLE", "enum": [ "down_middle" ] }, { "title": "DOWN", "enum": [ "down" ] }, { "title": "SWING", "enum": [ "swing" ] } ], "description": "Select the vane vertical direction.", "condition": { "functionBody": "return model.devices[arrayIndices[0]].miElHvac.presets[arrayIndices[1]].displayType > 0;" } }, "swingH": { "title": "VANE Horizontal Direction", "type": "string", "anyOf": [ { "title": "AIR DIRECTION", "enum": [ "airdirection" ] }, { "title": "LEFT", "enum": [ "left" ] }, { "title": "LEFT MIDDLE", "enum": [ "left_middle" ] }, { "title": "LEFT CENTER", "enum": [ "left_center" ] }, { "title": "CENTER", "enum": [ "center" ] }, { "title": "RIGHT CENTER", "enum": [ "right_center" ] }, { "title": "RIGHT MIDDLE", "enum": [ "right_middle" ] }, { "title": "RIGHT", "enum": [ "right" ] }, { "title": "SPLIT", "enum": [ "split" ] }, { "title": "SWING", "enum": [ "swing" ] } ], "description": "Select the vane horizontal direction.", "condition": { "functionBody": "return model.devices[arrayIndices[0]].miElHvac.presets[arrayIndices[1]].displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "description": "Enable/disable the accessory name as a prefix for button/sensor name.", "condition": { "functionBody": "return model.devices[arrayIndices[0]].miElHvac.presets[arrayIndices[1]].displayType > 0;" } } }, "allOf": [ { "if": { "required": [ "displayType" ], "properties": { "displayType": { "enum": [ 1, 2, 3, 4, 5 ] } } }, "then": { "required": [ "mode", "setTemp", "fanSpeed", "swingV", "swingH" ] } } ] } }, "buttons": { "title": "Button", "type": "array", "items": { "type": "object", "properties": { "displayType": { "title": "Type", "type": "integer", "minimum": 0, "maximum": 2, "anyOf": [ { "title": "Disabled", "enum": [ 0 ] }, { "title": "Outlet", "enum": [ 1 ] }, { "title": "Switch", "enum": [ 2 ] } ], "description": "Select the characteristic type to be displayed in HomeKit app." }, "name": { "title": "Name", "type": "string", "placeholder": "Button name", "description": "Your own name displayed in Homebridge/HomeKit app." }, "mode": { "title": "Mode", "type": "integer", "minimum": 0, "maximum": 63, "description": "Here select function.", "anyOf": [ { "title": "POWER", "enum": [ 0 ] }, { "title": "MODE HEAT", "enum": [ 1 ] }, { "title": "MODE DRY", "enum": [ 2 ] }, { "title": "MODE COOL", "enum": [ 3 ] }, { "title": "MODE FAN", "enum": [ 4 ] }, { "title": "MODE AUTO", "enum": [ 5 ] }, { "title": "VANE H LEFT", "enum": [ 10 ] }, { "title": "VANE H LEFT MIDDLE", "enum": [ 11 ] }, { "title": "VANE H LEFT CENTER", "enum": [ 12 ] }, { "title": "VANE H CENTER", "enum": [ 13 ] }, { "title": "VANE H RIGHT CENTER", "enum": [ 14 ] }, { "title": "VANE H RIGHT MIDDLE", "enum": [ 15 ] }, { "title": "VANE H RIGHT", "enum": [ 16 ] }, { "title": "VANE H SPLIT", "enum": [ 17 ] }, { "title": "VANE H SWING", "enum": [ 18 ] }, { "title": "VANE V AUTO", "enum": [ 20 ] }, { "title": "VANE V UP", "enum": [ 21 ] }, { "title": "VANE V UP MIDDLE", "enum": [ 22 ] }, { "title": "VANE V CENTER", "enum": [ 23 ] }, { "title": "VANE V DOWN MIDDLE", "enum": [ 24 ] }, { "title": "VANE V DOWN", "enum": [ 25 ] }, { "title": "VANE V SWING", "enum": [ 26 ] }, { "title": "FAN AUTO", "enum": [ 30 ] }, { "title": "FAN QUIET", "enum": [ 31 ] }, { "title": "FAN SPEED 1", "enum": [ 32 ] }, { "title": "FAN SPEED 2", "enum": [ 33 ] }, { "title": "FAN SPEED 3", "enum": [ 34 ] }, { "title": "FAN SPEED 4", "enum": [ 35 ] }, { "title": "AIR DIRECTION INDIRECT", "enum": [ 40 ] }, { "title": "AIR DIRECTION DIRECT", "enum": [ 41 ] }, { "title": "AIR DIRECTION EVEN", "enum": [ 42 ] }, { "title": "LOCK CONTROL All", "enum": [ 50 ] }, { "title": "LOCK CONTROL POWER", "enum": [ 51 ] }, { "title": "LOCK CONTROL MODE", "enum": [ 52 ] }, { "title": "LOCK CONTROL TEMPERATURE", "enum": [ 53 ] }, { "title": "PURIFY", "enum": [ 60 ] }, { "title": "ECONO COOL", "enum": [ 61 ] }, { "title": "POWER FULL", "enum": [ 62 ] }, { "title": "NIGHT MODE", "enum": [ 63 ] } ], "condition": { "functionBody": "return model.devices[arrayIndices[0]].miElHvac.buttons[arrayIndices[1]].displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "description": "Enable/disable the accessory name as a prefix for button name.", "condition": { "functionBody": "return model.devices[arrayIndices[0]].miElHvac.buttons[arrayIndices[1]].displayType > 0;" } } }, "allOf": [ { "if": { "required": [ "displayType" ], "properties": { "displayType": { "enum": [ 1, 2 ] } } }, "then": { "required": [ "mode" ] } } ] } }, "sensors": { "title": "Sensor", "type": "array", "items": { "type": "object", "properties": { "displayType": { "title": "Type", "type": "integer", "minimum": 0, "maximum": 3, "anyOf": [ { "title": "Disabled", "enum": [ 0 ] }, { "title": "Motion Sensor", "enum": [ 1 ] }, { "title": "Occupancy Sensor", "enum": [ 2 ] }, { "title": "Contact Sensor", "enum": [ 3 ] } ], "description": "Select the characteristic type to be displayed in HomeKit app." }, "name": { "title": "Name", "type": "string", "placeholder": "Sensor name", "description": "Your own name displayed in Homebridge/HomeKit app." }, "mode": { "title": "Mode", "type": "integer", "minimum": 0, "maximum": 94, "description": "Here select function.", "anyOf": [ { "title": "POWER", "enum": [ 0 ] }, { "title": "MODE HEAT", "enum": [ 1 ] }, { "title": "MODE DRY", "enum": [ 2 ] }, { "title": "MODE COOL", "enum": [ 3 ] }, { "title": "MODE FAN", "enum": [ 4 ] }, { "title": "MODE AUTO", "enum": [ 5 ] }, { "title": "PURIFY", "enum": [ 6 ] }, { "title": "VANE H LEFT", "enum": [ 10 ] }, { "title": "VANE H LEFT MIDDLE", "enum": [ 11 ] }, { "title": "VANE H LEFT CENTER", "enum": [ 12 ] }, { "title": "VANE H CENTER", "enum": [ 13 ] }, { "title": "VANE H RIGHT CENTER", "enum": [ 14 ] }, { "title": "VANE H RIGHT MIDDLE", "enum": [ 15 ] }, { "title": "VANE H RIGHT", "enum": [ 16 ] }, { "title": "VANE H SPLIT", "enum": [ 17 ] }, { "title": "VANE H SWING", "enum": [ 18 ] }, { "title": "VANE H AIR DIRECTION", "enum": [ 19 ] }, { "title": "VANE V AUTO", "enum": [ 20 ] }, { "title": "VANE V UP", "enum": [ 21 ] }, { "title": "VANE V UP MIDDLE", "enum": [ 22 ] }, { "title": "VANE V CENTER", "enum": [ 23 ] }, { "title": "VANE V DOWN MIDDLE", "enum": [ 24 ] }, { "title": "VANE V DOWN", "enum": [ 25 ] }, { "title": "VANE V SWING", "enum": [ 26 ] }, { "title": "FAN AUTO", "enum": [ 30 ] }, { "title": "FAN QUIET", "enum": [ 31 ] }, { "title": "FAN SPEED 1", "enum": [ 32 ] }, { "title": "FAN SPEED 2", "enum": [ 33 ] }, { "title": "FAN SPEED 3", "enum": [ 34 ] }, { "title": "FAN SPEED 4", "enum": [ 35 ] }, { "title": "AIR DIRECTION EVEN", "enum": [ 40 ] }, { "title": "AIR DIRECTION INDIRECT", "enum": [ 41 ] }, { "title": "AIR DIRECTION DIRECT", "enum": [ 42 ] }, { "title": "LOCK CONTROL All", "enum": [ 50 ] }, { "title": "LOCK CONTROL POWER", "enum": [ 51 ] }, { "title": "LOCK CONTROL MODE", "enum": [ 52 ] }, { "title": "LOCK CONTROL TEMPERATURE", "enum": [ 53 ] }, { "title": "REMOTE TEMPERATURE STATE", "enum": [ 60 ] }, { "title": "OPERATION STATUS NORMAL", "enum": [ 70 ] }, { "title": "OPERATION STATUS FILTER", "enum": [ 71 ] }, { "title": "OPERATION STATUS DEFROST", "enum": [ 72 ] }, { "title": "OPERATION STATUS STANDBY", "enum": [ 73 ] }, { "title": "OPERATION STATUS PREHEAT", "enum": [ 74 ] }, { "title": "FAN STATUS OFF", "enum": [ 80 ] }, { "title": "FAN STATUS QUIET", "enum": [ 81 ] }, { "title": "FAN STATUS 1", "enum": [ 82 ] }, { "title": "FAN STATUS 2", "enum": [ 83 ] }, { "title": "FAN STATUS 3", "enum": [ 84 ] }, { "title": "FAN STATUS 4", "enum": [ 85 ] }, { "title": "FAN STATUS 5", "enum": [ 86 ] }, { "title": "MODE STATUS AUTO OFF", "enum": [ 90 ] }, { "title": "MODE STATUS AUTO FAN", "enum": [ 91 ] }, { "title": "MODE STATUS AUTO HEAT", "enum": [ 92 ] }, { "title": "MODE STATUS AUTO COOL", "enum": [ 93 ] }, { "title": "MODE STATUS AUTO LEADER", "enum": [ 94 ] } ], "condition": { "functionBody": "return model.devices[arrayIndices[0]].miElHvac.sensors[arrayIndices[1]].displayType > 0;" } }, "namePrefix": { "title": "Prefix", "type": "boolean", "description": "Enable/disable the accessory name as a prefix for sensor name.", "condition": { "functionBody": "return model.devices[arrayIndices[0]].miElHvac.sensors[arrayIndices[1]].displayType > 0;" } } }, "allOf": [ { "if": { "required": [ "displayType" ], "properties": { "displayType": { "enum": [ 1, 2, 3 ] } } }, "then": { "required": [ "mode" ] } } ] } }, "frostProtect": { "title": "Frost Protect", "type": "object", "properties": { "enable": { "title": "Activate", "type": "boolean", "default": false, "description": "This enable frost protect function." }, "lowTemp": { "title": "Low Temperature", "type": "number", "minimum": 4, "maximum": 14, "multipleOf": 0.5, "description": "Here set the low temperature at which device start to frost protect.", "condition": { "functionBody": "return model.devices[arrayIndices].miElHvac.frostProtect.enable === true;" } }, "highTemp": { "title": "High Temperature", "type": "number", "minimum": 6, "maximum": 16, "multipleOf": 0.5, "description": "Here set the high temperature at which device will be disable.", "condition": { "functionBody": "return model.devices[arrayIndices].miElHvac.frostProtect.enable === true;" } } }, "allOf": [ { "if": { "required": [ "enable" ], "properties": { "enable": { "const": true } } }, "then": { "required": [ "lowTemp", "highTemp" ] } } ]