UNPKG

homebridge-melcloud-control

Version:

Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.

1,374 lines (1,373 loc) 83.6 kB
{ "pluginAlias": "melcloudcontrol", "pluginType": "platform", "singular": true, "fixArrays": true, "strictValidation": true, "customUi": true, "headerDisplay": "This plugin works with Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation connected to MELCloud service. 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-melcloud-control).", "schema": { "type": "object", "properties": { "accounts": { "type": "array", "items": { "type": "object", "properties": { "name": { "title": "Name", "type": "string", "placeholder": "Account name", "description": "Your own account name.", "required": true }, "user": { "title": "User", "type": "string", "placeholder": "User", "description": "MELCloud account username.", "required": true }, "passwd": { "title": "Password", "type": "string", "placeholder": "Password", "description": "MELCloud account password.", "format": "password", "required": true }, "language": { "title": "Language", "type": "string", "minLength": 1, "maxLength": 2, "pattern": "^[0-9]+$", "default": "0", "oneOf": [ { "title": "English", "enum": [ "0" ] }, { "title": "Български", "enum": [ "1" ] }, { "title": "Čeština", "enum": [ "2" ] }, { "title": "Dansk", "enum": [ "3" ] }, { "title": "Deutsch", "enum": [ "4" ] }, { "title": "Eesti", "enum": [ "5" ] }, { "title": "Español", "enum": [ "6" ] }, { "title": "Français", "enum": [ "7" ] }, { "title": "Հայերեն", "enum": [ "8" ] }, { "title": "Latviešu", "enum": [ "9" ] }, { "title": "Lietuvių", "enum": [ "10" ] }, { "title": "Magyar", "enum": [ "11" ] }, { "title": "Nederlands", "enum": [ "12" ] }, { "title": "Norwegian", "enum": [ "13" ] }, { "title": "Polski", "enum": [ "14" ] }, { "title": "Português", "enum": [ "15" ] }, { "title": "Русский", "enum": [ "16" ] }, { "title": "Suomi", "enum": [ "17" ] }, { "title": "Svenska", "enum": [ "18" ] }, { "title": "Italiano", "enum": [ "19" ] }, { "title": "Українська", "enum": [ "20" ] }, { "title": "Türkçe", "enum": [ "21" ] }, { "title": "Ελληνικά", "enum": [ "22" ] }, { "title": "Hrvatski", "enum": [ "23" ] }, { "title": "Română", "enum": [ "24" ] }, { "title": "Slovenščina", "enum": [ "25" ] } ], "description": "Here select the language used in MELCloud account.", "required": true }, "ataDevices": { "title": "Devices ATA", "type": "array", "items": { "type": "object", "properties": { "id": { "title": "ID", "type": "integer", "default": 0, "required": false, "readonly": true }, "type": { "title": "Type", "type": "integer", "default": 0, "required": false, "readonly": true }, "typeString": { "title": "Type", "type": "string", "default": "Air Conditioner", "required": false, "readonly": true }, "name": { "title": "Name", "type": "string", "default": "Air Conditioner", "required": false }, "displayMode": { "title": "Control", "type": "integer", "minimum": 0, "maximum": 2, "default": 1, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Heater/Cooler", "enum": [ 1 ] }, { "title": "Thermostat", "enum": [ 2 ] } ], "description": "Select accessory control type displayed in HomeKit app.", "required": true }, "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 }, "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 }, "refreshInterval": { "title": "Refresh Interval", "type": "integer", "default": 5, "minimum": 1, "maximum": 60, "description": "Set the background device state refresh time in seconds.", "required": false }, "presets": { "title": "Presets", "type": "array", "items": { "type": "object", "properties": { "id": { "title": "ID", "type": "integer", "required": false }, "name": { "title": "Name", "type": "string", "placeholder": "Preset name", "description": "Your own name displayed in Homebridge/HomeKit app.", "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 } } } }, "buttonsSensors": { "title": "Button / Sensor", "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": 40, "default": 0, "description": "Function, VH - Vane Horizontal, VV - Vane Vertical.", "oneOf": [ { "title": "POWER ON/OFF", "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", "enum": [ 6 ] }, { "title": "MODE DRY CONTROL HIDE", "enum": [ 7 ] }, { "title": "VH MODE AUTO", "enum": [ 10 ] }, { "title": "VH MODE 1 / LEFT", "enum": [ 11 ] }, { "title": "VH MODE 2", "enum": [ 12 ] }, { "title": "VH MODE 3 / CENTER", "enum": [ 13 ] }, { "title": "VH MODE 4", "enum": [ 14 ] }, { "title": "VH MODE 5 / RIGHT", "enum": [ 15 ] }, { "title": "VH MODE SPLIT", "enum": [ 16 ] }, { "title": "VH MODE SWING", "enum": [ 17 ] }, { "title": "VV MODE AUTO", "enum": [ 20 ] }, { "title": "VV MODE 1 / UP", "enum": [ 21 ] }, { "title": "VV MODE 2", "enum": [ 22 ] }, { "title": "VV MODE 3 / CENTER", "enum": [ 23 ] }, { "title": "VV MODE 4", "enum": [ 24 ] }, { "title": "VV MODE 5 / DOWN", "enum": [ 25 ] }, { "title": "VV SWING", "enum": [ 26 ] }, { "title": "VH/VV CONTROLS HIDE", "enum": [ 27 ] }, { "title": "FAN MODE AUTO", "enum": [ 30 ] }, { "title": "FAN MODE 1", "enum": [ 31 ] }, { "title": "FAN MODE 2", "enum": [ 32 ] }, { "title": "FAN MODE 3", "enum": [ 33 ] }, { "title": "FAN MODE 4", "enum": [ 34 ] }, { "title": "FAN MODE 5", "enum": [ 35 ] }, { "title": "FAN MODE 6", "enum": [ 36 ] }, { "title": "LOCK CONTROL All", "enum": [ 37 ] }, { "title": "LOCK CONTROL POWER", "enum": [ 38 ] }, { "title": "LOCK CONTROL MODE", "enum": [ 39 ] }, { "title": "LOCK CONTROL TEMPERATURE", "enum": [ 40 ] } ], "required": true }, "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 } } } } } }, "condition": { "functionBody": "const devices = model.accounts[arrayIndices]?.ataDevices || []; return devices.length > 0 && devices.every(device => device.id != null);" } }, "atwDevices": { "title": "Devices ATW", "type": "array", "items": { "type": "object", "properties": { "id": { "title": "ID", "type": "integer", "default": 0, "required": false, "readonly": true }, "type": { "title": "Type", "type": "integer", "default": 1, "required": false, "readonly": true }, "typeString": { "title": "Type", "type": "string", "default": "Heat Pump", "required": false, "readonly": true }, "name": { "title": "Name", "type": "string", "default": "Heat Pump", "required": false }, "displayMode": { "title": "Control", "type": "integer", "minimum": 0, "maximum": 2, "default": 1, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Heater/Cooler", "enum": [ 1 ] }, { "title": "Thermostat", "enum": [ 2 ] } ], "description": "Select accessory control type displayed in HomeKit app.", "required": true }, "hideZone": { "title": "Hide zone", "type": "integer", "minimum": 0, "maximum": 15, "default": 0, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Heat Pump", "enum": [ 1 ] }, { "title": "Heat Pump / Zone 1", "enum": [ 2 ] }, { "title": "Heat Pump / Zone 1 / Hot Water", "enum": [ 3 ] }, { "title": "Heat Pump / Zone 1 / Zone 2", "enum": [ 4 ] }, { "title": "Heat Pump / Hot Water", "enum": [ 5 ] }, { "title": "Heat Pump / Hot Water / Zone 2", "enum": [ 6 ] }, { "title": "Heat Pump / Zone 2", "enum": [ 7 ] }, { "title": "Zone 1", "enum": [ 8 ] }, { "title": "Zone 1 / Hot Water", "enum": [ 9 ] }, { "title": "Zone 1 / Hot Water / Zone 2", "enum": [ 10 ] }, { "title": "Zone 1 / Zone 2", "enum": [ 11 ] }, { "title": "Hot Water", "enum": [ 12 ] }, { "title": "Hot Water / Zone 2", "enum": [ 13 ] }, { "title": "Zone 2", "enum": [ 14 ] }, { "title": "All", "enum": [ 15 ] } ], "description": "Select zone to hidde in HomeKit app, if present.", "required": true }, "temperatureSensor": { "title": "Temperature Sensor Room", "type": "boolean", "default": false, "description": "This enable extra temperature sensor to use with automations in HomeKit app.", "required": false }, "temperatureSensorFlow": { "title": "Temperature Sensor Flow", "type": "boolean", "default": false, "description": "This enable extra Flow temperature sensor to use with automations in HomeKit app.", "required": false }, "temperatureSensorReturn": { "title": "Temperature Sensor Return", "type": "boolean", "default": false, "description": "This enable extra Return temperature sensor to use with automations in HomeKit app.", "required": false }, "temperatureSensorFlowZone1": { "title": "Temperature Sensor Flow Zone 1", "type": "boolean", "default": false, "description": "This enable extra Flow Zone 1 temperature sensor to use with automations in HomeKit app.", "required": false }, "temperatureSensorReturnZone1": { "title": "Temperature Sensor Return Zone 1", "type": "boolean", "default": false, "description": "This enable extra Return Zone 1 temperature sensor to use with automations in HomeKit app.", "required": false }, "temperatureSensorFlowWaterTank": { "title": "Temperature Sensor Flow Water Tank", "type": "boolean", "default": false, "description": "This enable extra Flow Water Tank temperature sensor to use with automations in HomeKit app.", "required": false }, "temperatureSensorReturnWaterTank": { "title": "Temperature Sensor Return Water Tank", "type": "boolean", "default": false, "description": "This enable extra Return Water Tank temperature sensor to use with automations in HomeKit app.", "required": false }, "temperatureSensorFlowZone2": { "title": "Temperature Sensor Flow Zone 2", "type": "boolean", "default": false, "description": "This enable extra Flow Zone 2 temperature sensor to use with automations in HomeKit app.", "required": false }, "temperatureSensorReturnZone2": { "title": "Temperature Sensor Return Zone 2", "type": "boolean", "default": false, "description": "This enable extra Return Zone 2 temperature sensor to use with automations in HomeKit app.", "required": false }, "refreshInterval": { "title": "Refresh Interval", "type": "integer", "default": 5, "minimum": 1, "maximum": 60, "description": "Set the background device state refresh time in seconds.", "required": false }, "presets": { "title": "Presets", "type": "array", "items": { "type": "object", "properties": { "id": { "title": "ID", "type": "integer", "required": false }, "name": { "title": "Name", "type": "string", "placeholder": "Preset name", "description": "Your own name displayed in Homebridge/HomeKit app.", "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 } } } }, "buttonsSensors": { "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": 70, "default": 0, "description": "Select the function.", "oneOf": [ { "title": "POWER ON/OFF", "enum": [ 0 ] }, { "title": "MODE HEAT", "enum": [ 1 ] }, { "title": "MODE COOL", "enum": [ 2 ] }, { "title": "MODE HOLIDAY", "enum": [ 3 ] }, { "title": "LOCK CONTROL ALL", "enum": [ 10 ] }, { "title": "Z1 MODE HEAT THERMOSTAT", "enum": [ 20 ] }, { "title": "Z1 MODE HEAT FLOW", "enum": [ 21 ] }, { "title": "Z1 MODE HEAT CURVE", "enum": [ 22 ] }, { "title": "Z1 MODE COOL THERMOSTAT", "enum": [ 23 ] }, { "title": "Z1 MODE COOL FLOW", "enum": [ 24 ] }, { "title": "Z1 MODE FLOOR DRY UP", "enum": [ 25 ] }, { "title": "Z1 LOCK CONTROL", "enum": [ 30 ] }, { "title": "HW MODE FORCE", "enum": [ 40 ] }, { "title": "HW MODE ECO", "enum": [ 41 ] }, { "title": "HW LOCK CONTROL", "enum": [ 50 ] }, { "title": "Z2 MODE HEAT THERMOSTAT", "enum": [ 60 ] }, { "title": "Z2 MODE HEAT FLOW", "enum": [ 61 ] }, { "title": "Z2 MODE HEAT CURVE", "enum": [ 62 ] }, { "title": "Z2 MODE COOL THERMOSTAT", "enum": [ 63 ] }, { "title": "Z2 MODE COOL FLOW", "enum": [ 64 ] }, { "title": "Z2 MODE FLOOR DRY UP", "enum": [ 65 ] }, { "title": "Z2 LOCK CONTROL", "enum": [ 70 ] } ], "required": true }, "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 } } } } } }, "condition": { "functionBody": "const devices = model.accounts[arrayIndices]?.atwDevices || []; return devices.length > 0 && devices.every(device => device.id != null);" } }, "ervDevices": { "title": "Devices ERV", "type": "array", "items": { "type": "object", "properties": { "id": { "title": "ID", "type": "integer", "default": 0, "required": false, "readonly": true }, "type": { "title": "Type", "type": "integer", "default": 3, "required": false, "readonly": true }, "typeString": { "title": "Type", "type": "string", "default": "Ventilation", "required": false, "readonly": true }, "name": { "title": "Name", "type": "string", "default": "Ventilation", "required": false }, "displayMode": { "title": "Control", "type": "integer", "minimum": 0, "maximum": 2, "default": 1, "oneOf": [ { "title": "None/Disabled", "enum": [ 0 ] }, { "title": "Heater/Cooler", "enum": [ 1 ] }, { "title": "Thermostat", "enum": [ 2 ] } ], "description": "Select accessory control type displayed in HomeKit app.", "required": true }, "temperatureSensor": { "title": "Temperature Sensor Room", "type": "boolean", "default": false, "description": "This enable extra temperature sensor to use with automations in HomeKit app.", "required": false },