UNPKG

@homebridge-plugins/homebridge-tado

Version:
889 lines 36.3 kB
{ "pluginAlias": "TadoPlatform", "pluginType": "platform", "singular": true, "customUi": true, "footerDisplay": "For documentation please see [GitHub repository](https://github.com/homebridge-plugins/homebridge-tado)", "schema": { "type": "object", "properties": { "name": { "title": "Name", "type": "string", "default": "TadoPlatform", "description": "Name for the log." }, "debug": { "title": "Debug", "type": "boolean", "description": "Enables additional output in the log." }, "homes": { "title": " ", "type": "array", "items": { "type": "object", "properties": { "id": { "title": "Home ID", "description": "The id of your Home. Has to be the exact same id as in the web app of tado.", "type": "integer" }, "name": { "title": "Home Name", "description": "The name of your Home. Has to be the exact same name as in the web app of tado.", "type": "string", "required": true }, "username": { "title": "Username", "type": "string", "description": "The user name that you use for the app and the web app of tado.", "required": true }, "tadoApiUrl": { "title": "tado API URL", "type": "string", "description": "Optional: Use a custom tado API url (e.g. http://localhost:8080)." }, "skipAuth": { "title": "Skip Authentication", "type": "boolean", "description": "Optional: Skip authentication for tado API." }, "polling": { "title": "Polling", "description": "The polling interval in seconds (recommended value: 300).", "type": "integer", "default": 300, "minimum": 30 }, "temperatureUnit": { "title": "Temperature Unit", "description": "Temperature Unit for accessories in Apple Home exposed by this plugin.", "type": "string", "default": "CELSIUS", "oneOf": [ { "title": "Celsius", "enum": [ "CELSIUS" ] }, { "title": "Fahrenheit", "enum": [ "FAHRENHEIT" ] } ] }, "geolocation": { "title": "Location", "type": "object", "properties": { "longitude": { "title": "Longitude", "type": "string", "description": "Longitude coordinate of your home." }, "latitude": { "title": "Latitude", "type": "string", "description": "Latitude coordinate of your home." } } }, "presence": { "title": "Presence", "type": "object", "properties": { "anyone": { "title": "Anyone Sensor", "type": "boolean", "description": "Exposes Anyone Sensor to Apple Home." }, "accTypeAnyone": { "title": "Anyone Accessory Type", "type": "string", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].presence.anyone } catch(e){ return false }" }, "oneOf": [ { "title": "Occupancy", "enum": [ "OCCUPANCY" ] }, { "title": "Motion", "enum": [ "MOTION" ] } ], "description": "The accessory type for 'anyone' sensor." }, "user": { "title": "User", "type": "array", "items": { "type": "object", "properties": { "active": { "title": "Active", "type": "boolean", "description": "If enabled, a new motion/occupancy sensor for this user will be exposed to Apple Home." }, "name": { "title": "Name", "type": "string", "description": "Name of the user for the motion/occupancy sensor.", "required": true }, "accType": { "title": "Accessory Type", "type": "string", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].presence.user[arrayIndices[1]].active } catch(e){ return false }" }, "oneOf": [ { "title": "Occupancy", "enum": [ "OCCUPANCY" ] }, { "title": "Motion", "enum": [ "MOTION" ] } ], "description": "The accessory type of the device." } } } } } }, "weather": { "title": "Weather", "type": "object", "properties": { "temperatureSensor": { "title": "Temperature Sensor", "type": "boolean", "description": "If enabled, a temperature sensor for the weather will be exposed to Apple Home." }, "solarIntensity": { "title": "Solar Intensity", "type": "boolean", "description": "If enabled, a lightbulb accessory for the solar intensity will be exposed to Apple Home." }, "accTypeSolarIntensity": { "title": "Solar Intensity Accessory Type", "type": "string", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].weather.solarIntensity } catch(e){ return false }" }, "oneOf": [ { "title": "Lightbulb", "enum": [ "LIGHTBULB" ] }, { "title": "Sensor", "enum": [ "SENSOR" ] } ], "description": "The accessory type of the device." } } }, "extras": { "title": "Extras", "type": "object", "properties": { "centralSwitch": { "title": "Central Switch", "type": "boolean", "description": "If enabled, a switch will be exposed to Apple Home to enable/disable all thermostats/boiler at once." }, "runningInformation": { "title": "Heat Running Information", "type": "boolean", "description": "If enabled, the central switch will get custom characteristics to show a summary of the heat running in hours.", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].extras.centralSwitch } catch(e){ return false }" } }, "presenceLock": { "title": "Presence Lock", "type": "boolean", "description": "If enabled, a Home/Away switch will be exposed to Apple Home." }, "accTypePresenceLock": { "title": "Presence Lock Accessory Type", "type": "string", "oneOf": [ { "title": "Security System", "enum": [ "ALARM" ] }, { "title": "Switch", "enum": [ "SWITCH" ] } ], "description": "The accessory type of the presence lock." }, "boostSwitch": { "title": "Boost Switch", "type": "boolean", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].extras.centralSwitch } catch(e){ return false }" }, "description": "If enabled, a boost heat switch will be added to the central switch." }, "sheduleSwitch": { "title": "Shedule Switch", "type": "boolean", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].extras.centralSwitch } catch(e){ return false }" }, "description": "If enabled, a shedule heat switch will be added to the central switch." }, "turnoffSwitch": { "title": "Turn Off Switch", "type": "boolean", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].extras.centralSwitch } catch(e){ return false }" }, "description": "If enabled, a turn off heat switch will be added to the central switch." }, "dummySwitch": { "title": "Dummy Switch", "type": "boolean", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].extras.centralSwitch } catch(e){ return false }" }, "description": "If enabled, a dummy switch (for eg automation purposes) will be added to the central switch." }, "childLockSwitches": { "title": "Child Lock Switches", "type": "array", "items": { "type": "object", "properties": { "active": { "title": "Active", "type": "boolean", "description": "If enabled, a child lock switch for this device will be exposed to Apple Home." }, "name": { "title": "Name", "type": "string", "description": "Name for the Child Lock Switch.", "required": true }, "serialNumber": { "title": "Device Serial Number", "type": "string", "description": "Enter the serial number of the device from which you want to display a 'Child Lock Switch' in Apple Home. (only for devices with child lock support)", "required": true, "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].extras.childLockSwitches[arrayIndices[1]].active } catch(e){ return false }" } } } } } } }, "zones": { "title": "Zones", "type": "array", "items": { "type": "object", "properties": { "active": { "title": "Active", "type": "boolean", "description": "If enabled, a new thermostat/boiler switch will be exposed to Apple Home." }, "id": { "title": "ID", "type": "integer", "description": "Zone ID. Has to be the exact same id as in the web app of tado.", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].zones[arrayIndices[1]].active } catch(e){ return false }" } }, "name": { "title": "Name", "type": "string", "description": "Zone Name. Has to be the exact same name as in the web app of tado.", "required": true }, "delaySwitch": { "title": "Delay Switch Chracteristic", "type": "boolean", "description": "If enabled, additional delay switch characteristic for each zone will be within the accessory. If the delay switch is turned on, the thermostat/boiler will not change state until delay is turned off (timer adjustable within accessory). " }, "autoOffDelay": { "title": "Auto Off", "type": "boolean", "description": "If enabled, the delay switch will not affect the thermostats and it automatically turns off after the period has expired." }, "openWindowSensor": { "title": "Open Window Sensor", "type": "boolean", "description": "If enabled, additional window contact accessory for each zone will be exposed to Apple Home which triggers if tado detects an open window." }, "openWindowSwitch": { "title": "Open Window Switch", "type": "boolean", "description": "If enabled, additional window switch accessory for each zone will be exposed to Apple Home to trigger and enable/disable open window." }, "separateTemperature": { "title": "Separate Temperature Sensors", "type": "boolean", "description": "If enabled, the temperature sensor will be shown as extra accessory." }, "separateHumidity": { "title": "Separate Humidity Sensors", "type": "boolean", "description": "If enabled, the humidity sensor will be shown as extra accessory.", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].zones[arrayIndices[1]].type === 'HEATING' } catch(e){ return false }" } }, "minStep": { "title": "Temperature Step", "type": "number", "description": "Minimum step for temperature adjustment. (Default: 0.5, must be between 0 - 1)" }, "minValue": { "title": "Minimum Temperature", "type": "integer", "description": "Minimum adjustable temperature value (in celsius/fahrenheit). HEATING devices also this plugin, supports a minValue of 5° Celsius / 41° Fahrenheit by default. HOT WATER devices, also this plugin, supports a minValue of of 30° Celsius / 86° Fahrenheit by default. If your device has a different minValue, you can set it up here. (Incorrect minValue may cause problems!)" }, "maxValue": { "title": "Maximum Temperature", "type": "integer", "description": "Maximum adjustable temperature value (in celsius/fahrenheit). HEATING devices also this plugin, supports a maxValue of 25° Celsius / 77° Fahrenheit by default. HOT WATER devices, also this plugin, supports a maxValue of of 65° Celsius / 149° Fahrenheit by default. If your device has a different maxValue, you can set it up here. (Incorrect maxValue may cause problems!)" }, "mode": { "title": "Termination Mode", "type": "string", "required": true, "oneOf": [ { "title": "Auto", "enum": [ "AUTO" ] }, { "title": "Manual", "enum": [ "MANUAL" ] }, { "title": "Timer", "enum": [ "TIMER" ] }, { "title": "Custom", "enum": [ "CUSTOM" ] } ], "description": "Mode for the commands to be sent with. can be 'MANUAL' for manual control until ended by the user, 'AUTO' for manual control until next schedule change in tado° app, 'TIMER' for manual control until timer ends or 'CUSTOM' for a mixed use of MANUAL (off) and AUTO (on). (CUSTOM is only for HEATING types with easyMode enabled and HOT_WATER types with temperature support)." }, "modeTimer": { "title": "Timer", "description": "Timer for the manual mode in minutes.", "type": "integer", "minimum": 1, "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].zones[arrayIndices[1]].mode === 'TIMER' } catch(e){ return false }" } }, "easyMode": { "title": "Simple Target Mode", "type": "boolean", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].zones[arrayIndices[1]].type === 'HEATING' } catch(e){ return false }" }, "description": "If enabled, only 'ON | OFF' target modes are visible for the thermostat." }, "noBattery": { "title": "No Battery", "type": "boolean", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].zones[arrayIndices[1]].type === 'HEATING' } catch(e){ return false }" }, "description": "If enabled, the battery indicator will be removed from Apple Home." }, "type": { "title": "Type", "type": "string", "required": true, "oneOf": [ { "title": "Heating", "enum": [ "HEATING" ] }, { "title": "Hot Water", "enum": [ "HOT_WATER" ] }, { "title": "Air Conditioning", "enum": [ "AIR_CONDITIONING" ] } ], "description": "Zone Heating type." }, "boilerTempSupport": { "title": "Boiler (Hot Water) with temperature adjustment", "type": "boolean", "description": "Enable this if your can also adjust the temperature from your hot water." }, "accTypeBoiler": { "title": "Boiler (Hot Water) Accessory Type", "type": "string", "oneOf": [ { "title": "Faucet", "enum": [ "FAUCET" ] }, { "title": "Switch", "enum": [ "SWITCH" ] } ], "description": "Boiler accessory type." } } } }, "telegram": { "titel": "Telegram", "type": "object", "properties": { "active": { "title": "Active", "description": "Activates Telegram.", "type": "boolean", "required": true, "default": false }, "token": { "title": "Token", "type": "string", "description": "Telegram Bot Token.", "required": true }, "chatID": { "title": "Chat ID", "type": "string", "description": "Telegram Chat ID.", "required": true }, "messages": { "title": "Messages", "type": "object", "properties": { "presence": { "title": "Presence", "type": "object", "properties": { "user_in": { "title": "User Detected", "type": "string", "description": "Message if user detected. (Hint: @ will be replaced with accessory name)" }, "user_out": { "title": "User Not Detected", "type": "string", "description": "Message if user not detected anymore. (Hint: @ will be replaced with accessory name)" }, "anyone_in": { "title": "Anyone Detected", "type": "string", "description": "Message if anyone detected." }, "anyone_out": { "title": "Anyone Not Detected", "type": "string", "description": "Message if nobody detected." } } }, "openWindow": { "title": "Open Window", "type": "object", "properties": { "opened": { "title": "Window Opened", "type": "string", "description": "Message if window is opened. (Hint: @ will be replaced with accessory name)" }, "closed": { "title": "Window Closed", "type": "string", "description": "Message if window is closed. (Hint: @ will be replaced with accessory name)" } } } } } } } } } }, "disableHistoryService": { "title": "Disable History Service", "type": "boolean", "description": "Optional: Skip creation of history service." }, "preferSiriTemperature": { "title": "Prefer Siri Temperature Changes", "type": "boolean", "description": "Prefer temperature changes when the state auto is sent simultaneously with a temperature change. Default: false." } } }, "layout": [ "name", "debug", "disableHistoryService", "preferSiriTemperature", { "key": "homes", "type": "array", "orderable": false, "buttonText": "Add Home", "items": [ "homes[].name", "homes[].polling", "homes[].temperatureUnit", { "key": "homes[]", "title": "Authentication", "type": "section", "expandable": true, "expanded": false, "orderable": false, "items": [ "homes[].id", "homes[].tadoApiUrl", "homes[].skipAuth", "homes[].username" ] }, { "key": "homes[].zones", "type": "section", "title": "Zones", "expandable": true, "expanded": false, "orderable": false, "buttonText": "Add Zone", "items": [ { "key": "homes[].zones[]", "items": [ { "title": "Zone", "orderable": false, "items": [ "homes[].zones[].active", "homes[].zones[].name", "homes[].zones[].type", "homes[].zones[].mode", "homes[].zones[].modeTimer" ] }, { "title": "Options", "expandable": true, "expanded": false, "orderable": false, "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].zones[arrayIndices[1]].active } catch(e) { return false };" }, "items": [ "homes[].zones[].id", "homes[].zones[].easyMode", "homes[].zones[].noBattery", { "title": "Temperature", "orderable": false, "expandable": true, "expanded": false, "type": "section", "items": [ "homes[].zones[].minValue", "homes[].zones[].maxValue", "homes[].zones[].minStep" ] }, { "title": "Hot Water", "orderable": false, "expandable": true, "expanded": false, "type": "section", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].zones[arrayIndices[1]].type === 'HOT_WATER' } catch(e){ return false }" }, "items": [ "homes[].zones[].boilerTempSupport", "homes[].zones[].accTypeBoiler" ] }, { "title": "Open Window", "orderable": false, "expandable": true, "expanded": false, "type": "section", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].zones[arrayIndices[1]].type === 'HEATING' } catch(e){ return false }" }, "items": [ "homes[].zones[].openWindowSensor", "homes[].zones[].openWindowSwitch" ] }, { "title": "Sensors", "orderable": false, "expandable": true, "expanded": false, "type": "section", "items": [ "homes[].zones[].separateTemperature", "homes[].zones[].separateHumidity" ] }, { "title": "Delay", "orderable": false, "expandable": true, "expanded": false, "type": "section", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].zones[arrayIndices[1]].type === 'HEATING' } catch(e){ return false }" }, "items": [ "homes[].zones[].delaySwitch", "homes[].zones[].autoOffDelay" ] } ] } ] } ] }, { "key": "homes[]", "type": "section", "title": "Presence", "expandable": true, "expanded": false, "orderable": false, "items": [ { "title": "Anyone", "orderable": false, "items": [ "homes[].presence.anyone", "homes[].presence.accTypeAnyone" ] }, { "key": "homes[].presence.user", "title": "User", "expandable": true, "expanded": false, "orderable": false, "buttonText": "Add User", "items": [ { "key": "homes[].presence.user[]", "items": [ "homes[].presence.user[].active", "homes[].presence.user[].name", "homes[].presence.user[].accType" ] } ] } ] }, { "key": "homes[]", "type": "section", "title": "Weather", "expandable": true, "expanded": false, "orderable": false, "items": [ "homes[].weather.temperatureSensor", "homes[].weather.solarIntensity", "homes[].weather.accTypeSolarIntensity", { "title": "Location", "condition": { "functionBody": "return false;" }, "orderable": false, "items": [ "homes[].geolocation.longitude", "homes[].geolocation.latitude" ] } ] }, { "key": "homes[]", "type": "section", "title": "Extras", "expandable": true, "expanded": false, "orderable": false, "items": [ { "title": "Central Switch", "type": "section", "expandable": true, "expanded": false, "orderable": false, "items": [ "homes[].extras.centralSwitch", "homes[].extras.runningInformation", "homes[].extras.boostSwitch", "homes[].extras.sheduleSwitch", "homes[].extras.turnoffSwitch", "homes[].extras.dummySwitch" ] }, { "title": "Presence Lock", "type": "section", "expandable": true, "expanded": false, "orderable": false, "items": [ "homes[].extras.presenceLock", "homes[].extras.accTypePresenceLock" ] }, { "key": "homes[].extras.childLockSwitches", "title": "Child Lock", "buttonText": "Add Switch", "type": "section", "expandable": true, "expanded": false, "orderable": false, "items": [ "homes[].extras.childLockSwitches[].active", "homes[].extras.childLockSwitches[].name", "homes[].extras.childLockSwitches[].serialNumber" ] } ] }, { "key": "homes[]", "title": "Telegram", "type": "section", "orderable": false, "expandable": true, "expanded": false, "items": [ "homes[].telegram.active", { "title": "Credentials", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].telegram.active } catch(e) { return false };" }, "orderable": false, "items": [ "homes[].telegram.token", "homes[].telegram.chatID" ] }, { "title": "Messages", "condition": { "functionBody": "try { return model.homes[arrayIndices[0]].telegram.active } catch(e) { return false };" }, "orderable": false, "items": [ { "key": "homes[].telegram", "type": "section", "title": "Presence", "expandable": true, "expanded": false, "orderable": false, "items": [ "homes[].telegram.messages.presence.user_in", "homes[].telegram.messages.presence.user_out", "homes[].telegram.messages.presence.anyone_in", "homes[].telegram.messages.presence.anyone_out" ] }, { "key": "homes[].telegram", "type": "section", "title": "Open Window", "expandable": true, "expanded": false, "orderable": false, "items": [ "homes[].telegram.messages.openWindow.opened", "homes[].telegram.messages.openWindow.closed" ] } ] } ] } ] } ] }