{
  "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 device control mode 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 device control mode 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
                  },
                  "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 device control mode 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
                  },
                  "temperatureSensorOutdoor": {
                    "title": "Temperature Sensor Outdoor",
                    "type": "boolean",
                    "default": false,
                    "description": "This enable extra outdoor temperature sensor to use with automations in HomeKit app.",
                    "required": false
                  },
                  "temperatureSensorSupply": {
                    "title": "Temperature Sensor Supply",
                    "type": "boolean",
                    "default": false,
                    "description": "This enable extra supply 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,
                          "readonly": true
                        },
                        "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": "Buttons",
                    "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": 18,
                          "default": 0,
                          "description": "Select the function.",
                          "oneOf": [
                            {
                              "title": "POWER ON/OFF",
                              "enum": [
                                0
                              ]
                            },
                            {
                              "title": "MODE LOSSNAY",
                              "enum": [
                                1
                              ]
                            },
                            {
                              "title": "MODE BYPASS",
                              "enum": [
                                2
                              ]
                            },
                            {
                              "title": "MODE AUTO",
                              "enum": [
                                3
                              ]
                            },
                            {
                              "title": "MODE NIGHT PURGE",
                              "enum": [
                                4
                              ]
                            },
                            {
                              "title": "FAN MODE AUTO",
                              "enum": [
                                10
                              ]
                            },
                            {
                              "title": "FAN MODE 1",
                              "enum": [
                                11
                              ]
                            },
                            {
                              "title": "FAN MODE 2",
                              "enum": [
                                12
                              ]
                            },
                            {
                              "title": "FAN MODE 3",
                              "enum": [
                                13
                              ]
                            },
                            {
                              "title": "FAN MODE 4",
                              "enum": [
                                14
                              ]
                            },
                            {
                              "title": "LOCK CONTROL",
                              "enum": [
                                15
                              ]
                            },
                            {
                              "title": "ROOM TEMP HIDE",
                              "enum": [
                                16
                              ]
                            },
                            {
                              "title": "SUPPLY TEMP HIDE",
                              "enum": [
                                17
                              ]
                            },
                            {
                              "title": "OUTDOOR TEMP HIDE",
                              "enum": [
                                18
                              ]
                            }
                          ],
                          "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]?.ervDevices || []; return devices.length > 0 && devices.every(device => device.id != null);"
              }
            },
            "refreshInterval": {
              "title": "Refresh Interval",
              "type": "integer",
              "default": 120,
              "minimum": 1,
              "maximum": 600,
              "description": "Set the background account data refresh time in seconds.",
              "required": false
            },
            "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
            },
            "restFul": {
              "title": "RESTFul",
              "type": "object",
              "properties": {
                "enable": {
                  "title": "Enable",
                  "type": "boolean",
                  "default": false,
                  "description": "This enable RESTful server.",
                  "required": false
                },
                "debug": {
                  "title": "Debug",
                  "type": "boolean",
                  "default": false,
                  "description": "This enable debug mode for RESTFul.",
                  "condition": {
                    "functionBody": "return model.accounts[arrayIndices].restFul.enable === true;"
                  },
                  "required": false
                }
              }
            },
            "mqtt": {
              "title": "MQTT",
              "type": "object",
              "properties": {
                "enable": {
                  "title": "Enable",
                  "type": "boolean",
                  "default": false,
                  "description": "This enable MQTT client."
                },
                "debug": {
                  "title": "Debug",
                  "type": "boolean",
                  "default": false,
                  "description": "This enable debug mode for MQTT.",
                  "condition": {
                    "functionBody": "return model.accounts[arrayIndices].mqtt.enable === true;"
                  },
                  "required": false
                },
                "host": {
                  "title": "IP/Hostname",
                  "type": "string",
                  "placeholder": "ip or hostname",
                  "format": "hostname",
                  "description": "Here set the IP/Hostname of MQTT Broker.",
                  "condition": {
                    "functionBody": "return model.accounts[arrayIndices].mqtt.enable === true;"
                  },
                  "required": false
                },
                "port": {
                  "title": "Port",
                  "type": "integer",
                  "placeholder": 1883,
                  "description": "Here set the port of MQTT Broker.",
                  "condition": {
                    "functionBody": "return model.accounts[arrayIndices].mqtt.enable === true;"
                  },
                  "required": false
                },
                "clientId": {
                  "title": "Client ID",
                  "type": "string",
                  "placeholder": "client id",
                  "description": "Here optional set the Client ID of MQTT Broker.",
                  "condition": {
                    "functionBody": "return model.accounts[arrayIndices].mqtt.enable === true"
                  },
                  "required": false
                },
                "prefix": {
                  "title": "Prefix",
                  "type": "string",
                  "placeholder": "home/envoy",
                  "description": "Here set the prefix.",
                  "condition": {
                    "functionBody": "return model.accounts[arrayIndices].mqtt.enable === true;"
                  },
                  "required": false
                },
                "auth": {
                  "title": "Authorization",
                  "type": "boolean",
                  "default": false,
                  "description": "This enable authorization for MQTT Broker.",
                  "condition": {
                    "functionBody": "return model.accounts[arrayIndices].mqtt.enable === true;"
                  },
                  "required": false
                },
                "user": {
                  "title": "User",
                  "type": "string",
                  "placeholder": "user",
                  "description": "Here set the user of MQTT Broker.",
                  "condition": {
                    "functionBody": "return model.accounts[arrayIndices].mqtt.enable === true && model.accounts[arrayIndices].mqtt.auth === true;"
                  },
                  "required": false
                },
                "passwd": {
                  "title": "Password",
                  "type": "string",
                  "placeholder": "password",
                  "description": "Here set the password of MQTT Broker.",
                  "format": "password",
                  "condition": {
                    "functionBody": "return model.accounts[arrayIndices].mqtt.enable === true && model.accounts[arrayIndices].mqtt.auth === true;"
                  },
                  "required": false
                }
              }
            }
          }
        }
      }
    }
  },
  "layout": [
    {
      "key": "accounts",
      "type": "tabarray",
      "title": "{{ value.name || 'account' }}",
      "items": [
        "accounts[].name",
        "accounts[].user",
        {
          "key": "accounts[].passwd",
          "type": "password"
        },
        "accounts[].language",
        {
          "key": "accounts[]",
          "type": "tabarray",
          "title": "{{ value.title }}",
          "items": [
            {
              "key": "accounts[]",
              "title": "Air Conditioner",
              "items": [
                {
                  "key": "accounts[].ataDevices",
                  "type": "tabarray",
                  "title": "{{ value.name }}",
                  "items": [
                    {
                      "key": "accounts[].ataDevices[].id",
                      "readonly": true
                    },
                    {
                      "key": "accounts[].ataDevices[].typeString",
                      "readonly": true
                    },
                    "accounts[].ataDevices[].displayMode",
                    {
                      "key": "accounts[].ataDevices[]",
                      "type": "section",
                      "title": "Settings",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        "accounts[].ataDevices[].name",
                        "accounts[].ataDevices[].heatDryFanMode",
                        "accounts[].ataDevices[].coolDryFanMode",
                        "accounts[].ataDevices[].autoDryFanMode",
                        "accounts[].ataDevices[].refreshInterval"
                      ]
                    },
                    {
                      "key": "accounts[].ataDevices[]",
                      "type": "section",
                      "title": "Presets",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        {
                          "key": "accounts[].ataDevices[].presets",
                          "type": "tabarray",
                          "title": "{{ value.name }}",
                          "items": [
                            {
                              "key": "accounts[].ataDevices[].presets[].id",
                              "readonly": true
                            },
                            "accounts[].ataDevices[].presets[].name",
                            "accounts[].ataDevices[].presets[].displayType",
                            "accounts[].ataDevices[].presets[].namePrefix"
                          ]
                        }
                      ]
                    },
                    {
                      "key": "accounts[].ataDevices[]",
                      "type": "section",
                      "title": "Temperature Sensors",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        "accounts[].ataDevices[].temperatureSensor",
                        "accounts[].ataDevices[].temperatureSensorOutdoor"
                      ]
                    },
                    {
                      "key": "accounts[].ataDevices[]",
                      "type": "section",
                      "title": "Buttons / Sensors",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        {
                          "key": "accounts[].ataDevices[].buttonsSensors",
                          "type": "tabarray",
                          "title": "{{ value.name || 'button/sensor' }}",
                          "items": [
                            "accounts[].ataDevices[].buttonsSensors[].name",
                            "accounts[].ataDevices[].buttonsSensors[].mode",
                            "accounts[].ataDevices[].buttonsSensors[].displayType",
                            "accounts[].ataDevices[].buttonsSensors[].namePrefix"
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "key": "accounts[]",
              "title": "Heat Pump",
              "items": [
                {
                  "key": "accounts[].atwDevices",
                  "type": "tabarray",
                  "title": "{{ value.name }}",
                  "items": [
                    {
                      "key": "accounts[].atwDevices[].id",
                      "readonly": true
                    },
                    {
                      "key": "accounts[].atwDevices[].typeString",
                      "readonly": true
                    },
                    "accounts[].atwDevices[].displayMode",
                    {
                      "key": "accounts[].atwDevices[]",
                      "type": "section",
                      "title": "Settings",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        "accounts[].atwDevices[].name",
                        "accounts[].atwDevices[].refreshInterval"
                      ]
                    },
                    {
                      "key": "accounts[].atwDevices[]",
                      "type": "section",
                      "title": "Presets",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        {
                          "key": "accounts[].atwDevices[].presets",
                          "type": "tabarray",
                          "title": "{{ value.name }}",
                          "items": [
                            {
                              "key": "accounts[].atwDevices[].presets[].id",
                              "readonly": true
                            },
                            "accounts[].atwDevices[].presets[].name",
                            "accounts[].atwDevices[].presets[].displayType",
                            "accounts[].atwDevices[].presets[].namePrefix"
                          ]
                        }
                      ]
                    },
                    {
                      "key": "accounts[].atwDevices[]",
                      "type": "section",
                      "title": "Temperature Sensors",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        "accounts[].atwDevices[].temperatureSensor",
                        "accounts[].atwDevices[].temperatureSensorFlow",
                        "accounts[].atwDevices[].temperatureSensorReturn",
                        "accounts[].atwDevices[].temperatureSensorFlowZone1",
                        "accounts[].atwDevices[].temperatureSensorReturnZone1",
                        "accounts[].atwDevices[].temperatureSensorFlowWaterTank",
                        "accounts[].atwDevices[].temperatureSensorReturnWaterTank",
                        "accounts[].atwDevices[].temperatureSensorFlowZone2",
                        "accounts[].atwDevices[].temperatureSensorReturnZone2"
                      ]
                    },
                    {
                      "key": "accounts[].atwDevices[]",
                      "type": "section",
                      "title": "Buttons / Sensors",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        {
                          "key": "accounts[].atwDevices[].buttonsSensors",
                          "type": "tabarray",
                          "title": "{{ value.name || 'button/sensor' }}",
                          "items": [
                            "accounts[].atwDevices[].buttonsSensors[].name",
                            "accounts[].atwDevices[].buttonsSensors[].mode",
                            "accounts[].atwDevices[].buttonsSensors[].displayType",
                            "accounts[].atwDevices[].buttonsSensors[].namePrefix"
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "key": "accounts[]",
              "title": "Energy Recovery Ventilation",
              "items": [
                {
                  "key": "accounts[].ervDevices",
                  "type": "tabarray",
                  "title": "{{ value.name }}",
                  "items": [
                    {
                      "key": "accounts[].ervDevices[].id",
                      "readonly": true
                    },
                    {
                      "key": "accounts[].ervDevices[].typeString",
                      "readonly": true
                    },
                    "accounts[].ervDevices[].displayMode",
                    {
                      "key": "accounts[].ervDevices[]",
                      "type": "section",
                      "title": "Settings",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        "accounts[].ervDevices[].name",
                        "accounts[].ervDevices[].refreshInterval"
                      ]
                    },
                    {
                      "key": "accounts[].ervDevices[]",
                      "type": "section",
                      "title": "Presets",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        {
                          "key": "accounts[].ervDevices[].presets",
                          "type": "tabarray",
                          "title": "{{ value.name }}",
                          "items": [
                            {
                              "key": "accounts[].ervDevices[].presets[].id",
                              "readonly": true
                            },
                            "accounts[].ervDevices[].presets[].name",
                            "accounts[].ervDevices[].presets[].displayType",
                            "accounts[].ervDevices[].presets[].namePrefix"
                          ]
                        }
                      ]
                    },
                    {
                      "key": "accounts[].ervDevices[]",
                      "type": "section",
                      "title": "Temperature Sensors",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        "accounts[].ervDevices[].temperatureSensor",
                        "accounts[].ervDevices[].temperatureSensorOutdoor",
                        "accounts[].ervDevices[].temperatureSensorSupply"
                      ]
                    },
                    {
                      "key": "accounts[].ervDevices[]",
                      "type": "section",
                      "title": "Buttons / Sensors",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        {
                          "key": "accounts[].ervDevices[].buttonsSensors",
                          "type": "tabarray",
                          "title": "{{ value.name || 'button/sensor' }}",
                          "items": [
                            "accounts[].ervDevices[].buttonsSensors[].name",
                            "accounts[].ervDevices[].buttonsSensors[].mode",
                            "accounts[].ervDevices[].buttonsSensors[].displayType",
                            "accounts[].ervDevices[].buttonsSensors[].namePrefix"
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "key": "accounts[]",
          "type": "section",
          "title": "Advanced Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            {
              "key": "accounts[]",
              "type": "tabarray",
              "title": "{{ value.name }}",
              "items": [
                {
                  "key": "accounts[]",
                  "title": "Account Data Refresh",
                  "items": [
                    "accounts[].refreshInterval"
                  ]
                },
                {
                  "key": "accounts[]",
                  "title": "Log",
                  "items": [
                    "accounts[].disableLogDeviceInfo",
                    "accounts[].disableLogInfo",
                    "accounts[].disableLogSuccess",
                    "accounts[].disableLogWarn",
                    "accounts[].disableLogError",
                    "accounts[].enableDebugMode"
                  ]
                },
                {
                  "key": "accounts[]",
                  "title": "External Integrations",
                  "items": [
                    {
                      "key": "accounts[]",
                      "type": "tabarray",
                      "title": "{{ value.title }}",
                      "items": [
                        {
                          "key": "accounts[].restFul",
                          "title": "RESTFul",
                          "items": [
                            "accounts[].restFul.enable",
                            "accounts[].restFul.debug"
                          ]
                        },
                        {
                          "key": "accounts[].mqtt",
                          "title": "MQTT",
                          "items": [
                            "accounts[].mqtt.enable",
                            "accounts[].mqtt.debug",
                            "accounts[].mqtt.host",
                            "accounts[].mqtt.port",
                            "accounts[].mqtt.clientId",
                            "accounts[].mqtt.prefix",
                            "accounts[].mqtt.auth",
                            "accounts[].mqtt.user",
                            {
                              "key": "accounts[].mqtt.passwd",
                              "type": "password"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}