homebridge-tasmota-control
Version:
Homebridge plugin to control Tasmota flashed devices.
1,356 lines (1,355 loc) • 55.9 kB
JSON
{
"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": {
"devices": {
"title": "Devices",
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string",
"placeholder": "socket",
"required": true
},
"host": {
"title": "IP/Hostname",
"type": "string",
"placeholder": "192.168.1.5",
"format": "hostname",
"required": true
},
"auth": {
"title": "Authorization",
"type": "boolean",
"default": false,
"required": false
},
"user": {
"title": "User",
"type": "string",
"placeholder": "username",
"condition": {
"functionBody": "return model.devices[arrayIndices].auth === true;"
},
"required": false
},
"passwd": {
"title": "Password",
"type": "string",
"placeholder": "password",
"format": "password",
"condition": {
"functionBody": "return model.devices[arrayIndices].auth === true;"
},
"required": false
},
"disableAccessory": {
"title": "Disable Accessory",
"type": "boolean",
"default": false,
"description": "Here You can disable this accessory.",
"required": false
},
"miElHvac": {
"title": "RESTFul",
"type": "object",
"properties": {
"heatDryFanMode": {
"title": "Heat",
"type": "integer",
"minimum": 0,
"maximum": 3,
"default": 1,
"oneOf": [
{
"title": "None/Disabled",
"enum": [
0
]
},
{
"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.",
"required": true
},
"coolDryFanMode": {
"title": "Cool",
"type": "integer",
"minimum": 0,
"maximum": 3,
"default": 1,
"oneOf": [
{
"title": "None/Disabled",
"enum": [
0
]
},
{
"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.",
"required": true
},
"autoDryFanMode": {
"title": "Auto",
"type": "integer",
"minimum": 0,
"maximum": 3,
"default": 1,
"oneOf": [
{
"title": "None/Disabled",
"enum": [
0
]
},
{
"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.",
"required": true
},
"remoteTemperatureSensor": {
"title": "External Sensor",
"type": "object",
"properties": {
"enable": {
"title": "Activate",
"type": "boolean",
"default": false,
"description": "This enable external remote sensor for A.C. device.",
"required": false
},
"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;"
},
"required": false
},
"refreshInterval": {
"title": "Refresh Interval",
"type": "number",
"minimum": 1.0,
"maximum": 600,
"multipleOf": 0.5,
"default": 5,
"description": "Here set the sensor data refresh time in (sec).",
"condition": {
"functionBody": "return model.devices[arrayIndices].miElHvac.remoteTemperatureSensor.enable === true;"
},
"required": false
},
"auth": {
"title": "Authorization",
"type": "boolean",
"default": false,
"condition": {
"functionBody": "return model.devices[arrayIndices].miElHvac.remoteTemperatureSensor.enable === true;"
},
"required": false
},
"user": {
"title": "User",
"type": "string",
"placeholder": "username",
"condition": {
"functionBody": "return model.devices[arrayIndices].miElHvac.remoteTemperatureSensor.enable === true && model.devices[arrayIndices].miElHvac.remoteTemperatureSensor.auth === true;"
},
"required": false
},
"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;"
},
"required": false
}
}
},
"presets": {
"title": "Presets",
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string",
"placeholder": "Preset name",
"description": "Your own name displayed in Homebridge/HomeKit app.",
"required": false
},
"mode": {
"title": "Operation Mode",
"type": "string",
"default": "heat",
"oneOf": [
{
"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.",
"required": false
},
"setTemp": {
"title": "Target Temperature",
"type": "number",
"minimum": 10,
"maximum": 31,
"multipleOf": 0.5,
"default": 20,
"description": "Here set the target temperature.",
"condition": {
"functionBody": "return model.devices[arrayIndices].miElHvac.presets[arrayIndices].mode === heat || return model.devices[arrayIndices].miElHvac.presets[arrayIndices].mode === cool || return model.devices[arrayIndices].miElHvac.presets[arrayIndices].mode === auto;"
},
"required": false
},
"fanSpeed": {
"title": "Fan Speed",
"type": "string",
"oneOf": [
{
"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.",
"required": false
},
"swingV": {
"title": "VANE Vertical Direction",
"type": "string",
"default": "auto",
"oneOf": [
{
"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.",
"required": false
},
"swingH": {
"title": "VANE Horizontal Direction",
"type": "string",
"default": "swing",
"oneOf": [
{
"title": "LEFT",
"enum": [
"left"
]
},
{
"title": "LEFT MIDDLE",
"enum": [
"left_middle"
]
},
{
"title": "CENTER",
"enum": [
"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.",
"required": false
},
"displayType": {
"title": "Type",
"type": "integer",
"minimum": 0,
"maximum": 5,
"default": 0,
"oneOf": [
{
"title": "None/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.",
"required": true
},
"namePrefix": {
"title": "Prefix",
"type": "boolean",
"default": false,
"description": "Enable/disable the accessory name as a prefix for button/sensor name.",
"required": false
}
}
}
},
"buttons": {
"title": "Button",
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string",
"placeholder": "Button name",
"description": "Your own name displayed in Homebridge/HomeKit app.",
"required": false
},
"mode": {
"title": "Mode",
"type": "integer",
"minimum": 0,
"maximum": 53,
"default": 0,
"description": "Here select function.",
"oneOf": [
{
"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": "MODE PURIFY (not implemented)",
"enum": [
6
]
},
{
"title": "VANE H AUTO",
"enum": [
10
]
},
{
"title": "VANE H LEFT",
"enum": [
11
]
},
{
"title": "VANE H LEFT MIDDLE",
"enum": [
12
]
},
{
"title": "VANE H CENTER",
"enum": [
13
]
},
{
"title": "VANE H RIGHT MIDDLE",
"enum": [
14
]
},
{
"title": "VANE H RIGHT",
"enum": [
15
]
},
{
"title": "VANE H SPLIT",
"enum": [
16
]
},
{
"title": "VANE H SWING",
"enum": [
17
]
},
{
"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 (only as sensor now)",
"enum": [
40
]
},
{
"title": "AIR DIRECTION INDIRECT (only as sensor now)",
"enum": [
41
]
},
{
"title": "AIR DIRECTION DIRECT (only as sensor now)",
"enum": [
42
]
},
{
"title": "LOCK CONTROL All (only as sensor now)",
"enum": [
50
]
},
{
"title": "LOCK CONTROL POWER (only as sensor now)",
"enum": [
51
]
},
{
"title": "LOCK CONTROL MODE (only as sensor now)",
"enum": [
52
]
},
{
"title": "LOCK CONTROL TEMPERATURE (only as sensor now)",
"enum": [
53
]
}
],
"required": false
},
"displayType": {
"title": "Type",
"type": "integer",
"minimum": 0,
"maximum": 2,
"default": 0,
"oneOf": [
{
"title": "None/Disabled",
"enum": [
0
]
},
{
"title": "Outlet",
"enum": [
1
]
},
{
"title": "Switch",
"enum": [
2
]
}
],
"description": "Select the characteristic type to be displayed in HomeKit app.",
"required": true
},
"namePrefix": {
"title": "Prefix",
"type": "boolean",
"default": false,
"description": "Enable/disable the accessory name as a prefix for button name.",
"required": false
}
}
}
},
"sensors": {
"title": "Sensor",
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string",
"placeholder": "Sensor name",
"description": "Your own name displayed in Homebridge/HomeKit app.",
"required": false
},
"mode": {
"title": "Mode",
"type": "integer",
"minimum": 0,
"maximum": 94,
"default": 0,
"description": "Here select function.",
"oneOf": [
{
"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": "MODE PURIFY (not implemented)",
"enum": [
6
]
},
{
"title": "VANE H AUTO",
"enum": [
10
]
},
{
"title": "VANE H LEFT",
"enum": [
11
]
},
{
"title": "VANE H LEFT MIDDLE",
"enum": [
12
]
},
{
"title": "VANE H CENTER",
"enum": [
13
]
},
{
"title": "VANE H RIGHT MIDDLE",
"enum": [
14
]
},
{
"title": "VANE H RIGHT",
"enum": [
15
]
},
{
"title": "VANE H SPLIT",
"enum": [
16
]
},
{
"title": "VANE H SWING",
"enum": [
17
]
},
{
"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 STAGE NORMAL",
"enum": [
70
]
},
{
"title": "OPERATION STAGE DEFROST",
"enum": [
71
]
},
{
"title": "OPERATION STAGE PREHEAT",
"enum": [
72
]
},
{
"title": "OPERATION STAGE STANDBY",
"enum": [
73
]
},
{
"title": "FAN STAGE OFF",
"enum": [
80
]
},
{
"title": "FAN STAGE QUIET",
"enum": [
81
]
},
{
"title": "FAN STAGE 1",
"enum": [
82
]
},
{
"title": "FAN STAGE 2",
"enum": [
83
]
},
{
"title": "FAN STAGE 3",
"enum": [
84
]
},
{
"title": "FAN STAGE 4",
"enum": [
85
]
},
{
"title": "FAN STAGE 5",
"enum": [
86
]
},
{
"title": "MODE STAGE AUTO OFF",
"enum": [
90
]
},
{
"title": "MODE STAGE AUTO FAN",
"enum": [
91
]
},
{
"title": "MODE STAGE AUTO HEAT",
"enum": [
92
]
},
{
"title": "MODE STAGE AUTO COOL",
"enum": [
93
]
},
{
"title": "MODE STAGE AUTO LEADER",
"enum": [
94
]
}
],
"required": false
},
"displayType": {
"title": "Type",
"type": "integer",
"minimum": 0,
"maximum": 3,
"default": 0,
"oneOf": [
{
"title": "None/Disabled",
"enum": [
0
]
},
{
"title": "Motion Sensor",
"enum": [
1
]
},
{
"title": "Occupancy Sensor",
"enum": [
2
]
},
{
"title": "Contact Sensor",
"enum": [
3
]
}
],
"description": "Select the characteristic type to be displayed in HomeKit app.",
"required": true
},
"namePrefix": {
"title": "Prefix",
"type": "boolean",
"default": false,
"description": "Enable/disable the accessory name as a prefix for sensor name.",
"required": false
}
}
}
},
"frostProtect": {
"title": "Frost Protect",
"type": "object",
"properties": {
"enable": {
"title": "Activate",
"type": "boolean",
"default": false,
"description": "This enable frost protect function.",
"required": false
},
"lowTemp": {
"title": "Low Temperature",
"type": "number",
"minimum": 4,
"maximum": 14,
"multipleOf": 0.5,
"default": 14,
"description": "Here set the low temperature at which device start to frost protect.",
"condition": {
"functionBody": "return model.devices[arrayIndices].miElHvac.frostProtect.enable === true;"
},
"required": false
},
"highTemp": {
"title": "High Temperature",
"type": "number",
"minimum": 6,
"maximum": 16,
"multipleOf": 0.5,
"default": 16,
"description": "Here set the high temperature at which device will be disable.",
"condition": {
"functionBody": "return model.devices[arrayIndices].miElHvac.frostProtect.enable === true;"
},
"required": false
}
}
},
"temperatureSensor": {
"title": "Room",
"type": "boolean",
"default": false,
"description": "This enable extra room temperature sensor to use with automations in HomeKit app.",
"required": false
},
"temperatureSensorOutdoor": {
"title": "Outdoor",
"type": "boolean",
"default": false,
"description": "This enable extra outdoor temperature sensor to use with automations in HomeKit app.",
"required": false
}
}
},
"relaysDisplayType": {
"title": "Display Type",
"type": "integer",
"minimum": 0,
"maximum": 1,
"default": 0,
"oneOf": [
{
"title": "Outlet",
"enum": [
0
]
},
{
"title": "Switch",
"enum": [
1
]
}
],
"description": "Here select characteristic display type for relays which are exposed in the HomeKit app.",
"required": false
},
"relaysNamePrefix": {
"title": "Name Prefix",
"type": "boolean",
"default": false,
"description": "Here enable/disable the accessory name as a prefix for relays name.",
"required": false
},
"lightsNamePrefix": {
"title": "Name Prefix",
"type": "boolean",
"default": false,
"description": "Here enable/disable the accessory name as a prefix for light name.",
"required": false
},
"sensorsNamePrefix": {
"title": "Name Prefix",
"type": "boolean",
"default": false,
"description": "Here enable/disable the accessory name as a prefix for sensors name.",
"required": false
},
"loadNameFromDevice": {
"title": "Load Name From Device",
"type": "boolean",
"default": false,
"description": "If enabled, the accessory name will be loaded direct from device.",
"required": false
},
"refreshInterval": {
"title": "Refresh Interval",
"type": "number",
"minimum": 0.5,
"maximum": 60,
"multipleOf": 0.5,
"default": 5,
"description": "Here set the data refresh time in (sec).",
"required": true
},
"disableLogDeviceInfo": {
"title": "Disable Log Device Info",
"type": "boolean",
"default": false,
"description": "This disable logging device info by every connections device to the network.",
"required": false
},
"disableLogInfo": {
"title": "Disable Log Info",
"type": "boolean",
"default": false,
"required": false
},
"disableLogSuccess": {
"title": "Disable Log Success",
"type": "boolean",
"default": false,
"required": false
},
"disableLogWarn": {
"title": "Disable Log Warn",
"type": "boolean",
"default": false,
"required": false
},
"disableLogError": {
"title": "Disable Log Error",
"type": "boolean",
"default": false,
"required": false
},
"enableDebugMode": {
"title": "Enable Log Debug",
"type": "boolean",
"default": false,
"required": false
}
}
}
}
}
},
"layout": [
{
"key": "devices",
"type": "tabarray",
"title": "{{ value.name || 'device' }}",
"items": [
"devices[].name",
"devices[].host",
"devices[].disableAccessory",
{
"key": "devices[]",
"type": "section",
"title": "Advanced Settings",
"expandable": true,
"expanded": false,
"items": [
{
"key": "devices[]",
"type": "tabarray",
"title": "{{ value.title }}",
"items": [
{
"key": "devices[].miElHvac",
"title": "Mitsubishi AC",
"items": [
"devices[].miElHvac.heatDryFanMode",
"devices[].miElHvac.coolDryFanMode",
"devices[].miElHvac.autoDryFanMode",
{
"key": "devices[].miElHvac.remoteTemperatureSensor",
"type": "section",
"title": "Remote Temperature Sensor",
"expandable": true,
"expanded": false,
"items": [
"devices[].miElHvac.remoteTemperatureSensor.enable",
"devices[].miElHvac.remoteTemperatureSensor.path",
"devices[].miElHvac.remoteTemperatureSensor.refreshInterval",
"devices[].miElHvac.remoteTemperatureSensor.auth",