{
  "pluginAlias": "SwitchBot",
  "pluginType": "platform",
  "singular": true,
  "customUi": true,
  "customUiPath": "./dist/homebridge-ui",
  "headerDisplay": "<p align='center'><img width='100px' src='https://user-images.githubusercontent.com/9875439/102681754-ac2eb800-4189-11eb-8e17-7c47c804484b.png'></p>\n\nThe **SwitchBot** plugin allows you to control SwitchBot Devices. \n\nTo get started link your SwitchBot account.\n\n1. Download SwitchBot App on App Store or Google Play Store.\n\n2. Register a SwitchBot account and log in into your account.\n\n3. Generate an Open Token within the App.\n\n4. Input your `Open Token` into the parameter below.",
  "footerDisplay": "Please raise any issues on our [project page](https://github.com/OpenWonderLabs/homebridge-switchbot/issues).\n\nIf you would like to have other SwitchBot Devices added to this plugin fill out [Feature Request Form](https://github.com/OpenWonderLabs/homebridge-switchbot/issues/new?assignees=&labels=&template=feature_request.md).\n\n[SwitchBot Website](https://www.switch-bot.com)",
  "schema": {
    "type": "object",
    "properties": {
      "name": {
        "type": "string",
        "title": "Name",
        "default": "SwitchBot"
      },
      "credentials": {
        "type": "object",
        "properties": {
          "token": {
            "title": "Token",
            "type": "string",
            "pattern": "^[0-9A-Fa-f]+$",
            "x-schema-form": {
              "type": "token"
            }
          },
          "secret": {
            "title": "Secret",
            "type": "string",
            "pattern": "^[0-9A-Fa-f]+$",
            "x-schema-form": {
              "type": "secret"
            }
          },
          "notice": {
            "title": "Notice",
            "type": "string",
            "default": "Keep your Token & Secret a secret!"
          }
        },
        "required": [
          "token",
          "secret",
          "notice"
        ]
      },
      "options": {
        "type": "object",
        "properties": {
          "devices": {
            "type": "array",
            "items": {
              "title": "Devices",
              "type": "object",
              "properties": {
                "configDeviceName": {
                  "title": "Device Name",
                  "type": "string",
                  "pattern": "^[a-zA-Z0-9]+([a-zA-Z0-9 ]*[a-zA-Z0-9]+)?$",
                  "placeholder": "SwitchBot",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "deviceId": {
                  "title": "Device ID",
                  "type": "string",
                  "placeholder": "81F3UT59513F",
                  "pattern": "^[0-9A-F]{12}$|^[0-9A-Z0-9]{15}$|^[0-9A-Z0-9]{18}$"
                },
                "hide_device": {
                  "title": "Hide Device",
                  "type": "boolean",
                  "description": "If true, device will be removed or hidden from HomeKit.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "configDeviceType": {
                  "title": "Device Type",
                  "type": "string",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
                  },
                  "oneOf": [
                    {
                      "title": "Blind Tilt",
                      "enum": [
                        "Blind Tilt"
                      ]
                    },
                    {
                      "title": "Bot",
                      "enum": [
                        "Bot"
                      ]
                    },
                    {
                      "title": "Relay Switch 1",
                      "enum": [
                        "Relay Switch 1"
                      ]
                    },
                    {
                      "title": "Relay Switch 1PM",
                      "enum": [
                        "Relay Switch 1PM"
                      ]
                    },
                    {
                      "title": "Battery Circulator Fan",
                      "enum": [
                        "Battery Circulator Fan"
                      ]
                    },
                    {
                      "title": "Ceiling Light",
                      "enum": [
                        "Ceiling Light"
                      ]
                    },
                    {
                      "title": "Ceiling Light Pro",
                      "enum": [
                        "Ceiling Light Pro"
                      ]
                    },
                    {
                      "title": "Color Bulb",
                      "enum": [
                        "Color Bulb"
                      ]
                    },
                    {
                      "title": "Contact Sensor",
                      "enum": [
                        "Contact Sensor"
                      ]
                    },
                    {
                      "title": "Curtain",
                      "enum": [
                        "Curtain"
                      ]
                    },
                    {
                      "title": "Curtain 3",
                      "enum": [
                        "Curtain3"
                      ]
                    },
                    {
                      "title": "Floor Cleaning Robot S10",
                      "enum": [
                        "WoSweeper"
                      ]
                    },
                    {
                      "title": "Hub 2",
                      "enum": [
                        "Hub 2"
                      ]
                    },
                    {
                      "title": "Humidifier",
                      "enum": [
                        "Humidifier"
                      ]
                    },
                    {
                      "title": "Evaporative Humidifier",
                      "enum": [
                        "Humidifier2"
                      ]
                    },
                    {
                      "title": "Indoor/Outdoor Sensor",
                      "enum": [
                        "WoIOSensor"
                      ]
                    },
                    {
                      "title": "Water Detector",
                      "enum": [
                        "Water Detector"
                      ]
                    },
                    {
                      "title": "Meter",
                      "enum": [
                        "Meter"
                      ]
                    },
                    {
                      "title": "Meter Plus (JP)",
                      "enum": [
                        "Meter Plus (JP)"
                      ]
                    },
                    {
                      "title": "Meter Plus (US)",
                      "enum": [
                        "MeterPlus"
                      ]
                    },
                    {
                      "title": "Meter Pro",
                      "enum": [
                        "MeterPro"
                      ]
                    },
                    {
                      "title": "Meter Pro (CO2)",
                      "enum": [
                        "MeterPro(CO2)"
                      ]
                    },
                    {
                      "title": "Mini Robot Vacuum K10+",
                      "enum": [
                        "K10+"
                      ]
                    },
                    {
                      "title": "Mini Robot Vacuum K10+ Pro",
                      "enum": [
                        "K10+ Pro"
                      ]
                    },
                    {
                      "title": "Mini Robot Vacuum K10+ (WoSweeperMini)",
                      "enum": [
                        "WoSweeperMini"
                      ]
                    },
                    {
                      "title": "Mini Robot Vacuum K10+ Pro  (WoSweeperMiniPro)",
                      "enum": [
                        "WoSweeperMiniPro"
                      ]
                    },
                    {
                      "title": "Motion Sensor",
                      "enum": [
                        "Motion Sensor"
                      ]
                    },
                    {
                      "title": "Plug",
                      "enum": [
                        "Plug"
                      ]
                    },
                    {
                      "title": "Plug Mini (JP)",
                      "enum": [
                        "Plug Mini (JP)"
                      ]
                    },
                    {
                      "title": "Plug Mini (US)",
                      "enum": [
                        "Plug Mini (US)"
                      ]
                    },
                    {
                      "title": "Robot Vacuum Cleaner S1",
                      "enum": [
                        "WoSweeper"
                      ]
                    },
                    {
                      "title": "Robot Vacuum Cleaner S1 Plus",
                      "enum": [
                        "WoSweeperPlus"
                      ]
                    },
                    {
                      "title": "Robot Vacuum Cleaner S10",
                      "enum": [
                        "Robot Vacuum Cleaner S10"
                      ]
                    },
                    {
                      "title": "Roller Shade",
                      "enum": [
                        "WoRollerShade"
                      ]
                    },
                    {
                      "title": "Smart Fan",
                      "enum": [
                        "Smart Fan"
                      ]
                    },
                    {
                      "title": "Smart Lock",
                      "enum": [
                        "Smart Lock"
                      ]
                    },
                    {
                      "title": "Smart Lock Pro",
                      "enum": [
                        "Smart Lock Pro"
                      ]
                    },
                    {
                      "title": "Strip Light",
                      "enum": [
                        "Strip Light"
                      ]
                    },
                    {
                      "title": "Wallet Finder",
                      "enum": [
                        "WalletFinder"
                      ]
                    }
                  ]
                },
                "connectionType": {
                  "title": "Connection Type",
                  "type": "string",
                  "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
                  },
                  "oneOf": [
                    {
                      "title": "BLE",
                      "enum": [
                        "BLE"
                      ]
                    },
                    {
                      "title": "BLE/OpenAPI",
                      "enum": [
                        "BLE/OpenAPI"
                      ]
                    },
                    {
                      "title": "Disable",
                      "enum": [
                        "Disabled"
                      ]
                    },
                    {
                      "title": "OpenAPI",
                      "enum": [
                        "OpenAPI"
                      ]
                    }
                  ]
                },
                "disablePlatformBLE": {
                  "title": "Disable Platform BLE",
                  "type": "boolean",
                  "description": "If set to true, this will disable the platform BLE for this specific device.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].connectionType !== 'Disabled');"
                  }
                },
                "scanDuration": {
                  "title": "Scan Duration (Default is 1 Second) for BLE",
                  "type": "number",
                  "placeholder": 1,
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
                  }
                },
                "customBLEaddress": {
                  "title": "Custom BLE Address",
                  "type": "string",
                  "placeholder": "81F3UT59513F",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
                  }
                },
                "webhook": {
                  "title": "Enable Webhook",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
                  }
                },
                "type": {
                  "title": "What Type of Device do you want to display in the Home App?",
                  "type": "string",
                  "default": "",
                  "placeholder": "outlet",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Bot' && model.options.devices[arrayIndices].deviceId);"
                  },
                  "oneOf": [
                    {
                      "title": "Default",
                      "enum": [
                        ""
                      ]
                    },
                    {
                      "title": "Door",
                      "enum": [
                        "door"
                      ]
                    },
                    {
                      "title": "Fan",
                      "enum": [
                        "fan"
                      ]
                    },
                    {
                      "title": "Faucet",
                      "enum": [
                        "faucet"
                      ]
                    },
                    {
                      "title": "Garage Door",
                      "enum": [
                        "garagedoor"
                      ]
                    },
                    {
                      "title": "Lock",
                      "enum": [
                        "lock"
                      ]
                    },
                    {
                      "title": "Outlet",
                      "enum": [
                        "outlet"
                      ]
                    },
                    {
                      "title": "Stateful Programmable Switch (Only Works in 3rd Party Home Apps)",
                      "enum": [
                        "stateful"
                      ]
                    },
                    {
                      "title": "Switch",
                      "enum": [
                        "switch"
                      ]
                    },
                    {
                      "title": "Window",
                      "enum": [
                        "window"
                      ]
                    },
                    {
                      "title": "Window Covering",
                      "enum": [
                        "windowcovering"
                      ]
                    }
                  ]
                },
                "mode": {
                  "title": "Bot Mode",
                  "type": "string",
                  "default": "",
                  "oneOf": [
                    {
                      "title": "Default",
                      "enum": [
                        ""
                      ]
                    },
                    {
                      "title": "Multi-Press",
                      "enum": [
                        "multipress"
                      ]
                    },
                    {
                      "title": "Press",
                      "enum": [
                        "press"
                      ]
                    },
                    {
                      "title": "Switch",
                      "enum": [
                        "switch"
                      ]
                    }
                  ],
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Bot' && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "mapping": {
                  "title": "Mapping Mode",
                  "type": "string",
                  "default": "",
                  "oneOf": [
                    {
                      "title": "Default",
                      "enum": [
                        ""
                      ]
                    },
                    {
                      "title": "Down and Up",
                      "enum": [
                        "down_and_up"
                      ]
                    },
                    {
                      "title": "Only Down",
                      "enum": [
                        "only_down"
                      ]
                    },
                    {
                      "title": "Only Up",
                      "enum": [
                        "only_up"
                      ]
                    },
                    {
                      "title": "Up and Down",
                      "enum": [
                        "up_and_down"
                      ]
                    },
                    {
                      "title": "Use Tilt for Direction",
                      "enum": [
                        "use_tilt_for_direction"
                      ]
                    }
                  ],
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "allowPush": {
                  "title": "Allow Changes to Be Pushed",
                  "description": "If set to true, this will allow commands to be sent even if device state is already in state that is being pushed.",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "doublePress": {
                  "title": "How many presses do you want to simulate?",
                  "type": "number",
                  "placeholder": "2",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Bot' && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mode);"
                  }
                },
                "pushRatePress": {
                  "title": "Double Press Push Rate",
                  "type": "number",
                  "placeholder": "15",
                  "description": "Indicates the number of seconds between pushes for double presses to SwitchBot API",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Bot' && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mode && model.options.devices[arrayIndices].doublePress > 1);"
                  }
                },
                "hide_temperature": {
                  "title": "Hide Temperature Sensor",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier'  || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)') && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "convertUnitTo": {
                  "title": "Convert Temperature Unit To",
                  "type": "string",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2'  || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_temperature);"
                  },
                  "oneOf": [
                    {
                      "title": "Celsius",
                      "enum": [
                        "CELSIUS"
                      ]
                    },
                    {
                      "title": "Fahrenheit",
                      "enum": [
                        "FAHRENHEIT"
                      ]
                    }
                  ]
                },
                "hide_humidity": {
                  "title": "Hide Humidity Sensor",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)') && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "hide_lightsensor": {
                  "title": "Hide Light Sensor",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "hide_motionsensor": {
                  "title": "Hide Contact Sensor's Motion Sensor",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "hide_contactsensor": {
                  "title": "Hide Lock's Contact Sensor",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Smart Lock' || model.options.devices[arrayIndices].configDeviceType === 'Smart Lock Pro') && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "hide_leak": {
                  "title": "Hide Water Detector's Leak Sensor",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Water Detector' && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "disable_group": {
                  "title": "Disable Grouping",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "disableCaching": {
                  "title": "Disable Caching",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "adaptiveLightingShift": {
                  "title": "Adaptive Lighting Shift",
                  "type": "number",
                  "placeholder": "-1",
                  "description": "The mired for each Adaptive Lighting update will be increased by this value, making the light appear warmer. Set to -1 to remove Adaptive Lighting feature. Must be -1 or more.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro') && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "activate_latchbutton": {
                  "title": "Activate Latch Button",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Smart Lock' || model.options.devices[arrayIndices].configDeviceType === 'Smart Lock Pro') && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "dry": {
                  "title": "Water Detector's Dry Alert",
                  "type": "boolean",
                  "description": "If true, the Water Detector will send an alert when it is dry.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Water Detector' && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "set_minStep": {
                  "title": "Set Minimum Step",
                  "type": "number",
                  "placeholder": "1",
                  "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2') && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "set_min": {
                  "title": "Set Minimum Open State",
                  "type": "number",
                  "placeholder": "0",
                  "description": "Sets the minimum percentage before needed to set to Open.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro') && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "set_max": {
                  "title": "Set Maximum Close State",
                  "type": "number",
                  "placeholder": "100",
                  "description": "Sets the maximum percentage before needing to set to Closed.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro') && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "set_minlux": {
                  "title": "Set Min Lux",
                  "type": "number",
                  "placeholder": "1",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
                  }
                },
                "set_maxlux": {
                  "title": "Set Max Lux",
                  "type": "number",
                  "placeholder": "6001",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
                  }
                },
                "setOpenMode": {
                  "title": "Opening Mode",
                  "type": "string",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId);"
                  },
                  "oneOf": [
                    {
                      "enum": [
                        "0"
                      ],
                      "title": "Performance Mode"
                    },
                    {
                      "enum": [
                        "1"
                      ],
                      "title": "Silent Mode"
                    }
                  ]
                },
                "setCloseMode": {
                  "title": "Closing Mode",
                  "type": "string",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId);"
                  },
                  "oneOf": [
                    {
                      "enum": [
                        "0"
                      ],
                      "title": "Performance Mode"
                    },
                    {
                      "enum": [
                        "1"
                      ],
                      "title": "Silent Mode"
                    }
                  ]
                },
                "silentModeSwitch": {
                  "title": "Enable Silent Mode Switches",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "maxRetry": {
                  "title": "Max Retries for BLE",
                  "type": "number",
                  "placeholder": "5",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
                  }
                },
                "maxRetries": {
                  "title": "Device Max Retries for OpenAPI",
                  "type": "number",
                  "placeholder": 5,
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
                  }
                },
                "delayBetweenRetries": {
                  "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                  "type": "number",
                  "placeholder": 3,
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
                  }
                },
                "mqttURL": {
                  "title": "MQTT URL (Device Specific)",
                  "type": "string",
                  "placeholder": "192.168.7.1",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));"
                  }
                },
                "mqttOptions": {
                  "title": "MQTT Options (Device Specific)",
                  "type": "string",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mqttURL && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));"
                  }
                },
                "mqttPubOptions": {
                  "title": "MQTT Pub Options (Device Specific)",
                  "type": "string",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mqttURL && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));"
                  }
                },
                "history": {
                  "title": "EVE History",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));"
                  }
                },
                "offline": {
                  "title": "Offline as Off",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
                  }
                },
                "firmware": {
                  "title": "Firmware Override",
                  "type": "string",
                  "placeholder": "1.2.8",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
                  }
                },
                "external": {
                  "title": "External Accessory",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
                  }
                },
                "logging": {
                  "title": "Device Logging Override Setting",
                  "type": "string",
                  "default": "standard",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
                  },
                  "oneOf": [
                    {
                      "title": "Debug Logging",
                      "enum": [
                        "debug"
                      ]
                    },
                    {
                      "title": "No Logging",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "title": "Standard Logging",
                      "enum": [
                        "standard"
                      ]
                    }
                  ]
                },
                "refreshRate": {
                  "title": "Device Refresh Rate",
                  "type": "number",
                  "placeholder": 360,
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
                  }
                },
                "updateRate": {
                  "title": "Update Rate",
                  "type": "number",
                  "minimum": 1,
                  "placeholder": 5,
                  "description": "Indicates the number of seconds before refreshing status while updating progress.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId);"
                  }
                },
                "pushRate": {
                  "title": "Device Push Rate",
                  "type": "number",
                  "placeholder": 360,
                  "condition": {
                    "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
                  }
                }
              }
            },
            "uniqueItems": true
          },
          "deviceConfig": {
            "type": "object",
            "properties": {
              "Humidifier": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Humidifiers",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_temperature": {
                    "title": "Hide Temperature Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Humidifier'].hide_device);"
                    }
                  },
                  "convertUnitTo": {
                    "title": "Convert Temperature Unit To",
                    "type": "string",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Humidifier'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Celsius",
                        "enum": [
                          "CELSIUS"
                        ]
                      },
                      {
                        "title": "Fahrenheit",
                        "enum": [
                          "FAHRENHEIT"
                        ]
                      }
                    ]
                  },
                  "set_minStep": {
                    "title": "Set Minimum Step",
                    "type": "number",
                    "placeholder": "1",
                    "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Humidifier'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Humidifier'] && !model.options.deviceConfig['Humidifier'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Humidifier'] && !model.options.deviceConfig['Humidifier'].hide_device && model.options.deviceConfig['Humidifier'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Humidifier'] && !model.options.deviceConfig['Humidifier'].hide_device && (model.options.deviceConfig['Humidifier'].connectionType === 'BLE' || model.options.deviceConfig['Humidifier'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Humidifiers",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Humidifier'] && !model.options.deviceConfig['Humidifier'].hide_device && (model.options.deviceConfig['Humidifier'].connectionType === 'OpenAPI' || model.options.deviceConfig['Humidifier'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Humidifier'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Humidifier'] && !model.options.deviceConfig['Humidifier'].hide_device && (model.options.deviceConfig['Humidifier'].connectionType === 'BLE' || model.options.deviceConfig['Humidifier'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Humidifier'] && !model.options.deviceConfig['Humidifier'].hide_device && (model.options.deviceConfig['Humidifier'].connectionType === 'OpenAPI' || model.options.deviceConfig['Humidifier'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Humidifier'] && !model.options.deviceConfig['Humidifier'].hide_device && (model.options.deviceConfig['Humidifier'].connectionType === 'OpenAPI' || model.options.deviceConfig['Humidifier'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Humidifier'] && !model.options.deviceConfig['Humidifier'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Humidifier'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Humidifier'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Humidifier'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Humidifier'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Humidifier'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Humidifier'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Humidifier'].hide_device);"
                    }
                  }
                }
              },
              "Hub 2": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Hub 2s",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_temperature": {
                    "title": "Hide Temperature Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub 2'] && !model.options.deviceConfig['Hub 2'].hide_device);"
                    }
                  },
                  "convertUnitTo": {
                    "title": "Convert Temperature Unit To",
                    "type": "string",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub 2'] && !model.options.deviceConfig['Hub 2'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Celsius",
                        "enum": [
                          "CELSIUS"
                        ]
                      },
                      {
                        "title": "Fahrenheit",
                        "enum": [
                          "FAHRENHEIT"
                        ]
                      }
                    ]
                  },
                  "hide_humidity": {
                    "title": "Hide Humidity Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub 2'] && !model.options.deviceConfig['Hub 2'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub 2'] && !model.options.deviceConfig['Hub 2'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub 2'] && !model.options.deviceConfig['Hub 2'].hide_device && model.options.deviceConfig['Hub 2'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub 2'] && !model.options.deviceConfig['Hub 2'].hide_device && (model.options.deviceConfig['Hub 2'].connectionType === 'BLE' || model.options.deviceConfig['Hub 2'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Hub 2s",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub 2'] && !model.options.deviceConfig['Hub 2'].hide_device && (model.options.deviceConfig['Hub 2'].connectionType === 'OpenAPI' || model.options.deviceConfig['Hub 2'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub 2'] && !model.options.deviceConfig['Hub 2'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub 2'] && !model.options.deviceConfig['Hub 2'].hide_device && (model.options.deviceConfig['Hub 2'].connectionType === 'BLE' || model.options.deviceConfig['Hub 2'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub 2'] && !model.options.deviceConfig['Hub 2'].hide_device && (model.options.deviceConfig['Hub 2'].connectionType === 'OpenAPI' || model.options.deviceConfig['Hub 2'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub 2'] && !model.options.deviceConfig['Hub 2'].hide_device && (model.options.deviceConfig['Hub 2'].connectionType === 'OpenAPI' || model.options.deviceConfig['Hub 2'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub 2'] && !model.options.deviceConfig['Hub 2'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub 2'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub 2'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub 2'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub 2'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub 2'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub 2'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub 2'].hide_device);"
                    }
                  }
                }
              },
              "Bot": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Bots",
                    "type": "boolean",
                    "description": "If true, all Bot devices will be removed or hidden from HomeKit."
                  },
                  "mode": {
                    "title": "Bot Mode",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Default",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "Multi-Press",
                        "enum": [
                          "multipress"
                        ]
                      },
                      {
                        "title": "Press",
                        "enum": [
                          "press"
                        ]
                      },
                      {
                        "title": "Switch",
                        "enum": [
                          "switch"
                        ]
                      }
                    ]
                  },
                  "type": {
                    "title": "What Type of Device do you want to display in the Home App?",
                    "type": "string",
                    "default": "",
                    "placeholder": "outlet",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Default",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "Door",
                        "enum": [
                          "door"
                        ]
                      },
                      {
                        "title": "Fan",
                        "enum": [
                          "fan"
                        ]
                      },
                      {
                        "title": "Faucet",
                        "enum": [
                          "faucet"
                        ]
                      },
                      {
                        "title": "Garage Door",
                        "enum": [
                          "garagedoor"
                        ]
                      },
                      {
                        "title": "Lock",
                        "enum": [
                          "lock"
                        ]
                      },
                      {
                        "title": "Outlet",
                        "enum": [
                          "outlet"
                        ]
                      },
                      {
                        "title": "Stateful Programmable Switch (Only Works in 3rd Party Home Apps)",
                        "enum": [
                          "stateful"
                        ]
                      },
                      {
                        "title": "Switch",
                        "enum": [
                          "switch"
                        ]
                      },
                      {
                        "title": "Window",
                        "enum": [
                          "window"
                        ]
                      },
                      {
                        "title": "Window Covering",
                        "enum": [
                          "windowcovering"
                        ]
                      }
                    ]
                  },
                  "doublePress": {
                    "title": "How many presses do you want to simulate?",
                    "type": "number",
                    "placeholder": "2",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device);"
                    }
                  },
                  "pushRatePress": {
                    "title": "Double Press Push Rate",
                    "type": "number",
                    "placeholder": "15",
                    "description": "Indicates the number of seconds between pushes for double presses to SwitchBot API",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device);"
                    }
                  },
                  "allowPush": {
                    "title": "Allow Changes to Be Pushed",
                    "description": "If set to true, this will allow commands to be sent even if device state is already in state that is being pushed.",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device && model.options.deviceConfig['Bot'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device && (model.options.deviceConfig['Bot'].connectionType === 'BLE' || model.options.deviceConfig['Bot'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Hub 2s",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device && (model.options.deviceConfig['Bot'].connectionType === 'OpenAPI' || model.options.deviceConfig['Bot'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device && (model.options.deviceConfig['Bot'].connectionType === 'BLE' || model.options.deviceConfig['Bot'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device && (model.options.deviceConfig['Bot'].connectionType === 'OpenAPI' || model.options.deviceConfig['Bot'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device && (model.options.deviceConfig['Bot'].connectionType === 'OpenAPI' || model.options.deviceConfig['Bot'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Bot'] && !model.options.deviceConfig['Bot'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Bot'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Bot'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Bot'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Bot'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Bot'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Bot'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Bot'].hide_device);"
                    }
                  }
                }
              },
              "Relay Switch 1": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Bots",
                    "type": "boolean",
                    "description": "If true, all Bot devices will be removed or hidden from HomeKit."
                  },
                  "type": {
                    "title": "What Type of Device do you want to display in the Home App?",
                    "type": "string",
                    "default": "",
                    "placeholder": "outlet",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1'] && !model.options.deviceConfig['Relay Switch 1'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Default",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "Door",
                        "enum": [
                          "door"
                        ]
                      },
                      {
                        "title": "Fan",
                        "enum": [
                          "fan"
                        ]
                      },
                      {
                        "title": "Faucet",
                        "enum": [
                          "faucet"
                        ]
                      },
                      {
                        "title": "Garage Door",
                        "enum": [
                          "garagedoor"
                        ]
                      },
                      {
                        "title": "Lock",
                        "enum": [
                          "lock"
                        ]
                      },
                      {
                        "title": "Outlet",
                        "enum": [
                          "outlet"
                        ]
                      },
                      {
                        "title": "Stateful Programmable Switch (Only Works in 3rd Party Home Apps)",
                        "enum": [
                          "stateful"
                        ]
                      },
                      {
                        "title": "Switch",
                        "enum": [
                          "switch"
                        ]
                      },
                      {
                        "title": "Window",
                        "enum": [
                          "window"
                        ]
                      },
                      {
                        "title": "Window Covering",
                        "enum": [
                          "windowcovering"
                        ]
                      }
                    ]
                  },
                  "allowPush": {
                    "title": "Allow Changes to Be Pushed",
                    "description": "If set to true, this will allow commands to be sent even if device state is already in state that is being pushed.",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1'] && !model.options.deviceConfig['Relay Switch 1'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1'] && !model.options.deviceConfig['Relay Switch 1'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1'] && !model.options.deviceConfig['Relay Switch 1'].hide_device && model.options.deviceConfig['Relay Switch 1'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1'] && !model.options.deviceConfig['Relay Switch 1'].hide_device && (model.options.deviceConfig['Relay Switch 1'].connectionType === 'BLE' || model.options.deviceConfig['Relay Switch 1'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Hub 2s",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1'] && !model.options.deviceConfig['Relay Switch 1'].hide_device && (model.options.deviceConfig['Relay Switch 1'].connectionType === 'OpenAPI' || model.options.deviceConfig['Relay Switch 1'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1'] && !model.options.deviceConfig['Relay Switch 1'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1'] && !model.options.deviceConfig['Relay Switch 1'].hide_device && (model.options.deviceConfig['Relay Switch 1'].connectionType === 'BLE' || model.options.deviceConfig['Relay Switch 1'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1'] && !model.options.deviceConfig['Relay Switch 1'].hide_device && (model.options.deviceConfig['Relay Switch 1'].connectionType === 'OpenAPI' || model.options.deviceConfig['Relay Switch 1'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1'] && !model.options.deviceConfig['Relay Switch 1'].hide_device && (model.options.deviceConfig['Relay Switch 1'].connectionType === 'OpenAPI' || model.options.deviceConfig['Relay Switch 1'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1'] && !model.options.deviceConfig['Relay Switch 1'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1'].hide_device);"
                    }
                  }
                }
              },
              "Relay Switch 1PM": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Bots",
                    "type": "boolean",
                    "description": "If true, all Bot devices will be removed or hidden from HomeKit."
                  },
                  "type": {
                    "title": "What Type of Device do you want to display in the Home App?",
                    "type": "string",
                    "default": "",
                    "placeholder": "outlet",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1PM'] && !model.options.deviceConfig['Relay Switch 1PM'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Default",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "Door",
                        "enum": [
                          "door"
                        ]
                      },
                      {
                        "title": "Fan",
                        "enum": [
                          "fan"
                        ]
                      },
                      {
                        "title": "Faucet",
                        "enum": [
                          "faucet"
                        ]
                      },
                      {
                        "title": "Garage Door",
                        "enum": [
                          "garagedoor"
                        ]
                      },
                      {
                        "title": "Lock",
                        "enum": [
                          "lock"
                        ]
                      },
                      {
                        "title": "Outlet",
                        "enum": [
                          "outlet"
                        ]
                      },
                      {
                        "title": "Stateful Programmable Switch (Only Works in 3rd Party Home Apps)",
                        "enum": [
                          "stateful"
                        ]
                      },
                      {
                        "title": "Switch",
                        "enum": [
                          "switch"
                        ]
                      },
                      {
                        "title": "Window",
                        "enum": [
                          "window"
                        ]
                      },
                      {
                        "title": "Window Covering",
                        "enum": [
                          "windowcovering"
                        ]
                      }
                    ]
                  },
                  "allowPush": {
                    "title": "Allow Changes to Be Pushed",
                    "description": "If set to true, this will allow commands to be sent even if device state is already in state that is being pushed.",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1PM'] && !model.options.deviceConfig['Relay Switch 1PM'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1PM'] && !model.options.deviceConfig['Relay Switch 1PM'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1PM'] && !model.options.deviceConfig['Relay Switch 1PM'].hide_device && model.options.deviceConfig['Relay Switch 1PM'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1PM'] && !model.options.deviceConfig['Relay Switch 1PM'].hide_device && (model.options.deviceConfig['Relay Switch 1PM'].connectionType === 'BLE' || model.options.deviceConfig['Relay Switch 1PM'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Hub 2s",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1PM'] && !model.options.deviceConfig['Relay Switch 1PM'].hide_device && (model.options.deviceConfig['Relay Switch 1PM'].connectionType === 'OpenAPI' || model.options.deviceConfig['Relay Switch 1PM'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1PM'] && !model.options.deviceConfig['Relay Switch 1PM'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1PM'] && !model.options.deviceConfig['Relay Switch 1PM'].hide_device && (model.options.deviceConfig['Relay Switch 1PM'].connectionType === 'BLE' || model.options.deviceConfig['Relay Switch 1PM'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1PM'] && !model.options.deviceConfig['Relay Switch 1PM'].hide_device && (model.options.deviceConfig['Relay Switch 1PM'].connectionType === 'OpenAPI' || model.options.deviceConfig['Relay Switch 1PM'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1PM'] && !model.options.deviceConfig['Relay Switch 1PM'].hide_device && (model.options.deviceConfig['Relay Switch 1PM'].connectionType === 'OpenAPI' || model.options.deviceConfig['Relay Switch 1PM'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Relay Switch 1PM'] && !model.options.deviceConfig['Relay Switch 1PM'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1PM'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1PM'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1PM'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1PM'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1PM'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1PM'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Relay Switch 1PM'].hide_device);"
                    }
                  }
                }
              },
              "Meter": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Meters",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_temperature": {
                    "title": "Hide Temperature Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter'] && !model.options.deviceConfig['Meter'].hide_device);"
                    }
                  },
                  "convertUnitTo": {
                    "title": "Convert Temperature Unit To",
                    "type": "string",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter'] && !model.options.deviceConfig['Meter'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Celsius",
                        "enum": [
                          "CELSIUS"
                        ]
                      },
                      {
                        "title": "Fahrenheit",
                        "enum": [
                          "FAHRENHEIT"
                        ]
                      }
                    ]
                  },
                  "hide_humidity": {
                    "title": "Hide Humidity Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter'] && !model.options.deviceConfig['Meter'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter'] && !model.options.deviceConfig['Meter'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter'] && !model.options.deviceConfig['Meter'].hide_device && model.options.deviceConfig['Meter'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter'] && !model.options.deviceConfig['Meter'].hide_device && (model.options.deviceConfig['Meter'].connectionType === 'BLE' || model.options.deviceConfig['Meter'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Meters",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter'] && !model.options.deviceConfig['Meter'].hide_device && (model.options.deviceConfig['Meter'].connectionType === 'OpenAPI' || model.options.deviceConfig['Meter'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter'] && !model.options.deviceConfig['Meter'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter'] && !model.options.deviceConfig['Meter'].hide_device && (model.options.deviceConfig['Meter'].connectionType === 'BLE' || model.options.deviceConfig['Meter'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter'] && !model.options.deviceConfig['Meter'].hide_device && (model.options.deviceConfig['Meter'].connectionType === 'OpenAPI' || model.options.deviceConfig['Meter'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter'] && !model.options.deviceConfig['Meter'].hide_device && (model.options.deviceConfig['Meter'].connectionType === 'OpenAPI' || model.options.deviceConfig['Meter'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter'] && !model.options.deviceConfig['Meter'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter'].hide_device);"
                    }
                  }
                }
              },
              "MeterPlus": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Meter Pluses",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_temperature": {
                    "title": "Hide Temperature Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPlus'] && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    }
                  },
                  "convertUnitTo": {
                    "title": "Convert Temperature Unit To",
                    "type": "string",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPlus'] && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Celsius",
                        "enum": [
                          "CELSIUS"
                        ]
                      },
                      {
                        "title": "Fahrenheit",
                        "enum": [
                          "FAHRENHEIT"
                        ]
                      }
                    ]
                  },
                  "hide_humidity": {
                    "title": "Hide Humidity Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPlus'] && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPlus'] && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPlus'] && !model.options.deviceConfig['MeterPlus'].hide_device && model.options.deviceConfig['MeterPlus'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPlus'] && !model.options.deviceConfig['MeterPlus'].hide_device && (model.options.deviceConfig['MeterPlus'].connectionType === 'BLE' || model.options.deviceConfig['MeterPlus'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Meter Pluses",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPlus'] && !model.options.deviceConfig['MeterPlus'].hide_device && (model.options.deviceConfig['MeterPlus'].connectionType === 'OpenAPI' || model.options.deviceConfig['MeterPlus'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPlus'] && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPlus'] && !model.options.deviceConfig['MeterPlus'].hide_device && (model.options.deviceConfig['MeterPlus'].connectionType === 'BLE' || model.options.deviceConfig['MeterPlus'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPlus'] && !model.options.deviceConfig['MeterPlus'].hide_device && (model.options.deviceConfig['MeterPlus'].connectionType === 'OpenAPI' || model.options.deviceConfig['MeterPlus'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPlus'] && !model.options.deviceConfig['MeterPlus'].hide_device && (model.options.deviceConfig['MeterPlus'].connectionType === 'OpenAPI' || model.options.deviceConfig['MeterPlus'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPlus'] && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPlus'].hide_device);"
                    }
                  }
                }
              },
              "Meter Plus (JP)": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Hub Meter Plus (JP)s",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_temperature": {
                    "title": "Hide Temperature Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter Plus (JP)'] && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    }
                  },
                  "convertUnitTo": {
                    "title": "Convert Temperature Unit To",
                    "type": "string",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter Plus (JP)'] && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Celsius",
                        "enum": [
                          "CELSIUS"
                        ]
                      },
                      {
                        "title": "Fahrenheit",
                        "enum": [
                          "FAHRENHEIT"
                        ]
                      }
                    ]
                  },
                  "hide_humidity": {
                    "title": "Hide Humidity Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter Plus (JP)'] && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter Plus (JP)'] && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter Plus (JP)'] && !model.options.deviceConfig['Meter Plus (JP)'].hide_device && model.options.deviceConfig['Meter Plus (JP)'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter Plus (JP)'] && !model.options.deviceConfig['Meter Plus (JP)'].hide_device && (model.options.deviceConfig['Meter Plus (JP)'].connectionType === 'BLE' || model.options.deviceConfig['Meter Plus (JP)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Meter Plus (JP)s",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter Plus (JP)'] && !model.options.deviceConfig['Meter Plus (JP)'].hide_device && (model.options.deviceConfig['Meter Plus (JP)'].connectionType === 'OpenAPI' || model.options.deviceConfig['Meter Plus (JP)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter Plus (JP)'] && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter Plus (JP)'] && !model.options.deviceConfig['Meter Plus (JP)'].hide_device && (model.options.deviceConfig['Meter Plus (JP)'].connectionType === 'BLE' || model.options.deviceConfig['Meter Plus (JP)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter Plus (JP)'] && !model.options.deviceConfig['Meter Plus (JP)'].hide_device && (model.options.deviceConfig['Meter Plus (JP)'].connectionType === 'OpenAPI' || model.options.deviceConfig['Meter Plus (JP)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter Plus (JP)'] && !model.options.deviceConfig['Meter Plus (JP)'].hide_device && (model.options.deviceConfig['Meter Plus (JP)'].connectionType === 'OpenAPI' || model.options.deviceConfig['Meter Plus (JP)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Meter Plus (JP)'] && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Meter Plus (JP)'].hide_device);"
                    }
                  }
                }
              },
              "MeterPro": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Meter Pluses",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_temperature": {
                    "title": "Hide Temperature Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro'] && !model.options.deviceConfig['MeterPro'].hide_device);"
                    }
                  },
                  "convertUnitTo": {
                    "title": "Convert Temperature Unit To",
                    "type": "string",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro'] && !model.options.deviceConfig['MeterPro'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Celsius",
                        "enum": [
                          "CELSIUS"
                        ]
                      },
                      {
                        "title": "Fahrenheit",
                        "enum": [
                          "FAHRENHEIT"
                        ]
                      }
                    ]
                  },
                  "hide_humidity": {
                    "title": "Hide Humidity Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro'] && !model.options.deviceConfig['MeterPro'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro'] && !model.options.deviceConfig['MeterPro'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro'] && !model.options.deviceConfig['MeterPro'].hide_device && model.options.deviceConfig['MeterPlus'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro'] && !model.options.deviceConfig['MeterPro'].hide_device && (model.options.deviceConfig['MeterPlus'].connectionType === 'BLE' || model.options.deviceConfig['MeterPro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Meter Pluses",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro'] && !model.options.deviceConfig['MeterPro'].hide_device && (model.options.deviceConfig['MeterPlus'].connectionType === 'OpenAPI' || model.options.deviceConfig['MeterPro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro'] && !model.options.deviceConfig['MeterPro'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro'] && !model.options.deviceConfig['MeterPro'].hide_device && (model.options.deviceConfig['MeterPro'].connectionType === 'BLE' || model.options.deviceConfig['MeterPro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro'] && !model.options.deviceConfig['MeterPro'].hide_device && (model.options.deviceConfig['MeterPro'].connectionType === 'OpenAPI' || model.options.deviceConfig['MeterPro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro'] && !model.options.deviceConfig['MeterPro'].hide_device && (model.options.deviceConfig['MeterPro'].connectionType === 'OpenAPI' || model.options.deviceConfig['MeterPro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro'] && !model.options.deviceConfig['MeterPro'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro'].hide_device);"
                    }
                  }
                }
              },
              "MeterPro(CO2)": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Meter Pluses",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_temperature": {
                    "title": "Hide Temperature Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro(CO2)'] && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    }
                  },
                  "convertUnitTo": {
                    "title": "Convert Temperature Unit To",
                    "type": "string",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro(CO2)'] && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Celsius",
                        "enum": [
                          "CELSIUS"
                        ]
                      },
                      {
                        "title": "Fahrenheit",
                        "enum": [
                          "FAHRENHEIT"
                        ]
                      }
                    ]
                  },
                  "hide_humidity": {
                    "title": "Hide Humidity Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro(CO2)'] && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro(CO2)'] && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro(CO2)'] && !model.options.deviceConfig['MeterPro(CO2)'].hide_device && model.options.deviceConfig['MeterPro(CO2)'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro(CO2)'] && !model.options.deviceConfig['MeterPro(CO2)'].hide_device && (model.options.deviceConfig['MeterPro(CO2)'].connectionType === 'BLE' || model.options.deviceConfig['MeterPro(CO2)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Meter Pluses",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro(CO2)'] && !model.options.deviceConfig['MeterPro(CO2)'].hide_device && (model.options.deviceConfig['MeterPro(CO2)'].connectionType === 'OpenAPI' || model.options.deviceConfig['MeterPro(CO2)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro(CO2)'] && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro(CO2)'] && !model.options.deviceConfig['MeterPro(CO2)'].hide_device && (model.options.deviceConfig['MeterPro(CO2)'].connectionType === 'BLE' || model.options.deviceConfig['MeterPro(CO2)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro(CO2)'] && !model.options.deviceConfig['MeterPro(CO2)'].hide_device && (model.options.deviceConfig['MeterPro(CO2)'].connectionType === 'OpenAPI' || model.options.deviceConfig['MeterPro(CO2)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro(CO2)'] && !model.options.deviceConfig['MeterPro(CO2)'].hide_device && (model.options.deviceConfig['MeterPro(CO2)'].connectionType === 'OpenAPI' || model.options.deviceConfig['MeterPro(CO2)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['MeterPro(CO2)'] && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['MeterPro(CO2)'].hide_device);"
                    }
                  }
                }
              },
              "WoIOSensor": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All WoIOSensors",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_temperature": {
                    "title": "Hide Temperature Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoIOSensor'] && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    }
                  },
                  "convertUnitTo": {
                    "title": "Convert Temperature Unit To",
                    "type": "string",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoIOSensor'] && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Celsius",
                        "enum": [
                          "CELSIUS"
                        ]
                      },
                      {
                        "title": "Fahrenheit",
                        "enum": [
                          "FAHRENHEIT"
                        ]
                      }
                    ]
                  },
                  "hide_humidity": {
                    "title": "Hide Humidity Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoIOSensor'] && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoIOSensor'] && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoIOSensor'] && !model.options.deviceConfig['WoIOSensor'].hide_device && model.options.deviceConfig['WoIOSensor'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoIOSensor'] && !model.options.deviceConfig['WoIOSensor'].hide_device && (model.options.deviceConfig['WoIOSensor'].connectionType === 'BLE' || model.options.deviceConfig['WoIOSensor'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all WoIOSensors",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoIOSensor'] && !model.options.deviceConfig['WoIOSensor'].hide_device && (model.options.deviceConfig['WoIOSensor'].connectionType === 'OpenAPI' || model.options.deviceConfig['WoIOSensor'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoIOSensor'] && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoIOSensor'] && !model.options.deviceConfig['WoIOSensor'].hide_device && (model.options.deviceConfig['WoIOSensor'].connectionType === 'BLE' || model.options.deviceConfig['WoIOSensor'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoIOSensor'] && !model.options.deviceConfig['WoIOSensor'].hide_device && (model.options.deviceConfig['WoIOSensor'].connectionType === 'OpenAPI' || model.options.deviceConfig['WoIOSensor'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoIOSensor'] && !model.options.deviceConfig['WoIOSensor'].hide_device && (model.options.deviceConfig['WoIOSensor'].connectionType === 'OpenAPI' || model.options.deviceConfig['WoIOSensor'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoIOSensor'] && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoIOSensor'].hide_device);"
                    }
                  }
                }
              },
              "Water Detector": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Water Detectors",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_leak": {
                    "title": "Hide Water Detector's Leak Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Water Detector'].hide_device && model.options.deviceConfig['Water Detector'].configDeviceType === 'Water Detector' && model.options.deviceConfig['Water Detector'].deviceId);"
                    }
                  },
                  "dry": {
                    "title": "Water Detector's Dry Alert",
                    "type": "boolean",
                    "description": "If true, the Water Detector will send an alert when it is dry.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Water Detector'].hide_device && model.options.deviceConfig['Water Detector'].configDeviceType === 'Water Detector' && model.options.deviceConfig['Water Detector'].deviceId);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && model.options.deviceConfig['Water Detector'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'BLE' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Water Detectors",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'OpenAPI' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'BLE' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'OpenAPI' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'OpenAPI' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  }
                }
              },
              "Motion Sensor": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Motion Sensors",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_lightsensor": {
                    "title": "Hide Light Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Motion Sensor'].hide_device);"
                    }
                  },
                  "set_minlux": {
                    "title": "Set Min Lux",
                    "type": "number",
                    "placeholder": "1",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Motion Sensor'].hide_device);"
                    }
                  },
                  "set_maxlux": {
                    "title": "Set Max Lux",
                    "type": "number",
                    "placeholder": "6001",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Motion Sensor'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Motion Sensor'] && !model.options.deviceConfig['Motion Sensor'].hide_device && model.options.deviceConfig['Motion Sensor'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'BLE' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Motion Sensors",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'OpenAPI' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'BLE' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'OpenAPI' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'OpenAPI' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
                    }
                  }
                }
              },
              "Contact Sensor": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Contact Sensors",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_lightsensor": {
                    "title": "Hide Light Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    }
                  },
                  "set_minlux": {
                    "title": "Set Min Lux",
                    "type": "number",
                    "placeholder": "1",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    }
                  },
                  "set_maxlux": {
                    "title": "Set Max Lux",
                    "type": "number",
                    "placeholder": "6001",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    }
                  },
                  "hide_motionsensor": {
                    "title": "Hide Contact Sensor's Motion Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Contact Sensor'].hide_device && model.options.deviceConfig['Contact Sensor'].configDeviceType === 'Contact Sensor' && model.options.deviceConfig['Contact Sensor'].deviceId);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Contact Sensor'] && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Contact Sensor'] && !model.options.deviceConfig['Contact Sensor'].hide_device && model.options.deviceConfig['Contact Sensor'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Contact Sensor'] && !model.options.deviceConfig['Contact Sensor'].hide_device && (model.options.deviceConfig['Contact Sensor'].connectionType === 'BLE' || model.options.deviceConfig['Contact Sensor'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Contact Sensors",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Contact Sensor'] && !model.options.deviceConfig['Contact Sensor'].hide_device && (model.options.deviceConfig['Contact Sensor'].connectionType === 'OpenAPI' || model.options.deviceConfig['Contact Sensor'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Contact Sensor'] && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Contact Sensor'] && !model.options.deviceConfig['Contact Sensor'].hide_device && (model.options.deviceConfig['Contact Sensor'].connectionType === 'BLE' || model.options.deviceConfig['Contact Sensor'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Contact Sensor'] && !model.options.deviceConfig['Contact Sensor'].hide_device && (model.options.deviceConfig['Contact Sensor'].connectionType === 'OpenAPI' || model.options.deviceConfig['Contact Sensor'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Contact Sensor'] && !model.options.deviceConfig['Contact Sensor'].hide_device && (model.options.deviceConfig['Contact Sensor'].connectionType === 'OpenAPI' || model.options.deviceConfig['Contact Sensor'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Contact Sensor'] && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Contact Sensor'].hide_device);"
                    }
                  }
                }
              },
              "Curtain": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Curtains",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "disable_group": {
                    "title": "Disable Grouping",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "hide_lightsensor": {
                    "title": "Hide Light Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "set_minlux": {
                    "title": "Set Min Lux",
                    "type": "number",
                    "placeholder": "1",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "set_maxlux": {
                    "title": "Set Max Lux",
                    "type": "number",
                    "placeholder": "6001",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "set_min": {
                    "title": "Set Minimum Open State",
                    "type": "number",
                    "placeholder": "0",
                    "description": "Sets the minimum percentage before needed to set to Open.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "set_max": {
                    "title": "Set Maximum Close State",
                    "type": "number",
                    "placeholder": "100",
                    "description": "Sets the maximum percentage before needing to set to Closed.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "set_minStep": {
                    "title": "Set Minimum Step",
                    "type": "number",
                    "placeholder": "1",
                    "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "setOpenMode": {
                    "title": "Opening Mode",
                    "type": "string",
                    "oneOf": [
                      {
                        "enum": [
                          "0"
                        ],
                        "title": "Performance Mode"
                      },
                      {
                        "enum": [
                          "1"
                        ],
                        "title": "Silent Mode"
                      }
                    ],
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "setCloseMode": {
                    "title": "Closing Mode",
                    "type": "string",
                    "oneOf": [
                      {
                        "enum": [
                          "0"
                        ],
                        "title": "Performance Mode"
                      },
                      {
                        "enum": [
                          "1"
                        ],
                        "title": "Silent Mode"
                      }
                    ],
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "silentModeSwitch": {
                    "title": "Enable Silent Mode Switches",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain'] && !model.options.deviceConfig['Curtain'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain'] && !model.options.deviceConfig['Curtain'].hide_device && model.options.deviceConfig['Curtain'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain'] && !model.options.deviceConfig['Curtain'].hide_device && (model.options.deviceConfig['Curtain'].connectionType === 'BLE' || model.options.deviceConfig['Curtain'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Curtains",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain'] && !model.options.deviceConfig['Curtain'].hide_device && (model.options.deviceConfig['Curtain'].connectionType === 'OpenAPI' || model.options.deviceConfig['Curtain'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain'] && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain'] && !model.options.deviceConfig['Curtain'].hide_device && (model.options.deviceConfig['Curtain'].connectionType === 'BLE' || model.options.deviceConfig['Curtain'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain'] && !model.options.deviceConfig['Curtain'].hide_device && (model.options.deviceConfig['Curtain'].connectionType === 'OpenAPI' || model.options.deviceConfig['Curtain'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain'] && !model.options.deviceConfig['Curtain'].hide_device && (model.options.deviceConfig['Curtain'].connectionType === 'OpenAPI' || model.options.deviceConfig['Curtain'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain'] && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain'].hide_device);"
                    }
                  }
                }
              },
              "Curtain3": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Curtain 3s",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "disable_group": {
                    "title": "Disable Grouping",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "hide_lightsensor": {
                    "title": "Hide Light Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "set_minlux": {
                    "title": "Set Min Lux",
                    "type": "number",
                    "placeholder": "1",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "set_maxlux": {
                    "title": "Set Max Lux",
                    "type": "number",
                    "placeholder": "6001",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "set_min": {
                    "title": "Set Minimum Open State",
                    "type": "number",
                    "placeholder": "0",
                    "description": "Sets the minimum percentage before needed to set to Open.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "set_max": {
                    "title": "Set Maximum Close State",
                    "type": "number",
                    "placeholder": "100",
                    "description": "Sets the maximum percentage before needing to set to Closed.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "set_minStep": {
                    "title": "Set Minimum Step",
                    "type": "number",
                    "placeholder": "1",
                    "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "setOpenMode": {
                    "title": "Opening Mode",
                    "type": "string",
                    "oneOf": [
                      {
                        "enum": [
                          "0"
                        ],
                        "title": "Performance Mode"
                      },
                      {
                        "enum": [
                          "1"
                        ],
                        "title": "Silent Mode"
                      }
                    ],
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "setCloseMode": {
                    "title": "Closing Mode",
                    "type": "string",
                    "oneOf": [
                      {
                        "enum": [
                          "0"
                        ],
                        "title": "Performance Mode"
                      },
                      {
                        "enum": [
                          "1"
                        ],
                        "title": "Silent Mode"
                      }
                    ],
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "silentModeSwitch": {
                    "title": "Enable Silent Mode Switches",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain3'] && !model.options.deviceConfig['Curtain3'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain3'] && !model.options.deviceConfig['Curtain3'].hide_device && model.options.deviceConfig['Curtain3'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain3'] && !model.options.deviceConfig['Curtain3'].hide_device && (model.options.deviceConfig['Curtain3'].connectionType === 'BLE' || model.options.deviceConfig['Curtain3'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Curtain3s",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain3'] && !model.options.deviceConfig['Curtain3'].hide_device && (model.options.deviceConfig['Curtain3'].connectionType === 'OpenAPI' || model.options.deviceConfig['Curtain3'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain3'] && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain3'] && !model.options.deviceConfig['Curtain3'].hide_device && (model.options.deviceConfig['Curtain3'].connectionType === 'BLE' || model.options.deviceConfig['Curtain3'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain3'] && !model.options.deviceConfig['Curtain3'].hide_device && (model.options.deviceConfig['Curtain3'].connectionType === 'OpenAPI' || model.options.deviceConfig['Curtain3'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain3'] && !model.options.deviceConfig['Curtain3'].hide_device && (model.options.deviceConfig['Curtain3'].connectionType === 'OpenAPI' || model.options.deviceConfig['Curtain3'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Curtain3'] && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Curtain3'].hide_device);"
                    }
                  }
                }
              },
              "WoRollerShade": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All WoRollerShades",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "disable_group": {
                    "title": "Disable Grouping",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "hide_lightsensor": {
                    "title": "Hide Light Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "set_minlux": {
                    "title": "Set Min Lux",
                    "type": "number",
                    "placeholder": "1",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "set_maxlux": {
                    "title": "Set Max Lux",
                    "type": "number",
                    "placeholder": "6001",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "set_min": {
                    "title": "Set Minimum Open State",
                    "type": "number",
                    "placeholder": "0",
                    "description": "Sets the minimum percentage before needed to set to Open.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "set_max": {
                    "title": "Set Maximum Close State",
                    "type": "number",
                    "placeholder": "100",
                    "description": "Sets the maximum percentage before needing to set to Closed.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "set_minStep": {
                    "title": "Set Minimum Step",
                    "type": "number",
                    "placeholder": "1",
                    "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "setOpenMode": {
                    "title": "Opening Mode",
                    "type": "string",
                    "oneOf": [
                      {
                        "enum": [
                          "0"
                        ],
                        "title": "Performance Mode"
                      },
                      {
                        "enum": [
                          "1"
                        ],
                        "title": "Silent Mode"
                      }
                    ],
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "setCloseMode": {
                    "title": "Closing Mode",
                    "type": "string",
                    "oneOf": [
                      {
                        "enum": [
                          "0"
                        ],
                        "title": "Performance Mode"
                      },
                      {
                        "enum": [
                          "1"
                        ],
                        "title": "Silent Mode"
                      }
                    ],
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "silentModeSwitch": {
                    "title": "Enable Silent Mode Switches",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoRollerShade'] && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoRollerShade'] && !model.options.deviceConfig['WoRollerShade'].hide_device && model.options.deviceConfig['WoRollerShade'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoRollerShade'] && !model.options.deviceConfig['WoRollerShade'].hide_device && (model.options.deviceConfig['WoRollerShade'].connectionType === 'BLE' || model.options.deviceConfig['WoRollerShade'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all WoRollerShades",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoRollerShade'] && !model.options.deviceConfig['WoRollerShade'].hide_device && (model.options.deviceConfig['WoRollerShade'].connectionType === 'OpenAPI' || model.options.deviceConfig['WoRollerShade'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoRollerShade'] && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoRollerShade'] && !model.options.deviceConfig['WoRollerShade'].hide_device && (model.options.deviceConfig['WoRollerShade'].connectionType === 'BLE' || model.options.deviceConfig['WoRollerShade'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoRollerShade'] && !model.options.deviceConfig['WoRollerShade'].hide_device && (model.options.deviceConfig['WoRollerShade'].connectionType === 'OpenAPI' || model.options.deviceConfig['WoRollerShade'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoRollerShade'] && !model.options.deviceConfig['WoRollerShade'].hide_device && (model.options.deviceConfig['WoRollerShade'].connectionType === 'OpenAPI' || model.options.deviceConfig['WoRollerShade'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoRollerShade'] && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoRollerShade'].hide_device);"
                    }
                  }
                }
              },
              "Roller Shade": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Roller Shades",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "disable_group": {
                    "title": "Disable Grouping",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "hide_lightsensor": {
                    "title": "Hide Light Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "set_minlux": {
                    "title": "Set Min Lux",
                    "type": "number",
                    "placeholder": "1",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "set_maxlux": {
                    "title": "Set Max Lux",
                    "type": "number",
                    "placeholder": "6001",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "set_min": {
                    "title": "Set Minimum Open State",
                    "type": "number",
                    "placeholder": "0",
                    "description": "Sets the minimum percentage before needed to set to Open.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "set_max": {
                    "title": "Set Maximum Close State",
                    "type": "number",
                    "placeholder": "100",
                    "description": "Sets the maximum percentage before needing to set to Closed.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "set_minStep": {
                    "title": "Set Minimum Step",
                    "type": "number",
                    "placeholder": "1",
                    "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "setOpenMode": {
                    "title": "Opening Mode",
                    "type": "string",
                    "oneOf": [
                      {
                        "enum": [
                          "0"
                        ],
                        "title": "Performance Mode"
                      },
                      {
                        "enum": [
                          "1"
                        ],
                        "title": "Silent Mode"
                      }
                    ],
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "setCloseMode": {
                    "title": "Closing Mode",
                    "type": "string",
                    "oneOf": [
                      {
                        "enum": [
                          "0"
                        ],
                        "title": "Performance Mode"
                      },
                      {
                        "enum": [
                          "1"
                        ],
                        "title": "Silent Mode"
                      }
                    ],
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "silentModeSwitch": {
                    "title": "Enable Silent Mode Switches",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Roller Shade'] && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Roller Shade'] && !model.options.deviceConfig['Roller Shade'].hide_device && model.options.deviceConfig['Roller Shade'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Roller Shade'] && !model.options.deviceConfig['Roller Shade'].hide_device && (model.options.deviceConfig['Roller Shade'].connectionType === 'BLE' || model.options.deviceConfig['Roller Shade'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Roller Shades",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Roller Shade'] && !model.options.deviceConfig['Roller Shade'].hide_device && (model.options.deviceConfig['Roller Shade'].connectionType === 'OpenAPI' || model.options.deviceConfig['Roller Shade'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Roller Shade'] && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Roller Shade'] && !model.options.deviceConfig['Roller Shade'].hide_device && (model.options.deviceConfig['Roller Shade'].connectionType === 'BLE' || model.options.deviceConfig['Roller Shade'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Roller Shade'] && !model.options.deviceConfig['Roller Shade'].hide_device && (model.options.deviceConfig['Roller Shade'].connectionType === 'OpenAPI' || model.options.deviceConfig['Roller Shade'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Roller Shade'] && !model.options.deviceConfig['Roller Shade'].hide_device && (model.options.deviceConfig['Roller Shade'].connectionType === 'OpenAPI' || model.options.deviceConfig['Roller Shade'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Roller Shade'] && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Roller Shade'].hide_device);"
                    }
                  }
                }
              },
              "Blind Tilt": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Blind Tilts",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "disable_group": {
                    "title": "Disable Grouping",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "mapping": {
                    "title": "Mapping Mode",
                    "type": "string",
                    "default": "",
                    "oneOf": [
                      {
                        "title": "Default",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "Down and Up",
                        "enum": [
                          "down_and_up"
                        ]
                      },
                      {
                        "title": "Only Down",
                        "enum": [
                          "only_down"
                        ]
                      },
                      {
                        "title": "Only Up",
                        "enum": [
                          "only_up"
                        ]
                      },
                      {
                        "title": "Up and Down",
                        "enum": [
                          "up_and_down"
                        ]
                      },
                      {
                        "title": "Use Tilt for Direction",
                        "enum": [
                          "use_tilt_for_direction"
                        ]
                      }
                    ],
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "hide_lightsensor": {
                    "title": "Hide Light Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "set_minlux": {
                    "title": "Set Min Lux",
                    "type": "number",
                    "placeholder": "1",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "set_maxlux": {
                    "title": "Set Max Lux",
                    "type": "number",
                    "placeholder": "6001",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "set_min": {
                    "title": "Set Minimum Open State",
                    "type": "number",
                    "placeholder": "0",
                    "description": "Sets the minimum percentage before needed to set to Open.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "set_max": {
                    "title": "Set Maximum Close State",
                    "type": "number",
                    "placeholder": "100",
                    "description": "Sets the maximum percentage before needing to set to Closed.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "set_minStep": {
                    "title": "Set Minimum Step",
                    "type": "number",
                    "placeholder": "1",
                    "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "setOpenMode": {
                    "title": "Opening Mode",
                    "type": "string",
                    "oneOf": [
                      {
                        "enum": [
                          "0"
                        ],
                        "title": "Performance Mode"
                      },
                      {
                        "enum": [
                          "1"
                        ],
                        "title": "Silent Mode"
                      }
                    ],
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "setCloseMode": {
                    "title": "Closing Mode",
                    "type": "string",
                    "oneOf": [
                      {
                        "enum": [
                          "0"
                        ],
                        "title": "Performance Mode"
                      },
                      {
                        "enum": [
                          "1"
                        ],
                        "title": "Silent Mode"
                      }
                    ],
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "silentModeSwitch": {
                    "title": "Enable Silent Mode Switches",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Blind Tilt'] && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Blind Tilt'] && !model.options.deviceConfig['Blind Tilt'].hide_device && model.options.deviceConfig['Blind Tilt'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Blind Tilt'] && !model.options.deviceConfig['Blind Tilt'].hide_device && (model.options.deviceConfig['Blind Tilt'].connectionType === 'BLE' || model.options.deviceConfig['Blind Tilt'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Blind Tilts",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Blind Tilt'] && !model.options.deviceConfig['Blind Tilt'].hide_device && (model.options.deviceConfig['Blind Tilt'].connectionType === 'OpenAPI' || model.options.deviceConfig['Blind Tilt'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Blind Tilt'] && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Blind Tilt'] && !model.options.deviceConfig['Blind Tilt'].hide_device && (model.options.deviceConfig['Blind Tilt'].connectionType === 'BLE' || model.options.deviceConfig['Blind Tilt'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Blind Tilt'] && !model.options.deviceConfig['Blind Tilt'].hide_device && (model.options.deviceConfig['Blind Tilt'].connectionType === 'OpenAPI' || model.options.deviceConfig['Blind Tilt'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Blind Tilt'] && !model.options.deviceConfig['Blind Tilt'].hide_device && (model.options.deviceConfig['Blind Tilt'].connectionType === 'OpenAPI' || model.options.deviceConfig['Blind Tilt'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Blind Tilt'] && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Blind Tilt'].hide_device);"
                    }
                  }
                }
              },
              "Plug": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Plugs",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug'] && !model.options.deviceConfig['Plug'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug'] && !model.options.deviceConfig['Humidifier'].hide_device && model.options.deviceConfig['Plug'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug'] && !model.options.deviceConfig['Plug'].hide_device && (model.options.deviceConfig['Plug'].connectionType === 'BLE' || model.options.deviceConfig['Plug'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Plugs",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug'] && !model.options.deviceConfig['Plug'].hide_device && (model.options.deviceConfig['Plug'].connectionType === 'OpenAPI' || model.options.deviceConfig['Plug'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug'] && !model.options.deviceConfig['Plug'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug'] && !model.options.deviceConfig['Plug'].hide_device && (model.options.deviceConfig['Plug'].connectionType === 'BLE' || model.options.deviceConfig['Plug'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug'] && !model.options.deviceConfig['Plug'].hide_device && (model.options.deviceConfig['Plug'].connectionType === 'OpenAPI' || model.options.deviceConfig['Plug'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug'] && !model.options.deviceConfig['Plug'].hide_device && (model.options.deviceConfig['Plug'].connectionType === 'OpenAPI' || model.options.deviceConfig['Plug'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug'] && !model.options.deviceConfig['Plug'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug'].hide_device);"
                    }
                  }
                }
              },
              "Plug Mini (US)": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Plug Mini (US)s",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (US)'] && !model.options.deviceConfig['Plug Mini (US)'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (US)'] && !model.options.deviceConfig['Plug Mini (US)'].hide_device && model.options.deviceConfig['Plug Mini (US)'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (US)'] && !model.options.deviceConfig['Plug Mini (US)'].hide_device && (model.options.deviceConfig['Plug Mini (US)'].connectionType === 'BLE' || model.options.deviceConfig['Plug Mini (US)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Plug Mini (US)s",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (US)'] && !model.options.deviceConfig['Plug Mini (US)'].hide_device && (model.options.deviceConfig['Plug Mini (US)'].connectionType === 'OpenAPI' || model.options.deviceConfig['Plug Mini (US)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (US)'] && !model.options.deviceConfig['Plug Mini (US)'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (US)'] && !model.options.deviceConfig['Plug Mini (US)'].hide_device && (model.options.deviceConfig['Plug Mini (US)'].connectionType === 'BLE' || model.options.deviceConfig['Plug Mini (US)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (US)'] && !model.options.deviceConfig['Plug Mini (US)'].hide_device && (model.options.deviceConfig['Plug Mini (US)'].connectionType === 'OpenAPI' || model.options.deviceConfig['Plug Mini (US)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (US)'] && !model.options.deviceConfig['Plug Mini (US)'].hide_device && (model.options.deviceConfig['Plug Mini (US)'].connectionType === 'OpenAPI' || model.options.deviceConfig['Plug Mini (US)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (US)'] && !model.options.deviceConfig['Plug Mini (US)'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (US)'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (US)'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (US)'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (US)'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (US)'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (US)'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (US)'].hide_device);"
                    }
                  }
                }
              },
              "Plug Mini (JP)": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Plug Mini (JP)s",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (JP)'] && !model.options.deviceConfig['Plug Mini (JP)'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (JP)'] && !model.options.deviceConfig['Plug Mini (JP)'].hide_device && model.options.deviceConfig['Plug Mini (JP)'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (JP)'] && !model.options.deviceConfig['Plug Mini (JP)'].hide_device && (model.options.deviceConfig['Plug Mini (JP)'].connectionType === 'BLE' || model.options.deviceConfig['Plug Mini (JP)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Plug Mini (JP)s",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (JP)'] && !model.options.deviceConfig['Plug Mini (JP)'].hide_device && (model.options.deviceConfig['Plug Mini (JP)'].connectionType === 'OpenAPI' || model.options.deviceConfig['Plug Mini (JP)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (JP)'] && !model.options.deviceConfig['Plug Mini (JP)'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (JP)'] && !model.options.deviceConfig['Plug Mini (JP)'].hide_device && (model.options.deviceConfig['Plug Mini (JP)'].connectionType === 'BLE' || model.options.deviceConfig['Plug Mini (JP)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (JP)'] && !model.options.deviceConfig['Plug Mini (JP)'].hide_device && (model.options.deviceConfig['Plug Mini (JP)'].connectionType === 'OpenAPI' || model.options.deviceConfig['Plug Mini (JP)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (JP)'] && !model.options.deviceConfig['Plug Mini (JP)'].hide_device && (model.options.deviceConfig['Plug Mini (JP)'].connectionType === 'OpenAPI' || model.options.deviceConfig['Plug Mini (JP)'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Plug Mini (JP)'] && !model.options.deviceConfig['Plug Mini (JP)'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (JP)'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (JP)'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (JP)'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (JP)'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (JP)'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (JP)'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Plug Mini (JP)'].hide_device);"
                    }
                  }
                }
              },
              "Smart Lock": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Smart Locks",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_contactsensor": {
                    "title": "Hide Lock's Contact Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Smart Lock'].hide_device && (model.options.deviceConfig['Smart Lock'].configDeviceType === 'Smart Lock' || model.options.deviceConfig['Smart Lock'].configDeviceType === 'Smart Lock Pro') && model.options.deviceConfig['Smart Lock'].deviceId);"
                    }
                  },
                  "activate_latchbutton": {
                    "title": "Activate Latch Button",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Smart Lock'].hide_device && (model.options.deviceConfig['Smart Lock'].configDeviceType === 'Smart Lock' || model.options.deviceConfig['Smart Lock'].configDeviceType === 'Smart Lock Pro') && model.options.deviceConfig['Smart Lock'].deviceId);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock'] && !model.options.deviceConfig['Smart Lock'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock'] && !model.options.deviceConfig['Smart Lock'].hide_device && model.options.deviceConfig['Smart Lock'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock'] && !model.options.deviceConfig['Smart Lock'].hide_device && (model.options.deviceConfig['Smart Lock'].connectionType === 'BLE' || model.options.deviceConfig['Smart Lock'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Smart Locks",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock'] && !model.options.deviceConfig['Smart Lock'].hide_device && (model.options.deviceConfig['Smart Lock'].connectionType === 'OpenAPI' || model.options.deviceConfig['Smart Lock'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock'] && !model.options.deviceConfig['Smart Lock'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock'] && !model.options.deviceConfig['Smart Lock'].hide_device && (model.options.deviceConfig['Smart Lock'].connectionType === 'BLE' || model.options.deviceConfig['Smart Lock'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock'] && !model.options.deviceConfig['Smart Lock'].hide_device && (model.options.deviceConfig['Smart Lock'].connectionType === 'OpenAPI' || model.options.deviceConfig['Smart Lock'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock'] && !model.options.deviceConfig['Smart Lock'].hide_device && (model.options.deviceConfig['Smart Lock'].connectionType === 'OpenAPI' || model.options.deviceConfig['Smart Lock'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock'] && !model.options.deviceConfig['Smart Lock'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock'].hide_device);"
                    }
                  }
                }
              },
              "Smart Lock Pro": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Smart Lock Pros",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "hide_contactsensor": {
                    "title": "Hide Lock's Contact Sensor",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Smart Lock Pro'].hide_device && (model.options.deviceConfig['Smart Lock Pro'].configDeviceType === 'Smart Lock' || model.options.deviceConfig['Smart Lock Pro'].configDeviceType === 'Smart Lock Pro') && model.options.deviceConfig['Smart Lock Pro'].deviceId);"
                    }
                  },
                  "activate_latchbutton": {
                    "title": "Activate Latch Button",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Smart Lock Pro'].hide_device && (model.options.deviceConfig['Smart Lock Pro'].configDeviceType === 'Smart Lock' || model.options.deviceConfig['Smart Lock Pro'].configDeviceType === 'Smart Lock Pro') && model.options.deviceConfig['Smart Lock Pro'].deviceId);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Pro'] && !model.options.deviceConfig['Smart Lock Pro'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Pro'] && !model.options.deviceConfig['Smart Lock Pro'].hide_device && model.options.deviceConfig['Smart Lock Pro'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Pro'] && !model.options.deviceConfig['Smart Lock Pro'].hide_device && (model.options.deviceConfig['Smart Lock Pro'].connectionType === 'BLE' || model.options.deviceConfig['Smart Lock Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Smart Lock Pros",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Pro'] && !model.options.deviceConfig['Smart Lock Pro'].hide_device && (model.options.deviceConfig['Smart Lock Pro'].connectionType === 'OpenAPI' || model.options.deviceConfig['Smart Lock Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Pro'] && !model.options.deviceConfig['Smart Lock Pro'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Pro'] && !model.options.deviceConfig['Smart Lock Pro'].hide_device && (model.options.deviceConfig['Smart Lock Pro'].connectionType === 'BLE' || model.options.deviceConfig['Smart Lock Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Pro'] && !model.options.deviceConfig['Smart Lock Pro'].hide_device && (model.options.deviceConfig['Smart Lock Pro'].connectionType === 'OpenAPI' || model.options.deviceConfig['Smart Lock Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Pro'] && !model.options.deviceConfig['Smart Lock Pro'].hide_device && (model.options.deviceConfig['Smart Lock Pro'].connectionType === 'OpenAPI' || model.options.deviceConfig['Smart Lock Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Smart Lock Pro'] && !model.options.deviceConfig['Smart Lock Pro'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Pro'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Pro'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Pro'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Pro'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Pro'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Pro'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Smart Lock Pro'].hide_device);"
                    }
                  }
                }
              },
              "Color Bulb": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Color Bulbs",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "set_minStep": {
                    "title": "Set Minimum Step",
                    "type": "number",
                    "placeholder": "1",
                    "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Color Bulb'].hide_device);"
                    }
                  },
                  "adaptiveLightingShift": {
                    "title": "Adaptive Lighting Shift",
                    "type": "number",
                    "placeholder": "-1",
                    "description": "The mired for each Adaptive Lighting update will be increased by this value, making the light appear warmer. Set to -1 to remove Adaptive Lighting feature. Must be -1 or more.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Color Bulb'].hide_device && (model.options.deviceConfig['Color Bulb'].configDeviceType === 'Color Bulb' || model.options.deviceConfig['Color Bulb'].configDeviceType === 'Strip Light') && model.options.deviceConfig['Color Bulb'].deviceId);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Color Bulb'] && !model.options.deviceConfig['Color Bulb'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Color Bulb'] && !model.options.deviceConfig['Color Bulb'].hide_device && model.options.deviceConfig['Color Bulb'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Color Bulb'] && !model.options.deviceConfig['Color Bulb'].hide_device && (model.options.deviceConfig['Color Bulb'].connectionType === 'BLE' || model.options.deviceConfig['Color Bulb'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Color Bulbs",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Color Bulb'] && !model.options.deviceConfig['Color Bulb'].hide_device && (model.options.deviceConfig['Color Bulb'].connectionType === 'OpenAPI' || model.options.deviceConfig['Color Bulb'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Color Bulb'] && !model.options.deviceConfig['Color Bulb'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Color Bulb'] && !model.options.deviceConfig['Color Bulb'].hide_device && (model.options.deviceConfig['Color Bulb'].connectionType === 'BLE' || model.options.deviceConfig['Color Bulb'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Color Bulb'] && !model.options.deviceConfig['Color Bulb'].hide_device && (model.options.deviceConfig['Color Bulb'].connectionType === 'OpenAPI' || model.options.deviceConfig['Color Bulb'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Color Bulb'] && !model.options.deviceConfig['Color Bulb'].hide_device && (model.options.deviceConfig['Color Bulb'].connectionType === 'OpenAPI' || model.options.deviceConfig['Color Bulb'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Color Bulb'] && !model.options.deviceConfig['Color Bulb'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Color Bulb'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Color Bulb'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Color Bulb'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Color Bulb'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Color Bulb'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Color Bulb'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Color Bulb'].hide_device);"
                    }
                  }
                }
              },
              "K10+": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All K10+s",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+'] && !model.options.deviceConfig['K10+'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+'] && !model.options.deviceConfig['K10+'].hide_device && model.options.deviceConfig['K10+'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+'] && !model.options.deviceConfig['K10+'].hide_device && (model.options.deviceConfig['K10+'].connectionType === 'BLE' || model.options.deviceConfig['K10+'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all K10+s",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+'] && !model.options.deviceConfig['K10+'].hide_device && (model.options.deviceConfig['K10+'].connectionType === 'OpenAPI' || model.options.deviceConfig['K10+'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+'] && !model.options.deviceConfig['K10+'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+'] && !model.options.deviceConfig['K10+'].hide_device && (model.options.deviceConfig['K10+'].connectionType === 'BLE' || model.options.deviceConfig['K10+'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+'] && !model.options.deviceConfig['K10+'].hide_device && (model.options.deviceConfig['K10+'].connectionType === 'OpenAPI' || model.options.deviceConfig['K10+'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+'] && !model.options.deviceConfig['K10+'].hide_device && (model.options.deviceConfig['K10+'].connectionType === 'OpenAPI' || model.options.deviceConfig['K10+'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+'] && !model.options.deviceConfig['K10+'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+'].hide_device);"
                    }
                  }
                }
              },
              "K10+ Pro": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All K10+ Pros",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+ Pro'] && !model.options.deviceConfig['K10+ Pro'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+ Pro'] && !model.options.deviceConfig['K10+ Pro'].hide_device && model.options.deviceConfig['K10+ Pro'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+ Pro'] && !model.options.deviceConfig['K10+ Pro'].hide_device && (model.options.deviceConfig['K10+ Pro'].connectionType === 'BLE' || model.options.deviceConfig['K10+ Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all K10+ Pros",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+ Pro'] && !model.options.deviceConfig['K10+ Pro'].hide_device && (model.options.deviceConfig['K10+ Pro'].connectionType === 'OpenAPI' || model.options.deviceConfig['K10+ Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+ Pro'] && !model.options.deviceConfig['K10+ Pro'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+ Pro'] && !model.options.deviceConfig['K10+ Pro'].hide_device && (model.options.deviceConfig['K10+ Pro'].connectionType === 'BLE' || model.options.deviceConfig['K10+ Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+ Pro'] && !model.options.deviceConfig['K10+ Pro'].hide_device && (model.options.deviceConfig['K10+ Pro'].connectionType === 'OpenAPI' || model.options.deviceConfig['K10+ Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+ Pro'] && !model.options.deviceConfig['K10+ Pro'].hide_device && (model.options.deviceConfig['K10+ Pro'].connectionType === 'OpenAPI' || model.options.deviceConfig['K10+ Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['K10+ Pro'] && !model.options.deviceConfig['K10+ Pro'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+ Pro'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+ Pro'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+ Pro'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+ Pro'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+ Pro'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+ Pro'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['K10+ Pro'].hide_device);"
                    }
                  }
                }
              },
              "WoSweeper": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All WoSweepers",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeper'] && !model.options.deviceConfig['WoSweeper'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeper'] && !model.options.deviceConfig['WoSweeper'].hide_device && model.options.deviceConfig['WoSweeper'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeper'] && !model.options.deviceConfig['WoSweeper'].hide_device && (model.options.deviceConfig['WoSweeper'].connectionType === 'BLE' || model.options.deviceConfig['WoSweeper'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all WoSweepers",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeper'] && !model.options.deviceConfig['WoSweeper'].hide_device && (model.options.deviceConfig['WoSweeper'].connectionType === 'OpenAPI' || model.options.deviceConfig['WoSweeper'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeper'] && !model.options.deviceConfig['WoSweeper'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeper'] && !model.options.deviceConfig['WoSweeper'].hide_device && (model.options.deviceConfig['WoSweeper'].connectionType === 'BLE' || model.options.deviceConfig['WoSweeper'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeper'] && !model.options.deviceConfig['WoSweeper'].hide_device && (model.options.deviceConfig['WoSweeper'].connectionType === 'OpenAPI' || model.options.deviceConfig['WoSweeper'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeper'] && !model.options.deviceConfig['WoSweeper'].hide_device && (model.options.deviceConfig['WoSweeper'].connectionType === 'OpenAPI' || model.options.deviceConfig['WoSweeper'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeper'] && !model.options.deviceConfig['WoSweeper'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeper'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeper'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeper'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeper'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeper'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeper'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeper'].hide_device);"
                    }
                  }
                }
              },
              "WoSweeperMini": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All WoSweeper Minis",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeperMini'] && !model.options.deviceConfig['WoSweeperMini'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeperMini'] && !model.options.deviceConfig['WoSweeperMini'].hide_device && model.options.deviceConfig['WoSweeperMini'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeperMini'] && !model.options.deviceConfig['WoSweeperMini'].hide_device && (model.options.deviceConfig['WoSweeperMini'].connectionType === 'BLE' || model.options.deviceConfig['WoSweeperMini'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all WoSweeperMinis",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeperMini'] && !model.options.deviceConfig['WoSweeperMini'].hide_device && (model.options.deviceConfig['WoSweeperMini'].connectionType === 'OpenAPI' || model.options.deviceConfig['WoSweeperMini'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeperMini'] && !model.options.deviceConfig['WoSweeperMini'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeperMini'] && !model.options.deviceConfig['WoSweeperMini'].hide_device && (model.options.deviceConfig['WoSweeperMini'].connectionType === 'BLE' || model.options.deviceConfig['WoSweeperMini'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeperMini'] && !model.options.deviceConfig['WoSweeperMini'].hide_device && (model.options.deviceConfig['WoSweeperMini'].connectionType === 'OpenAPI' || model.options.deviceConfig['WoSweeperMini'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeperMini'] && !model.options.deviceConfig['WoSweeperMini'].hide_device && (model.options.deviceConfig['WoSweeperMini'].connectionType === 'OpenAPI' || model.options.deviceConfig['WoSweeperMini'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['WoSweeperMini'] && !model.options.deviceConfig['WoSweeperMini'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeperMini'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeperMini'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeperMini'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeperMini'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeperMini'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeperMini'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['WoSweeperMini'].hide_device);"
                    }
                  }
                }
              },
              "Robot Vacuum Cleaner S1": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Robot Vacuum Cleaner S1s",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device && model.options.deviceConfig['Robot Vacuum Cleaner S1'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S1'].connectionType === 'BLE' || model.options.deviceConfig['Robot Vacuum Cleaner S1'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Robot Vacuum Cleaner S1 Pluses",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S1'].connectionType === 'OpenAPI' || model.options.deviceConfig['Robot Vacuum Cleaner S1'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S1'].connectionType === 'BLE' || model.options.deviceConfig['Robot Vacuum Cleaner S1'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S1'].connectionType === 'OpenAPI' || model.options.deviceConfig['Robot Vacuum Cleaner S1'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S1'].connectionType === 'OpenAPI' || model.options.deviceConfig['Robot Vacuum Cleaner S1'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device);"
                    }
                  }
                }
              },
              "Robot Vacuum Cleaner S1 Plus": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Robot Vacuum Cleaner S1 Pluses",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device && model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].connectionType === 'BLE' || model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Robot Vacuum Cleaner S1 Pluses",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].connectionType === 'OpenAPI' || model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].connectionType === 'BLE' || model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].connectionType === 'OpenAPI' || model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].connectionType === 'OpenAPI' || model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'] && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device);"
                    }
                  }
                }
              },
              "Robot Vacuum Cleaner S10": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Robot Vacuum Cleaner S10s",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S10'] && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S10'] && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device && model.options.deviceConfig['Robot Vacuum Cleaner S10'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S10'] && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S10'].connectionType === 'BLE' || model.options.deviceConfig['Robot Vacuum Cleaner S10'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Robot Vacuum Cleaner S10s",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S10'] && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S10'].connectionType === 'OpenAPI' || model.options.deviceConfig['Robot Vacuum Cleaner S10'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S10'] && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S10'] && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S10'].connectionType === 'BLE' || model.options.deviceConfig['Robot Vacuum Cleaner S10'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S10'] && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S10'].connectionType === 'OpenAPI' || model.options.deviceConfig['Robot Vacuum Cleaner S10'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S10'] && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device && (model.options.deviceConfig['Robot Vacuum Cleaner S10'].connectionType === 'OpenAPI' || model.options.deviceConfig['Robot Vacuum Cleaner S10'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Robot Vacuum Cleaner S10'] && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device);"
                    }
                  }
                }
              },
              "Ceiling Light": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Ceiling Lights",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "set_minStep": {
                    "title": "Set Minimum Step",
                    "type": "number",
                    "placeholder": "1",
                    "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light'].hide_device);"
                    }
                  },
                  "adaptiveLightingShift": {
                    "title": "Adaptive Lighting Shift",
                    "type": "number",
                    "placeholder": "-1",
                    "description": "The mired for each Adaptive Lighting update will be increased by this value, making the light appear warmer. Set to -1 to remove Adaptive Lighting feature. Must be -1 or more.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Ceiling Light'].hide_device && (model.options.deviceConfig['Ceiling Light'].configDeviceType === 'Color Bulb' || model.options.deviceConfig['Ceiling Light'].configDeviceType === 'Strip Light') && model.options.deviceConfig['Ceiling Light'].deviceId);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light'] && !model.options.deviceConfig['Ceiling Light'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light'] && !model.options.deviceConfig['Ceiling Light'].hide_device && model.options.deviceConfig['Ceiling Light'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light'] && !model.options.deviceConfig['Ceiling Light'].hide_device && (model.options.deviceConfig['Ceiling Light'].connectionType === 'BLE' || model.options.deviceConfig['Ceiling Light'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Ceiling Lights",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light'] && !model.options.deviceConfig['Ceiling Light'].hide_device && (model.options.deviceConfig['Ceiling Light'].connectionType === 'OpenAPI' || model.options.deviceConfig['Ceiling Light'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light'] && !model.options.deviceConfig['Ceiling Light'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light'] && !model.options.deviceConfig['Ceiling Light'].hide_device && (model.options.deviceConfig['Ceiling Light'].connectionType === 'BLE' || model.options.deviceConfig['Ceiling Light'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light'] && !model.options.deviceConfig['Ceiling Light'].hide_device && (model.options.deviceConfig['Ceiling Light'].connectionType === 'OpenAPI' || model.options.deviceConfig['Ceiling Light'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light'] && !model.options.deviceConfig['Ceiling Light'].hide_device && (model.options.deviceConfig['Ceiling Light'].connectionType === 'OpenAPI' || model.options.deviceConfig['Ceiling Light'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light'] && !model.options.deviceConfig['Ceiling Light'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light'].hide_device);"
                    }
                  }
                }
              },
              "Ceiling Light Pro": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Ceiling Light Pros",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "set_minStep": {
                    "title": "Set Minimum Step",
                    "type": "number",
                    "placeholder": "1",
                    "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light Pro'].hide_device);"
                    }
                  },
                  "adaptiveLightingShift": {
                    "title": "Adaptive Lighting Shift",
                    "type": "number",
                    "placeholder": "-1",
                    "description": "The mired for each Adaptive Lighting update will be increased by this value, making the light appear warmer. Set to -1 to remove Adaptive Lighting feature. Must be -1 or more.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Ceiling Light Pro'].hide_device && (model.options.deviceConfig['Ceiling Light Pro'].configDeviceType === 'Color Bulb' || model.options.deviceConfig['Ceiling Light Pro'].configDeviceType === 'Strip Light') && model.options.deviceConfig['Ceiling Light Pro'].deviceId);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light Pro'] && !model.options.deviceConfig['Ceiling Light Pro'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light Pro'] && !model.options.deviceConfig['Ceiling Light Pro'].hide_device && model.options.deviceConfig['Ceiling Light Pro'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light Pro'] && !model.options.deviceConfig['Ceiling Light Pro'].hide_device && (model.options.deviceConfig['Ceiling Light Pro'].connectionType === 'BLE' || model.options.deviceConfig['Ceiling Light Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Ceiling Light Pros",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light Pro'] && !model.options.deviceConfig['Ceiling Light Pro'].hide_device && (model.options.deviceConfig['Ceiling Light Pro'].connectionType === 'OpenAPI' || model.options.deviceConfig['Ceiling Light Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light Pro'] && !model.options.deviceConfig['Ceiling Light Pro'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light Pro'] && !model.options.deviceConfig['Ceiling Light Pro'].hide_device && (model.options.deviceConfig['Ceiling Light Pro'].connectionType === 'BLE' || model.options.deviceConfig['Ceiling Light Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light Pro'] && !model.options.deviceConfig['Ceiling Light Pro'].hide_device && (model.options.deviceConfig['Ceiling Light Pro'].connectionType === 'OpenAPI' || model.options.deviceConfig['Ceiling Light Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light Pro'] && !model.options.deviceConfig['Ceiling Light Pro'].hide_device && (model.options.deviceConfig['Ceiling Light Pro'].connectionType === 'OpenAPI' || model.options.deviceConfig['Ceiling Light Pro'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Ceiling Light Pro'] && !model.options.deviceConfig['Ceiling Light Pro'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light Pro'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light Pro'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light Pro'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light Pro'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light Pro'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light Pro'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Ceiling Light Pro'].hide_device);"
                    }
                  }
                }
              },
              "Strip Light": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Strip Lights",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "set_minStep": {
                    "title": "Set Minimum Step",
                    "type": "number",
                    "placeholder": "1",
                    "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Strip Light'].hide_device);"
                    }
                  },
                  "adaptiveLightingShift": {
                    "title": "Adaptive Lighting Shift",
                    "type": "number",
                    "placeholder": "-1",
                    "description": "The mired for each Adaptive Lighting update will be increased by this value, making the light appear warmer. Set to -1 to remove Adaptive Lighting feature. Must be -1 or more.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.devices && !model.options.deviceConfig['Strip Light'].hide_device && (model.options.deviceConfig['Strip Light'].configDeviceType === 'Color Bulb' || model.options.deviceConfig['Strip Light'].configDeviceType === 'Strip Light') && model.options.deviceConfig['Strip Light'].deviceId);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Strip Light'] && !model.options.deviceConfig['Strip Light'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Strip Light'] && !model.options.deviceConfig['Strip Light'].hide_device && model.options.deviceConfig['Strip Light'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Strip Light'] && !model.options.deviceConfig['Strip Light'].hide_device && (model.options.deviceConfig['Strip Light'].connectionType === 'BLE' || model.options.deviceConfig['Strip Light'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Strip Lights",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Strip Light'] && !model.options.deviceConfig['Strip Light'].hide_device && (model.options.deviceConfig['Strip Light'].connectionType === 'OpenAPI' || model.options.deviceConfig['Strip Light'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Strip Light'] && !model.options.deviceConfig['Strip Light'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Strip Light'] && !model.options.deviceConfig['Strip Light'].hide_device && (model.options.deviceConfig['Strip Light'].connectionType === 'BLE' || model.options.deviceConfig['Strip Light'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Strip Light'] && !model.options.deviceConfig['Strip Light'].hide_device && (model.options.deviceConfig['Strip Light'].connectionType === 'OpenAPI' || model.options.deviceConfig['Strip Light'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Strip Light'] && !model.options.deviceConfig['Strip Light'].hide_device && (model.options.deviceConfig['Strip Light'].connectionType === 'OpenAPI' || model.options.deviceConfig['Strip Light'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Strip Light'] && !model.options.deviceConfig['Strip Light'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Strip Light'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Strip Light'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Strip Light'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Strip Light'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Strip Light'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Strip Light'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Strip Light'].hide_device);"
                    }
                  }
                }
              },
              "Battery Circulator Fan": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Battery Circulator Fans",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "set_minStep": {
                    "title": "Set Minimum Step",
                    "type": "number",
                    "placeholder": "1",
                    "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Battery Circulator Fan'].hide_device);"
                    }
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Battery Circulator Fan'] && !model.options.deviceConfig['Battery Circulator Fan'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "BLE",
                        "enum": [
                          "BLE"
                        ]
                      },
                      {
                        "title": "BLE/OpenAPI",
                        "enum": [
                          "BLE/OpenAPI"
                        ]
                      },
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "disablePlatformBLE": {
                    "title": "Disable Platform BLE",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Battery Circulator Fan'] && !model.options.deviceConfig['Battery Circulator Fan'].hide_device && model.options.deviceConfig['Battery Circulator Fan'].connectionType !== 'Disabled');"
                    }
                  },
                  "scanDuration": {
                    "title": "Scan Duration (Default is 1 Second) for BLE",
                    "type": "number",
                    "placeholder": 1,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Battery Circulator Fan'] && !model.options.deviceConfig['Battery Circulator Fan'].hide_device && (model.options.deviceConfig['Battery Circulator Fan'].connectionType === 'BLE' || model.options.deviceConfig['Battery Circulator Fan'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "webhook": {
                    "title": "Enable Webhook for all Battery Circulator Fan s",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Battery Circulator Fan'] && !model.options.deviceConfig['Battery Circulator Fan'].hide_device && (model.options.deviceConfig['Battery Circulator Fan'].connectionType === 'OpenAPI' || model.options.deviceConfig['Battery Circulator Fan'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Battery Circulator Fan'] && !model.options.deviceConfig['Battery Circulator Fan'].hide_device);"
                    }
                  },
                  "maxRetry": {
                    "title": "Max Retries for BLE",
                    "type": "number",
                    "placeholder": "5",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Battery Circulator Fan'] && !model.options.deviceConfig['Battery Circulator Fan'].hide_device && (model.options.deviceConfig['Battery Circulator Fan'].connectionType === 'BLE' || model.options.deviceConfig['Battery Circulator Fan'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "maxRetries": {
                    "title": "Device Max Retries for OpenAPI",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Battery Circulator Fan'] && !model.options.deviceConfig['Battery Circulator Fan'].hide_device && (model.options.deviceConfig['Battery Circulator Fan'].connectionType === 'OpenAPI' || model.options.deviceConfig['Battery Circulator Fan'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "delayBetweenRetries": {
                    "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
                    "type": "number",
                    "placeholder": 3,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Battery Circulator Fan'] && !model.options.deviceConfig['Battery Circulator Fan'].hide_device && (model.options.deviceConfig['Battery Circulator Fan'].connectionType === 'OpenAPI' || model.options.deviceConfig['Battery Circulator Fan'].connectionType === 'BLE/OpenAPI'));"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Battery Circulator Fan'] && !model.options.deviceConfig['Battery Circulator Fan'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Battery Circulator Fan'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Battery Circulator Fan'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Battery Circulator Fan'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Battery Circulator Fan'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Battery Circulator Fan'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Battery Circulator Fan'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Battery Circulator Fan'].hide_device);"
                    }
                  }
                }
              }
            }
          },
          "irdevices": {
            "type": "array",
            "items": {
              "title": "IR Devices",
              "type": "object",
              "properties": {
                "configDeviceName": {
                  "title": "Device Name",
                  "type": "string",
                  "placeholder": "SwitchBot",
                  "pattern": "^[a-zA-Z0-9]+([a-zA-Z0-9 ]*[a-zA-Z0-9]+)?$",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId);"
                  }
                },
                "deviceId": {
                  "title": "Device ID",
                  "type": "string",
                  "placeholder": "81F3UT59513F",
                  "pattern": "^[0-9A-Za-z]{2}-[0-9A-Za-z]{12}-[0-9A-Za-z]{8}$|^[0-9A-Za-z]{18}$"
                },
                "hide_device": {
                  "title": "Hide Device",
                  "type": "boolean",
                  "description": "If true, device will be removed or hidden from HomeKit.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId);"
                  }
                },
                "configRemoteType": {
                  "title": "Remote Type",
                  "type": "string",
                  "oneOf": [
                    {
                      "title": "Air Conditioner (IR)",
                      "enum": [
                        "Air Conditioner"
                      ]
                    },
                    {
                      "title": "Air Purifier (IR)",
                      "enum": [
                        "Air Purifier"
                      ]
                    },
                    {
                      "title": "Camera (IR)",
                      "enum": [
                        "Camera"
                      ]
                    },
                    {
                      "title": "DIY Air Conditioner (IR)",
                      "enum": [
                        "DIY Air Conditioner"
                      ]
                    },
                    {
                      "title": "DIY Air Purifier (IR)",
                      "enum": [
                        "DIY Air Purifier"
                      ]
                    },
                    {
                      "title": "DIY Camera (IR)",
                      "enum": [
                        "DIY Camera"
                      ]
                    },
                    {
                      "title": "DIY DVD (IR)",
                      "enum": [
                        "DIY DVD"
                      ]
                    },
                    {
                      "title": "DIY Fan (IR)",
                      "enum": [
                        "DIY Fan"
                      ]
                    },
                    {
                      "title": "DIY IPTV (IR)",
                      "enum": [
                        "DIY IPTV"
                      ]
                    },
                    {
                      "title": "DIY Light (IR)",
                      "enum": [
                        "DIY Light"
                      ]
                    },
                    {
                      "title": "DIY Projector (IR)",
                      "enum": [
                        "DIY Projector"
                      ]
                    },
                    {
                      "title": "DIY Set Top Box (IR)",
                      "enum": [
                        "DIY Set Top Box"
                      ]
                    },
                    {
                      "title": "DIY Speaker (IR)",
                      "enum": [
                        "DIY Speaker"
                      ]
                    },
                    {
                      "title": "DIY TV (IR)",
                      "enum": [
                        "DIY TV"
                      ]
                    },
                    {
                      "title": "DIY Vacuum Cleaner (IR)",
                      "enum": [
                        "DIY Vacuum Cleaner"
                      ]
                    },
                    {
                      "title": "DIY Water Heater (IR)",
                      "enum": [
                        "DIY Water Heater"
                      ]
                    },
                    {
                      "title": "DVD (IR)",
                      "enum": [
                        "DVD"
                      ]
                    },
                    {
                      "title": "Fan (IR)",
                      "enum": [
                        "Fan"
                      ]
                    },
                    {
                      "title": "IPTV (IR)",
                      "enum": [
                        "IPTV"
                      ]
                    },
                    {
                      "title": "Light (IR)",
                      "enum": [
                        "Light"
                      ]
                    },
                    {
                      "title": "Others (IR)",
                      "enum": [
                        "Others"
                      ]
                    },
                    {
                      "title": "Projector (IR)",
                      "enum": [
                        "Projector"
                      ]
                    },
                    {
                      "title": "Set Top Box (IR)",
                      "enum": [
                        "Set Top Box"
                      ]
                    },
                    {
                      "title": "Speaker (IR)",
                      "enum": [
                        "Speaker"
                      ]
                    },
                    {
                      "title": "TV (IR)",
                      "enum": [
                        "TV"
                      ]
                    },
                    {
                      "title": "Vacuum Cleaner (IR)",
                      "enum": [
                        "Vacuum Cleaner"
                      ]
                    },
                    {
                      "title": "Water Heater (IR)",
                      "enum": [
                        "Water Heater"
                      ]
                    }
                  ],
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device);"
                  }
                },
                "connectionType": {
                  "title": "Connection Type",
                  "type": "string",
                  "placeholder": "OpenAPI",
                  "oneOf": [
                    {
                      "enum": [
                        "Disabled"
                      ],
                      "title": "Disable"
                    },
                    {
                      "enum": [
                        "OpenAPI"
                      ],
                      "title": "OpenAPI"
                    }
                  ],
                  "description": "Enables OpenAPI, if disabled will leave device in HomeKit and commands will not be sent to OpenAPI.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device && model.options.irdevices[arrayIndices].configRemoteType);"
                  }
                },
                "type": {
                  "title": "What Type of Device do you want to display in the Home App?",
                  "type": "string",
                  "default": "",
                  "oneOf": [
                    {
                      "title": "Door",
                      "enum": [
                        "door"
                      ]
                    },
                    {
                      "title": "Fan",
                      "enum": [
                        "fan"
                      ]
                    },
                    {
                      "title": "Faucet",
                      "enum": [
                        "faucet"
                      ]
                    },
                    {
                      "title": "Garage Door",
                      "enum": [
                        "garagedoor"
                      ]
                    },
                    {
                      "title": "Lock",
                      "enum": [
                        "lock"
                      ]
                    },
                    {
                      "title": "Outlet",
                      "enum": [
                        "outlet"
                      ]
                    },
                    {
                      "title": "Stateful Programmable Switch (Only Works in 3rd Party Home Apps)",
                      "enum": [
                        "stateful"
                      ]
                    },
                    {
                      "title": "Switch",
                      "enum": [
                        "switch"
                      ]
                    },
                    {
                      "title": "Window",
                      "enum": [
                        "window"
                      ]
                    },
                    {
                      "title": "Window Covering",
                      "enum": [
                        "windowcovering"
                      ]
                    }
                  ],
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && model.options.irdevices[arrayIndices].configRemoteType === 'Others' && model.options.irdevices[arrayIndices].deviceId);"
                  }
                },
                "customize": {
                  "title": "Custom IR Commands",
                  "type": "boolean",
                  "description": "Enables Custom IR Commands",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device && model.options.irdevices[arrayIndices].configRemoteType);"
                  }
                },
                "customOn": {
                  "title": "Custom <em class='primary-text'> On </em> Command",
                  "type": "string",
                  "placeholder": "On",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device && model.options.irdevices[arrayIndices].configRemoteType && model.options.irdevices[arrayIndices].customize);"
                  }
                },
                "customOff": {
                  "title": "Custom <em class='primary-text'> Off </em> Command",
                  "type": "string",
                  "placeholder": "Off",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device && model.options.irdevices[arrayIndices].configRemoteType && model.options.irdevices[arrayIndices].customize);"
                  }
                },
                "commandType": {
                  "title": "Command Type",
                  "type": "string",
                  "description": "Customize your command type, Default: command",
                  "placeholder": "tag",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device && model.options.irdevices[arrayIndices].configRemoteType && model.options.irdevices[arrayIndices].customize);"
                  }
                },
                "disablePushOn": {
                  "title": "Disable Sending <em class='primary-text'> On </em> Command",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device && model.options.irdevices[arrayIndices].configRemoteType);"
                  }
                },
                "disablePushOff": {
                  "title": "Disable Sending <em class='primary-text'> Off </em> Command",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device && model.options.irdevices[arrayIndices].configRemoteType);"
                  }
                },
                "disablePushDetail": {
                  "title": "Disable Sending <em class='primary-text'> Detail </em> Command(s)",
                  "description": "Details would be like tempearture for Air Conditioners.",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device && model.options.irdevices[arrayIndices].configRemoteType);"
                  }
                },
                "hide_automode": {
                  "title": "Hide Auto Mode on IR Air Conditioners",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Air Conditioner' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Air Conditioner') && model.options.irdevices[arrayIndices].deviceId);"
                  }
                },
                "set_max_heat": {
                  "title": "IR Air Conditioner Maximum Heat Range",
                  "type": "number",
                  "placeholder": "25",
                  "description": "Set the maximum heat range for the IR Air Conditioner.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Air Conditioner' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Air Conditioner') && model.options.irdevices[arrayIndices].deviceId);"
                  }
                },
                "set_min_heat": {
                  "title": "IR Air Conditioner Minimum Heat Range",
                  "type": "number",
                  "placeholder": "0",
                  "description": "Set the minimum heat range for the IR Air Conditioner.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Air Conditioner' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Air Conditioner') && model.options.irdevices[arrayIndices].deviceId);"
                  }
                },
                "set_max_cool": {
                  "title": "IR Air Conditioner Maximum Cool Range",
                  "type": "number",
                  "placeholder": "35",
                  "description": "Set the maximum cool range for the IR Air Conditioner.",
                  "multipleOf": 1,
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Air Conditioner' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Air Conditioner') && model.options.irdevices[arrayIndices].deviceId);"
                  }
                },
                "set_min_cool": {
                  "title": "IR Air Conditioner Minimum Cool Range",
                  "type": "number",
                  "placeholder": "10",
                  "description": "Set the minimum cool range for the IR Air Conditioner.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Air Conditioner' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Air Conditioner') && model.options.irdevices[arrayIndices].deviceId);"
                  }
                },
                "meterType": {
                  "title": "Use an existing Switchbot device for temperature/humidity",
                  "type": "string",
                  "oneOf": [
                    {
                      "title": "Hub 2",
                      "enum": [
                        "Hub 2"
                      ]
                    },
                    {
                      "title": "Meter",
                      "enum": [
                        "Meter"
                      ]
                    },
                    {
                      "title": "Meter Plus",
                      "enum": [
                        "MeterPlus"
                      ]
                    },
                    {
                      "title": "Meter Plus (JP)",
                      "enum": [
                        "Meter Plus (JP)"
                      ]
                    },
                    {
                      "title": "Meter Pro",
                      "enum": [
                        "Meter Pro"
                      ]
                    },
                    {
                      "title": "Meter Pro (CO2)",
                      "enum": [
                        "MeterPro(CO2)"
                      ]
                    },
                    {
                      "title": "WoIOSensor",
                      "enum": [
                        "WoIOSensor"
                      ]
                    },
                    {
                      "title": "Humidifier",
                      "enum": [
                        "Humidifier"
                      ]
                    }
                  ],
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Air Conditioner' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Air Conditioner') && model.options.irdevices[arrayIndices].deviceId);"
                  }
                },
                "meterId": {
                  "title": "Device ID of the device to use for temperature/humidity",
                  "type": "string",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Air Conditioner' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Air Conditioner') && model.options.irdevices[arrayIndices].deviceId && model.options.irdevices[arrayIndices].irair?.meterType);"
                  }
                },
                "rotation_speed": {
                  "title": "Enable Rotation Speed",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Fan' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Fan') && model.options.irdevices[arrayIndices].deviceId);"
                  }
                },
                "swing_mode": {
                  "title": "Enable Swing Mode",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Fan' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Fan') && model.options.irdevices[arrayIndices].deviceId);"
                  }
                },
                "set_minStep": {
                  "title": "Set Min Step",
                  "type": "number",
                  "placeholder": "1",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Fan' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Fan') && model.options.irdevices[arrayIndices].deviceId && model.options.irdevices[arrayIndices].irfan && !model.options.irdevices[arrayIndices].irfan.rotation_speed);"
                  }
                },
                "set_min": {
                  "title": "Set Min",
                  "type": "number",
                  "placeholder": "0",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Fan' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Fan') && model.options.irdevices[arrayIndices].deviceId && model.options.irdevices[arrayIndices].irfan && !model.options.irdevices[arrayIndices].irfan.rotation_speed);"
                  }
                },
                "set_max": {
                  "title": "Set Max",
                  "type": "number",
                  "placeholder": "100",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Fan' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Fan') && model.options.irdevices[arrayIndices].deviceId && model.options.irdevices[arrayIndices].irfan && !model.options.irdevices[arrayIndices].irfan.rotation_speed);"
                  }
                },
                "stateless": {
                  "title": "Enable Stateless Buttons",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && !model.options.irdevices[arrayIndices].hide_device && (model.options.irdevices[arrayIndices].configRemoteType === 'Light' || model.options.irdevices[arrayIndices].configRemoteType === 'DIY Light') && model.options.irdevices[arrayIndices].deviceId);"
                  }
                },
                "external": {
                  "title": "External Accessory",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device && model.options.irdevices[arrayIndices].configRemoteType);"
                  }
                },
                "disableCaching": {
                  "title": "Disable Caching",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device);"
                  }
                },
                "offline": {
                  "title": "Offline as Off",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device);"
                  }
                },
                "history": {
                  "title": "EVE History",
                  "type": "boolean",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device);"
                  }
                },
                "firmware": {
                  "title": "Firmware Override",
                  "type": "string",
                  "placeholder": "1.2.8",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device && model.options.irdevices[arrayIndices].configRemoteType);"
                  }
                },
                "logging": {
                  "title": "Device Logging Override Setting",
                  "type": "string",
                  "default": "",
                  "oneOf": [
                    {
                      "title": "Debug Logging",
                      "enum": [
                        "debug"
                      ]
                    },
                    {
                      "title": "Default Logging",
                      "enum": [
                        ""
                      ]
                    },
                    {
                      "title": "No Logging",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "title": "Standard Logging",
                      "enum": [
                        "standard"
                      ]
                    }
                  ],
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device && model.options.irdevices[arrayIndices].configRemoteType);"
                  }
                },
                "refreshRate": {
                  "title": "Device Refresh Rate",
                  "type": "number",
                  "placeholder": 360,
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device);"
                  }
                },
                "updateRate": {
                  "title": "Update Rate",
                  "type": "number",
                  "minimum": 1,
                  "placeholder": 5,
                  "description": "Indicates the number of seconds before refreshing status while updating progress.",
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device);"
                  }
                },
                "pushRate": {
                  "title": "Device Push Rate",
                  "type": "number",
                  "placeholder": 360,
                  "condition": {
                    "functionBody": "return (model.options && model.options.irdevices && model.options.irdevices[arrayIndices].deviceId && !model.options.irdevices[arrayIndices].hide_device);"
                  }
                }
              }
            },
            "uniqueItems": true
          },
          "irdeviceConfig": {
            "type": "object",
            "properties": {
              "TV": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR TVs",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['TV'] && !model.options.irdeviceConfig['TV'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['TV'] && !model.options.irdeviceConfig['TV'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['TV'] && !model.options.irdeviceConfig['TV'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['TV'] && !model.options.irdeviceConfig['TV'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['TV'] && !model.options.irdeviceConfig['TV'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['TV'] && !model.options.irdeviceConfig['TV'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['TV'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['TV'] && !model.options.irdeviceConfig['TV'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['TV'] && !model.options.irdeviceConfig['TV'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['TV'] && !model.options.irdeviceConfig['TV'].hide_device);"
                    }
                  }
                }
              },
              "DIY TV": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY TVs",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY TV'] && !model.options.irdeviceConfig['DIY TV'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY TV'] && !model.options.irdeviceConfig['DIY TV'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY TV'] && !model.options.irdeviceConfig['DIY TV'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY TV'] && !model.options.irdeviceConfig['DIY TV'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY TV'] && !model.options.irdeviceConfig['DIY TV'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY TV'] && !model.options.irdeviceConfig['DIY TV'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY TV'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY TV'] && !model.options.irdeviceConfig['DIY TV'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY TV'] && !model.options.irdeviceConfig['DIY TV'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY TV'] && !model.options.irdeviceConfig['DIY TV'].hide_device);"
                    }
                  }
                }
              },
              "Projector": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR Projectors",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Projector'] && !model.options.irdeviceConfig['Projector'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Projector'] && !model.options.irdeviceConfig['Projector'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Projector'] && !model.options.irdeviceConfig['Projector'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Projector'] && !model.options.irdeviceConfig['Projector'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Projector'] && !model.options.irdeviceConfig['Projector'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Projector'] && !model.options.irdeviceConfig['Projector'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['Projector'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Projector'] && !model.options.irdeviceConfig['Projector'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Projector'] && !model.options.irdeviceConfig['Projector'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Projector'] && !model.options.irdeviceConfig['Projector'].hide_device);"
                    }
                  }
                }
              },
              "DIY Projector": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY Projectors",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Projector'] && !model.options.irdeviceConfig['DIY Projector'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Projector'] && !model.options.irdeviceConfig['DIY Projector'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Projector'] && !model.options.irdeviceConfig['DIY Projector'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Projector'] && !model.options.irdeviceConfig['DIY Projector'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Projector'] && !model.options.irdeviceConfig['DIY Projector'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Projector'] && !model.options.irdeviceConfig['DIY Projector'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY Projector'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Projector'] && !model.options.irdeviceConfig['DIY Projector'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Projector'] && !model.options.irdeviceConfig['DIY Projector'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Projector'] && !model.options.irdeviceConfig['DIY Projector'].hide_device);"
                    }
                  }
                }
              },
              "Set Top Box": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR Set Top Boxes",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Set Top Box'] && !model.options.irdeviceConfig['Set Top Box'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Set Top Box'] && !model.options.irdeviceConfig['Set Top Box'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Set Top Box'] && !model.options.irdeviceConfig['Set Top Box'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Set Top Box'] && !model.options.irdeviceConfig['Set Top Box'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Set Top Box'] && !model.options.irdeviceConfig['Set Top Box'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Set Top Box'] && !model.options.irdeviceConfig['Set Top Box'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['Set Top Box'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Set Top Box'] && !model.options.irdeviceConfig['Set Top Box'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Set Top Box'] && !model.options.irdeviceConfig['Set Top Box'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Set Top Box'] && !model.options.irdeviceConfig['Set Top Box'].hide_device);"
                    }
                  }
                }
              },
              "DIY Set Top Box": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY Set Top Boxes",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Set Top Box'] && !model.options.irdeviceConfig['DIY Set Top Box'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Set Top Box'] && !model.options.irdeviceConfig['DIY Set Top Box'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Set Top Box'] && !model.options.irdeviceConfig['DIY Set Top Box'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Set Top Box'] && !model.options.irdeviceConfig['DIY Set Top Box'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Set Top Box'] && !model.options.irdeviceConfig['DIY Set Top Box'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Set Top Box'] && !model.options.irdeviceConfig['DIY Set Top Box'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY Set Top Box'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Set Top Box'] && !model.options.irdeviceConfig['DIY Set Top Box'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Set Top Box'] && !model.options.irdeviceConfig['DIY Set Top Box'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Set Top Box'] && !model.options.irdeviceConfig['DIY Set Top Box'].hide_device);"
                    }
                  }
                }
              },
              "IPTV": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR IPTVs",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['IPTV'] && !model.options.irdeviceConfig['IPTV'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['IPTV'] && !model.options.irdeviceConfig['IPTV'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['IPTV'] && !model.options.irdeviceConfig['IPTV'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['IPTV'] && !model.options.irdeviceConfig['IPTV'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['IPTV'] && !model.options.irdeviceConfig['IPTV'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['IPTV'] && !model.options.irdeviceConfig['IPTV'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['IPTV'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['IPTV'] && !model.options.irdeviceConfig['IPTV'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['IPTV'] && !model.options.irdeviceConfig['IPTV'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['IPTV'] && !model.options.irdeviceConfig['IPTV'].hide_device);"
                    }
                  }
                }
              },
              "DIY IPTV": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY IPTVs",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY IPTV'] && !model.options.irdeviceConfig['DIY IPTV'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY IPTV'] && !model.options.irdeviceConfig['DIY IPTV'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY IPTV'] && !model.options.irdeviceConfig['DIY IPTV'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY IPTV'] && !model.options.irdeviceConfig['DIY IPTV'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY IPTV'] && !model.options.irdeviceConfig['DIY IPTV'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY IPTV'] && !model.options.irdeviceConfig['DIY IPTV'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY IPTV'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY IPTV'] && !model.options.irdeviceConfig['DIY IPTV'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY IPTV'] && !model.options.irdeviceConfig['DIY IPTV'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY IPTV'] && !model.options.irdeviceConfig['DIY IPTV'].hide_device);"
                    }
                  }
                }
              },
              "DVD": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DVDs",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DVD'] && !model.options.irdeviceConfig['DVD'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DVD'] && !model.options.irdeviceConfig['DVD'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DVD'] && !model.options.irdeviceConfig['DVD'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DVD'] && !model.options.irdeviceConfig['DVD'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DVD'] && !model.options.irdeviceConfig['DVD'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DVD'] && !model.options.irdeviceConfig['DVD'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DVD'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DVD'] && !model.options.irdeviceConfig['DVD'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DVD'] && !model.options.irdeviceConfig['DVD'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DVD'] && !model.options.irdeviceConfig['DVD'].hide_device);"
                    }
                  }
                }
              },
              "DIY DVD": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY DVDs",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY DVD'] && !model.options.irdeviceConfig['DIY DVD'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY DVD'] && !model.options.irdeviceConfig['DIY DVD'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY DVD'] && !model.options.irdeviceConfig['DIY DVD'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY DVD'] && !model.options.irdeviceConfig['DIY DVD'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY DVD'] && !model.options.irdeviceConfig['DIY DVD'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY DVD'] && !model.options.irdeviceConfig['DIY DVD'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY DVD'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY DVD'] && !model.options.irdeviceConfig['DIY DVD'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY DVD'] && !model.options.irdeviceConfig['DIY DVD'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY DVD'] && !model.options.irdeviceConfig['DIY DVD'].hide_device);"
                    }
                  }
                }
              },
              "Speaker": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR Speakers",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Speaker'] && !model.options.irdeviceConfig['Speaker'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Speaker'] && !model.options.irdeviceConfig['Speaker'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Speaker'] && !model.options.irdeviceConfig['Speaker'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Speaker'] && !model.options.irdeviceConfig['Speaker'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Speaker'] && !model.options.irdeviceConfig['Speaker'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Speaker'] && !model.options.irdeviceConfig['Speaker'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['Speaker'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Speaker'] && !model.options.irdeviceConfig['Speaker'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Speaker'] && !model.options.irdeviceConfig['Speaker'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Speaker'] && !model.options.irdeviceConfig['Speaker'].hide_device);"
                    }
                  }
                }
              },
              "DIY Speaker": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY Speakers",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Speaker'] && !model.options.irdeviceConfig['DIY Speaker'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Speaker'] && !model.options.irdeviceConfig['DIY Speaker'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Speaker'] && !model.options.irdeviceConfig['DIY Speaker'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Speaker'] && !model.options.irdeviceConfig['DIY Speaker'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Speaker'] && !model.options.irdeviceConfig['DIY Speaker'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Speaker'] && !model.options.irdeviceConfig['DIY Speaker'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY Speaker'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Speaker'] && !model.options.irdeviceConfig['DIY Speaker'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Speaker'] && !model.options.irdeviceConfig['DIY Speaker'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Speaker'] && !model.options.irdeviceConfig['DIY Speaker'].hide_device);"
                    }
                  }
                }
              },
              "Fan": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR Fans",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Fan'] && !model.options.irdeviceConfig['Fan'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Fan'] && !model.options.irdeviceConfig['Fan'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Fan'] && !model.options.irdeviceConfig['Fan'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Fan'] && !model.options.irdeviceConfig['Fan'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Fan'] && !model.options.irdeviceConfig['Fan'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Fan'] && !model.options.irdeviceConfig['Fan'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['Fan'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Fan'] && !model.options.irdeviceConfig['Fan'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Fan'] && !model.options.irdeviceConfig['Fan'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Fan'] && !model.options.irdeviceConfig['Fan'].hide_device);"
                    }
                  }
                }
              },
              "DIY Fan": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY Fans",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Fan'] && !model.options.irdeviceConfig['DIY Fan'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Fan'] && !model.options.irdeviceConfig['DIY Fan'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Fan'] && !model.options.irdeviceConfig['DIY Fan'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Fan'] && !model.options.irdeviceConfig['DIY Fan'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Fan'] && !model.options.irdeviceConfig['DIY Fan'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Fan'] && !model.options.irdeviceConfig['DIY Fan'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY Fan'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Fan'] && !model.options.irdeviceConfig['DIY Fan'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Fan'] && !model.options.irdeviceConfig['DIY Fan'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Fan'] && !model.options.irdeviceConfig['DIY Fan'].hide_device);"
                    }
                  }
                }
              },
              "Air Conditioner": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR Air Conditioners",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Conditioner'] && !model.options.irdeviceConfig['Air Conditioner'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Conditioner'] && !model.options.irdeviceConfig['Air Conditioner'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Conditioner'] && !model.options.irdeviceConfig['Air Conditioner'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Conditioner'] && !model.options.irdeviceConfig['Air Conditioner'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Conditioner'] && !model.options.irdeviceConfig['Air Conditioner'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Conditioner'] && !model.options.irdeviceConfig['Air Conditioner'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['Air Conditioner'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Conditioner'] && !model.options.irdeviceConfig['Air Conditioner'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Conditioner'] && !model.options.irdeviceConfig['Air Conditioner'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Conditioner'] && !model.options.irdeviceConfig['Air Conditioner'].hide_device);"
                    }
                  }
                }
              },
              "DIY Air Conditioner": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY Air Conditioners",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Conditioner'] && !model.options.irdeviceConfig['DIY Air Conditioner'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Conditioner'] && !model.options.irdeviceConfig['DIY Air Conditioner'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Conditioner'] && !model.options.irdeviceConfig['DIY Air Conditioner'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Conditioner'] && !model.options.irdeviceConfig['DIY Air Conditioner'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Conditioner'] && !model.options.irdeviceConfig['DIY Air Conditioner'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Conditioner'] && !model.options.irdeviceConfig['DIY Air Conditioner'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY Air Conditioner'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Conditioner'] && !model.options.irdeviceConfig['DIY Air Conditioner'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Conditioner'] && !model.options.irdeviceConfig['DIY Air Conditioner'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Conditioner'] && !model.options.irdeviceConfig['DIY Air Conditioner'].hide_device);"
                    }
                  }
                }
              },
              "Light": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR Lights",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Light'] && !model.options.irdeviceConfig['Light'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Light'] && !model.options.irdeviceConfig['Light'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Light'] && !model.options.irdeviceConfig['Light'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Light'] && !model.options.irdeviceConfig['Light'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Light'] && !model.options.irdeviceConfig['Light'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Light'] && !model.options.irdeviceConfig['Light'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['Light'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Light'] && !model.options.irdeviceConfig['Light'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Light'] && !model.options.irdeviceConfig['Light'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Light'] && !model.options.irdeviceConfig['Light'].hide_device);"
                    }
                  }
                }
              },
              "DIY Light": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY Lights",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Light'] && !model.options.irdeviceConfig['DIY Light'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Light'] && !model.options.irdeviceConfig['DIY Light'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Light'] && !model.options.irdeviceConfig['DIY Light'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Light'] && !model.options.irdeviceConfig['DIY Light'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Light'] && !model.options.irdeviceConfig['DIY Light'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Light'] && !model.options.irdeviceConfig['DIY Light'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY Light'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Light'] && !model.options.irdeviceConfig['DIY Light'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Light'] && !model.options.irdeviceConfig['DIY Light'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Light'] && !model.options.irdeviceConfig['DIY Light'].hide_device);"
                    }
                  }
                }
              },
              "Air Purifier": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR Air Purifiers",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Purifier'] && !model.options.irdeviceConfig['Air Purifier'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Purifier'] && !model.options.irdeviceConfig['Air Purifier'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Purifier'] && !model.options.irdeviceConfig['Air Purifier'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Purifier'] && !model.options.irdeviceConfig['Air Purifier'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Purifier'] && !model.options.irdeviceConfig['Air Purifier'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Purifier'] && !model.options.irdeviceConfig['Air Purifier'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['Air Purifier'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Purifier'] && !model.options.irdeviceConfig['Air Purifier'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Purifier'] && !model.options.irdeviceConfig['Air Purifier'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Air Purifier'] && !model.options.irdeviceConfig['Air Purifier'].hide_device);"
                    }
                  }
                }
              },
              "DIY Air Purifier": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY Air Purifiers",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Purifier'] && !model.options.irdeviceConfig['DIY Air Purifier'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Purifier'] && !model.options.irdeviceConfig['DIY Air Purifier'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Purifier'] && !model.options.irdeviceConfig['DIY Air Purifier'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Purifier'] && !model.options.irdeviceConfig['DIY Air Purifier'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Purifier'] && !model.options.irdeviceConfig['DIY Air Purifier'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Purifier'] && !model.options.irdeviceConfig['DIY Air Purifier'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY Air Purifier'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Purifier'] && !model.options.irdeviceConfig['DIY Air Purifier'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Purifier'] && !model.options.irdeviceConfig['DIY Air Purifier'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Air Purifier'] && !model.options.irdeviceConfig['DIY Air Purifier'].hide_device);"
                    }
                  }
                }
              },
              "Water Heater": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR Water Heaters",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Water Heater'] && !model.options.irdeviceConfig['Water Heater'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Water Heater'] && !model.options.irdeviceConfig['Water Heater'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Water Heater'] && !model.options.irdeviceConfig['Water Heater'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Water Heater'] && !model.options.irdeviceConfig['Water Heater'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Water Heater'] && !model.options.irdeviceConfig['Water Heater'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Water Heater'] && !model.options.irdeviceConfig['Water Heater'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['Water Heater'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Water Heater'] && !model.options.irdeviceConfig['Water Heater'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Water Heater'] && !model.options.irdeviceConfig['Water Heater'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Water Heater'] && !model.options.irdeviceConfig['Water Heater'].hide_device);"
                    }
                  }
                }
              },
              "DIY Water Heater": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY Water Heaters",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Water Heater'] && !model.options.irdeviceConfig['DIY Water Heater'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Water Heater'] && !model.options.irdeviceConfig['DIY Water Heater'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Water Heater'] && !model.options.irdeviceConfig['DIY Water Heater'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Water Heater'] && !model.options.irdeviceConfig['DIY Water Heater'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Water Heater'] && !model.options.irdeviceConfig['DIY Water Heater'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Water Heater'] && !model.options.irdeviceConfig['DIY Water Heater'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY Water Heater'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Water Heater'] && !model.options.irdeviceConfig['DIY Water Heater'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Water Heater'] && !model.options.irdeviceConfig['DIY Water Heater'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Water Heater'] && !model.options.irdeviceConfig['DIY Water Heater'].hide_device);"
                    }
                  }
                }
              },
              "Vacuum Cleaner": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR Vacuum Cleaners",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Vacuum Cleaner'] && !model.options.irdeviceConfig['Vacuum Cleaner'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Vacuum Cleaner'] && !model.options.irdeviceConfig['Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Vacuum Cleaner'] && !model.options.irdeviceConfig['Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Vacuum Cleaner'] && !model.options.irdeviceConfig['Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Vacuum Cleaner'] && !model.options.irdeviceConfig['Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Vacuum Cleaner'] && !model.options.irdeviceConfig['Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['Vacuum Cleaner'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Vacuum Cleaner'] && !model.options.irdeviceConfig['Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Vacuum Cleaner'] && !model.options.irdeviceConfig['Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Vacuum Cleaner'] && !model.options.irdeviceConfig['Vacuum Cleaner'].hide_device);"
                    }
                  }
                }
              },
              "DIY Vacuum Cleaner": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY Vacuum Cleaners",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Vacuum Cleaner'] && !model.options.irdeviceConfig['DIY Vacuum Cleaner'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Vacuum Cleaner'] && !model.options.irdeviceConfig['DIY Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Vacuum Cleaner'] && !model.options.irdeviceConfig['DIY Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Vacuum Cleaner'] && !model.options.irdeviceConfig['DIY Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Vacuum Cleaner'] && !model.options.irdeviceConfig['DIY Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Vacuum Cleaner'] && !model.options.irdeviceConfig['DIY Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY Vacuum Cleaner'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Vacuum Cleaner'] && !model.options.irdeviceConfig['DIY Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Vacuum Cleaner'] && !model.options.irdeviceConfig['DIY Vacuum Cleaner'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Vacuum Cleaner'] && !model.options.irdeviceConfig['DIY Vacuum Cleaner'].hide_device);"
                    }
                  }
                }
              },
              "Camera": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR Cameras",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Camera'] && !model.options.irdeviceConfig['Camera'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Camera'] && !model.options.irdeviceConfig['Camera'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Camera'] && !model.options.irdeviceConfig['Camera'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Camera'] && !model.options.irdeviceConfig['Camera'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Camera'] && !model.options.irdeviceConfig['Camera'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Camera'] && !model.options.irdeviceConfig['Camera'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['Camera'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Camera'] && !model.options.irdeviceConfig['Camera'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Camera'] && !model.options.irdeviceConfig['Camera'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Camera'] && !model.options.irdeviceConfig['Camera'].hide_device);"
                    }
                  }
                }
              },
              "DIY Camera": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All IR DIY Cameras",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Camera'] && !model.options.irdeviceConfig['DIY Camera'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Camera'] && !model.options.irdeviceConfig['DIY Camera'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Camera'] && !model.options.irdeviceConfig['DIY Camera'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Camera'] && !model.options.irdeviceConfig['DIY Camera'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Camera'] && !model.options.irdeviceConfig['DIY Camera'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Camera'] && !model.options.irdeviceConfig['DIY Camera'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['DIY Camera'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Camera'] && !model.options.irdeviceConfig['DIY Camera'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Camera'] && !model.options.irdeviceConfig['DIY Camera'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['DIY Camera'] && !model.options.irdeviceConfig['DIY Camera'].hide_device);"
                    }
                  }
                }
              },
              "Others": {
                "type": "object",
                "properties": {
                  "hide_device": {
                    "title": "Hide All Others",
                    "type": "boolean",
                    "description": "If true, device will be removed or hidden from HomeKit."
                  },
                  "connectionType": {
                    "title": "Connection Type",
                    "type": "string",
                    "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Others'] && !model.options.irdeviceConfig['Others'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Disable",
                        "enum": [
                          "Disabled"
                        ]
                      },
                      {
                        "title": "OpenAPI",
                        "enum": [
                          "OpenAPI"
                        ]
                      }
                    ]
                  },
                  "external": {
                    "title": "External Accessory",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Others'] && !model.options.irdeviceConfig['Others'].hide_device);"
                    }
                  },
                  "disableCaching": {
                    "title": "Disable Caching",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Others'] && !model.options.irdeviceConfig['Others'].hide_device);"
                    }
                  },
                  "offline": {
                    "title": "Offline as Off",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Others'] && !model.options.irdeviceConfig['Others'].hide_device);"
                    }
                  },
                  "history": {
                    "title": "EVE History",
                    "type": "boolean",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Others'] && !model.options.irdeviceConfig['Others'].hide_device);"
                    }
                  },
                  "firmware": {
                    "title": "Firmware Override",
                    "type": "string",
                    "placeholder": "1.2.8",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Others'] && !model.options.irdeviceConfig['Others'].hide_device);"
                    }
                  },
                  "logging": {
                    "title": "Logging by Device Type",
                    "type": "string",
                    "default": "",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && !model.options.irdeviceConfig['Others'].hide_device);"
                    },
                    "oneOf": [
                      {
                        "title": "Debug Logging",
                        "enum": [
                          "debug"
                        ]
                      },
                      {
                        "title": "Default Logging",
                        "enum": [
                          ""
                        ]
                      },
                      {
                        "title": "No Logging",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "title": "Standard Logging",
                        "enum": [
                          "standard"
                        ]
                      }
                    ]
                  },
                  "refreshRate": {
                    "title": "Device Refresh Rate",
                    "type": "number",
                    "placeholder": 5,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Others'] && !model.options.irdeviceConfig['Others'].hide_device);"
                    }
                  },
                  "updateRate": {
                    "title": "Update Rate",
                    "type": "number",
                    "minimum": 1,
                    "placeholder": 5,
                    "description": "Indicates the number of seconds before refreshing status while updating progress.",
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Others'] && !model.options.irdeviceConfig['Others'].hide_device);"
                    }
                  },
                  "pushRate": {
                    "title": "Device Push Rate",
                    "type": "number",
                    "placeholder": 360,
                    "condition": {
                      "functionBody": "return (model.options && model.options.irdeviceConfig && model.options.irdeviceConfig['Others'] && !model.options.irdeviceConfig['Others'].hide_device);"
                    }
                  }
                }
              }
            }
          },
          "BLE": {
            "title": "Enable BLE Scanning",
            "type": "boolean"
          },
          "discoverBLE": {
            "title": "Discover BLE Devices",
            "type": "boolean"
          },
          "disableLogsforBLE": {
            "title": "Disable Logging from BLE",
            "type": "boolean"
          },
          "disableLogsforOpenAPI": {
            "title": "Disable Logging from OpenAPI",
            "type": "boolean"
          },
          "hostname": {
            "title": "hostname",
            "type": "string",
            "placeholder": "https://api.switch-bot.com",
            "description": "Allows for the override of the SwitchBot API hostname."
          },
          "webhookURL": {
            "title": "Webhook URL",
            "type": "string",
            "placeholder": "http://${FQDN}:${PORT}/${PATH}"
          },
          "mqttURL": {
            "title": "MQTT URL",
            "type": "string",
            "placeholder": "192.168.7.1"
          },
          "mqttOptions": {
            "title": "MQTT Options",
            "type": "string"
          },
          "mqttPubOptions": {
            "title": "MQTT Pub Options",
            "type": "string"
          },
          "maxRetries": {
            "title": "Max Retries for OpenAPI",
            "type": "number",
            "placeholder": 5
          },
          "delayBetweenRetries": {
            "title": "Delay Between Retries for OpenAPI (In Seconds)",
            "type": "number",
            "placeholder": 3
          },
          "refreshRate": {
            "title": "Refresh Rate",
            "type": "number",
            "placeholder": 360
          },
          "updateRate": {
            "title": "Update Rate",
            "type": "number",
            "placeholder": 5
          },
          "pushRate": {
            "title": "Push Rate",
            "type": "number",
            "placeholder": 1
          },
          "logging": {
            "title": "Logging Setting",
            "type": "string",
            "default": "standard",
            "oneOf": [
              {
                "title": "Debug Logging",
                "enum": [
                  "debug"
                ]
              },
              {
                "title": "No Logging",
                "enum": [
                  "none"
                ]
              },
              {
                "title": "Standard Logging",
                "enum": [
                  "standard"
                ]
              }
            ]
          },
          "allowInvalidCharacters": {
            "title": "Allow Invalid Characters",
            "type": "boolean",
            "description": "If true, invalid characters will be allowed in the device name."
          }
        },
        "required": [
          "name",
          "logging"
        ]
      }
    }
  },
  "layout": [
    {
      "type": "fieldset",
      "title": "SwitchBot Account Info",
      "expandable": true,
      "expanded": false,
      "items": [
        "credentials.token",
        "credentials.secret"
      ]
    },
    {
      "type": "fieldset",
      "title": "SwitchBot Device Settings",
      "expandable": true,
      "expanded": false,
      "items": [
        {
          "type": "help",
          "helpvalue": "<em class='primary-text'>With SwitchBot Device Setting, you can set device specific settings based on <b style='color: var(--secondary-color);'>deviceId</b>. This will override Device Type Settings</em>"
        },
        {
          "key": "options.devices",
          "notitle": false,
          "type": "tabarray",
          "title": "{{ value.configDeviceName || value.deviceId || 'New SwitchBot Device' }}",
          "expandable": true,
          "expanded": false,
          "draggable": true,
          "orderable": true,
          "items": [
            "options.devices[].configDeviceName",
            "options.devices[].deviceId",
            "options.devices[].hide_device",
            "options.devices[].configDeviceType",
            "options.devices[].connectionType",
            "options.devices[].disablePlatformBLE",
            "options.devices[].scanDuration",
            "options.devices[].customBLEaddress",
            "options.devices[].webhook",
            "options.devices[].type",
            "options.devices[].mode",
            "options.devices[].mapping",
            "options.devices[].allowPush",
            "options.devices[].doublePress",
            "options.devices[].pushRatePress",
            "options.devices[].hide_temperature",
            "options.devices[].convertUnitTo",
            "options.devices[].hide_humidity",
            "options.devices[].hide_lightsensor",
            "options.devices[].hide_motionsensor",
            "options.devices[].hide_contactsensor",
            "options.devices[].hide_leak",
            "options.devices[].disable_group",
            "options.devices[].disableCaching",
            "options.devices[].adaptiveLightingShift",
            "options.devices[].activate_latchbutton",
            "options.devices[].dry",
            "options.devices[].set_minStep",
            "options.devices[].set_min",
            "options.devices[].set_max",
            "options.devices[].set_minlux",
            "options.devices[].set_maxlux",
            "options.devices[].setOpenMode",
            "options.devices[].setCloseMode",
            "options.devices[].silentModeSwitch",
            "options.devices[].maxRetry",
            "options.devices[].maxRetries",
            "options.devices[].delayBetweenRetries",
            "options.devices[].mqttURL",
            "options.devices[].mqttOptions",
            "options.devices[].mqttPubOptions",
            "options.devices[].history",
            "options.devices[].offline",
            "options.devices[].firmware",
            "options.devices[].external",
            "options.devices[].logging",
            {
              "key": "options.devices[].refreshRate",
              "description": "<em class='primary-text'>Specifies the interval, in seconds, for retrieving the latest device status from the SwitchBot API. This interval applies only to this specific device.</em>"
            },
            {
              "key": "options.devices[].updateRate",
              "description": "<em class='primary-text'>Specifies the interval, in seconds, at which this device will request updates from the SwitchBot API while the device is in motion, for Curtain(s) and Blind Tilt(s) only.</em>"
            },
            {
              "key": "options.devices[].pushRate",
              "description": "<em class='primary-text'>Specifies the interval, in seconds, between pushes to the SwitchBot API for this specific device.</em>"
            }
          ]
        }
      ]
    },
    {
      "type": "fieldset",
      "title": "SwitchBot Device Type Settings",
      "expandable": true,
      "expanded": false,
      "items": [
        {
          "type": "help",
          "helpvalue": "<em class='primary-text'>Setting a Device Type Setting will <b style='color: var(--secondary-color);'>not</b> override indiviudally set setting on SwithBot Device Settings.</em>"
        },
        {
          "type": "fieldset",
          "title": "Humidifier Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Humidifier'].hide_device",
            "options.deviceConfig['Humidifier'].hide_temperature",
            "options.deviceConfig['Humidifier'].convertUnitTo",
            "options.deviceConfig['Humidifier'].set_minStep",
            "options.deviceConfig['Humidifier'].connectionType",
            "options.deviceConfig['Humidifier'].disablePlatformBLE",
            "options.deviceConfig['Humidifier'].scanDuration",
            "options.deviceConfig['Humidifier'].webhook",
            "options.deviceConfig['Humidifier'].external",
            "options.deviceConfig['Humidifier'].maxRetry",
            "options.deviceConfig['Humidifier'].maxRetries",
            "options.deviceConfig['Humidifier'].delayBetweenRetries",
            "options.deviceConfig['Humidifier'].disableCaching",
            "options.deviceConfig['Humidifier'].offline",
            "options.deviceConfig['Humidifier'].history",
            "options.deviceConfig['Humidifier'].firmware",
            "options.deviceConfig['Humidifier'].logging",
            "options.deviceConfig['Humidifier'].refreshRate",
            "options.deviceConfig['Humidifier'].updateRate",
            "options.deviceConfig['Humidifier'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Hub 2 Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Hub 2'].hide_device",
            "options.deviceConfig['Hub 2'].hide_temperature",
            "options.deviceConfig['Hub 2'].convertUnitTo",
            "options.deviceConfig['Hub 2'].hide_humidity",
            "options.deviceConfig['Hub 2'].connectionType",
            "options.deviceConfig['Hub 2'].disablePlatformBLE",
            "options.deviceConfig['Hub 2'].scanDuration",
            "options.deviceConfig['Hub 2'].webhook",
            "options.deviceConfig['Hub 2'].external",
            "options.deviceConfig['Hub 2'].maxRetry",
            "options.deviceConfig['Hub 2'].maxRetries",
            "options.deviceConfig['Hub 2'].delayBetweenRetries",
            "options.deviceConfig['Hub 2'].disableCaching",
            "options.deviceConfig['Hub 2'].offline",
            "options.deviceConfig['Hub 2'].history",
            "options.deviceConfig['Hub 2'].firmware",
            "options.deviceConfig['Hub 2'].logging",
            "options.deviceConfig['Hub 2'].refreshRate",
            "options.deviceConfig['Hub 2'].updateRate",
            "options.deviceConfig['Hub 2'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Bot Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Bot'].hide_device",
            "options.deviceConfig['Bot'].mode",
            "options.deviceConfig['Bot'].type",
            "options.deviceConfig['Bot'].doublePress",
            "options.deviceConfig['Bot'].pushRatePress",
            "options.deviceConfig['Bot'].allowPush",
            "options.deviceConfig['Bot'].connectionType",
            "options.deviceConfig['Bot'].disablePlatformBLE",
            "options.deviceConfig['Bot'].scanDuration",
            "options.deviceConfig['Bot'].webhook",
            "options.deviceConfig['Bot'].external",
            "options.deviceConfig['Bot'].maxRetry",
            "options.deviceConfig['Bot'].maxRetries",
            "options.deviceConfig['Bot'].delayBetweenRetries",
            "options.deviceConfig['Bot'].disableCaching",
            "options.deviceConfig['Bot'].offline",
            "options.deviceConfig['Bot'].history",
            "options.deviceConfig['Bot'].firmware",
            "options.deviceConfig['Bot'].logging",
            "options.deviceConfig['Bot'].refreshRate",
            "options.deviceConfig['Bot'].updateRate",
            "options.deviceConfig['Bot'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Relay Switch 1 Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Relay Switch 1'].hide_device",
            "options.deviceConfig['Relay Switch 1'].type",
            "options.deviceConfig['Relay Switch 1'].allowPush",
            "options.deviceConfig['Relay Switch 1'].connectionType",
            "options.deviceConfig['Relay Switch 1'].disablePlatformBLE",
            "options.deviceConfig['Relay Switch 1'].scanDuration",
            "options.deviceConfig['Relay Switch 1'].webhook",
            "options.deviceConfig['Relay Switch 1'].external",
            "options.deviceConfig['Relay Switch 1'].maxRetry",
            "options.deviceConfig['Relay Switch 1'].maxRetries",
            "options.deviceConfig['Relay Switch 1'].delayBetweenRetries",
            "options.deviceConfig['Relay Switch 1'].disableCaching",
            "options.deviceConfig['Relay Switch 1'].offline",
            "options.deviceConfig['Relay Switch 1'].history",
            "options.deviceConfig['Relay Switch 1'].firmware",
            "options.deviceConfig['Relay Switch 1'].logging",
            "options.deviceConfig['Relay Switch 1'].refreshRate",
            "options.deviceConfig['Relay Switch 1'].updateRate",
            "options.deviceConfig['Relay Switch 1'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Relay Switch 1PM Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Relay Switch 1PM'].hide_device",
            "options.deviceConfig['Relay Switch 1PM'].type",
            "options.deviceConfig['Relay Switch 1PM'].allowPush",
            "options.deviceConfig['Relay Switch 1PM'].connectionType",
            "options.deviceConfig['Relay Switch 1PM'].disablePlatformBLE",
            "options.deviceConfig['Relay Switch 1PM'].scanDuration",
            "options.deviceConfig['Relay Switch 1PM'].webhook",
            "options.deviceConfig['Relay Switch 1PM'].external",
            "options.deviceConfig['Relay Switch 1PM'].maxRetry",
            "options.deviceConfig['Relay Switch 1PM'].maxRetries",
            "options.deviceConfig['Relay Switch 1PM'].delayBetweenRetries",
            "options.deviceConfig['Relay Switch 1PM'].disableCaching",
            "options.deviceConfig['Relay Switch 1PM'].offline",
            "options.deviceConfig['Relay Switch 1PM'].history",
            "options.deviceConfig['Relay Switch 1PM'].firmware",
            "options.deviceConfig['Relay Switch 1PM'].logging",
            "options.deviceConfig['Relay Switch 1PM'].refreshRate",
            "options.deviceConfig['Relay Switch 1PM'].updateRate",
            "options.deviceConfig['Relay Switch 1PM'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Meter Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Meter'].hide_device",
            "options.deviceConfig['Meter'].hide_temperature",
            "options.deviceConfig['Meter'].convertUnitTo",
            "options.deviceConfig['Meter'].hide_humidity",
            "options.deviceConfig['Meter'].connectionType",
            "options.deviceConfig['Meter'].disablePlatformBLE",
            "options.deviceConfig['Meter'].scanDuration",
            "options.deviceConfig['Meter'].webhook",
            "options.deviceConfig['Meter'].external",
            "options.deviceConfig['Meter'].maxRetry",
            "options.deviceConfig['Meter'].maxRetries",
            "options.deviceConfig['Meter'].delayBetweenRetries",
            "options.deviceConfig['Meter'].disableCaching",
            "options.deviceConfig['Meter'].offline",
            "options.deviceConfig['Meter'].history",
            "options.deviceConfig['Meter'].firmware",
            "options.deviceConfig['Meter'].logging",
            "options.deviceConfig['Meter'].refreshRate",
            "options.deviceConfig['Meter'].updateRate",
            "options.deviceConfig['Meter'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Meter Plus Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['MeterPlus'].hide_device",
            "options.deviceConfig['MeterPlus'].hide_temperature",
            "options.deviceConfig['MeterPlus'].convertUnitTo",
            "options.deviceConfig['MeterPlus'].hide_humidity",
            "options.deviceConfig['MeterPlus'].connectionType",
            "options.deviceConfig['MeterPlus'].disablePlatformBLE",
            "options.deviceConfig['MeterPlus'].scanDuration",
            "options.deviceConfig['MeterPlus'].webhook",
            "options.deviceConfig['MeterPlus'].external",
            "options.deviceConfig['MeterPlus'].maxRetry",
            "options.deviceConfig['MeterPlus'].maxRetries",
            "options.deviceConfig['MeterPlus'].delayBetweenRetries",
            "options.deviceConfig['MeterPlus'].disableCaching",
            "options.deviceConfig['MeterPlus'].offline",
            "options.deviceConfig['MeterPlus'].history",
            "options.deviceConfig['MeterPlus'].firmware",
            "options.deviceConfig['MeterPlus'].logging",
            "options.deviceConfig['MeterPlus'].refreshRate",
            "options.deviceConfig['MeterPlus'].updateRate",
            "options.deviceConfig['MeterPlus'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Meter Plus (JP) Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Meter Plus (JP)'].hide_device",
            "options.deviceConfig['Meter Plus (JP)'].hide_temperature",
            "options.deviceConfig['Meter Plus (JP)'].convertUnitTo",
            "options.deviceConfig['Meter Plus (JP)'].hide_humidity",
            "options.deviceConfig['Meter Plus (JP)'].connectionType",
            "options.deviceConfig['Meter Plus (JP)'].disablePlatformBLE",
            "options.deviceConfig['Meter Plus (JP)'].scanDuration",
            "options.deviceConfig['Meter Plus (JP)'].webhook",
            "options.deviceConfig['Meter Plus (JP)'].external",
            "options.deviceConfig['Meter Plus (JP)'].maxRetry",
            "options.deviceConfig['Meter Plus (JP)'].maxRetries",
            "options.deviceConfig['Meter Plus (JP)'].delayBetweenRetries",
            "options.deviceConfig['Meter Plus (JP)'].disableCaching",
            "options.deviceConfig['Meter Plus (JP)'].offline",
            "options.deviceConfig['Meter Plus (JP)'].history",
            "options.deviceConfig['Meter Plus (JP)'].firmware",
            "options.deviceConfig['Meter Plus (JP)'].logging",
            "options.deviceConfig['Meter Plus (JP)'].refreshRate",
            "options.deviceConfig['Meter Plus (JP)'].updateRate",
            "options.deviceConfig['Meter Plus (JP)'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Meter Pro Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['MeterPro'].hide_device",
            "options.deviceConfig['MeterPro'].hide_temperature",
            "options.deviceConfig['MeterPro'].convertUnitTo",
            "options.deviceConfig['MeterPro'].hide_humidity",
            "options.deviceConfig['MeterPro'].connectionType",
            "options.deviceConfig['MeterPro'].disablePlatformBLE",
            "options.deviceConfig['MeterPro'].scanDuration",
            "options.deviceConfig['MeterPro'].webhook",
            "options.deviceConfig['MeterPro'].external",
            "options.deviceConfig['MeterPro'].maxRetry",
            "options.deviceConfig['MeterPro'].maxRetries",
            "options.deviceConfig['MeterPro'].delayBetweenRetries",
            "options.deviceConfig['MeterPro'].disableCaching",
            "options.deviceConfig['MeterPro'].offline",
            "options.deviceConfig['MeterPro'].history",
            "options.deviceConfig['MeterPro'].firmware",
            "options.deviceConfig['MeterPro'].logging",
            "options.deviceConfig['MeterPro'].refreshRate",
            "options.deviceConfig['MeterPro'].updateRate",
            "options.deviceConfig['MeterPro'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Meter Pro (CO2) Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['MeterPro(CO2)'].hide_device",
            "options.deviceConfig['MeterPro(CO2)'].hide_temperature",
            "options.deviceConfig['MeterPro(CO2)'].convertUnitTo",
            "options.deviceConfig['MeterPro(CO2)'].hide_humidity",
            "options.deviceConfig['MeterPro(CO2)'].connectionType",
            "options.deviceConfig['MeterPro(CO2)'].disablePlatformBLE",
            "options.deviceConfig['MeterPro(CO2)'].scanDuration",
            "options.deviceConfig['MeterPro(CO2)'].webhook",
            "options.deviceConfig['MeterPro(CO2)'].external",
            "options.deviceConfig['MeterPro(CO2)'].maxRetry",
            "options.deviceConfig['MeterPro(CO2)'].maxRetries",
            "options.deviceConfig['MeterPro(CO2)'].delayBetweenRetries",
            "options.deviceConfig['MeterPro(CO2)'].disableCaching",
            "options.deviceConfig['MeterPro(CO2)'].offline",
            "options.deviceConfig['MeterPro(CO2)'].history",
            "options.deviceConfig['MeterPro(CO2)'].firmware",
            "options.deviceConfig['MeterPro(CO2)'].logging",
            "options.deviceConfig['MeterPro(CO2)'].refreshRate",
            "options.deviceConfig['MeterPro(CO2)'].updateRate",
            "options.deviceConfig['MeterPro(CO2)'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Indoor Outdoor Sensor Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['WoIOSensor'].hide_device",
            "options.deviceConfig['WoIOSensor'].hide_temperature",
            "options.deviceConfig['WoIOSensor'].convertUnitTo",
            "options.deviceConfig['WoIOSensor'].hide_humidity",
            "options.deviceConfig['WoIOSensor'].connectionType",
            "options.deviceConfig['WoIOSensor'].disablePlatformBLE",
            "options.deviceConfig['WoIOSensor'].scanDuration",
            "options.deviceConfig['WoIOSensor'].webhook",
            "options.deviceConfig['WoIOSensor'].external",
            "options.deviceConfig['WoIOSensor'].maxRetry",
            "options.deviceConfig['WoIOSensor'].maxRetries",
            "options.deviceConfig['WoIOSensor'].delayBetweenRetries",
            "options.deviceConfig['WoIOSensor'].disableCaching",
            "options.deviceConfig['WoIOSensor'].offline",
            "options.deviceConfig['WoIOSensor'].history",
            "options.deviceConfig['WoIOSensor'].firmware",
            "options.deviceConfig['WoIOSensor'].logging",
            "options.deviceConfig['WoIOSensor'].refreshRate",
            "options.deviceConfig['WoIOSensor'].updateRate",
            "options.deviceConfig['WoIOSensor'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Water Detector Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Water Detector']hide_device",
            "options.deviceConfig['Water Detector']hide_leak",
            "options.deviceConfig['Water Detector']dry",
            "options.deviceConfig['Water Detector'].connectionType",
            "options.deviceConfig['Water Detector'].disablePlatformBLE",
            "options.deviceConfig['Water Detector'].scanDuration",
            "options.deviceConfig['Water Detector'].webhook",
            "options.deviceConfig['Water Detector'].external",
            "options.deviceConfig['Water Detector'].maxRetry",
            "options.deviceConfig['Water Detector'].maxRetries",
            "options.deviceConfig['Water Detector'].delayBetweenRetries",
            "options.deviceConfig['Water Detector'].disableCaching",
            "options.deviceConfig['Water Detector'].offline",
            "options.deviceConfig['Water Detector'].history",
            "options.deviceConfig['Water Detector'].firmware",
            "options.deviceConfig['Water Detector'].logging",
            "options.deviceConfig['Water Detector'].refreshRate",
            "options.deviceConfig['Water Detector'].updateRate",
            "options.deviceConfig['Water Detector'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Motion Sensor Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Motion Sensor'].hide_device",
            "options.deviceConfig['Motion Sensor'].hide_lightsensor",
            "options.deviceConfig['Motion Sensor'].set_minlux",
            "options.deviceConfig['Motion Sensor'].set_maxlux",
            "options.deviceConfig['Motion Sensor'].connectionType",
            "options.deviceConfig['Motion Sensor'].disablePlatformBLE",
            "options.deviceConfig['Motion Sensor'].scanDuration",
            "options.deviceConfig['Motion Sensor'].webhook",
            "options.deviceConfig['Motion Sensor'].external",
            "options.deviceConfig['Motion Sensor'].maxRetry",
            "options.deviceConfig['Motion Sensor'].maxRetries",
            "options.deviceConfig['Motion Sensor'].delayBetweenRetries",
            "options.deviceConfig['Motion Sensor'].disableCaching",
            "options.deviceConfig['Motion Sensor'].offline",
            "options.deviceConfig['Motion Sensor'].history",
            "options.deviceConfig['Motion Sensor'].firmware",
            "options.deviceConfig['Motion Sensor'].logging",
            "options.deviceConfig['Motion Sensor'].refreshRate",
            "options.deviceConfig['Motion Sensor'].updateRate",
            "options.deviceConfig['Motion Sensor'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Contact Sensor Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Contact Sensor'].hide_device",
            "options.deviceConfig['Contact Sensor'].hide_lightsensor",
            "options.deviceConfig['Contact Sensor'].set_minlux",
            "options.deviceConfig['Contact Sensor'].set_maxlux",
            "options.deviceConfig['Contact Sensor'].hide_motionsensor",
            "options.deviceConfig['Contact Sensor'].connectionType",
            "options.deviceConfig['Contact Sensor'].disablePlatformBLE",
            "options.deviceConfig['Contact Sensor'].scanDuration",
            "options.deviceConfig['Contact Sensor'].webhook",
            "options.deviceConfig['Contact Sensor'].external",
            "options.deviceConfig['Contact Sensor'].maxRetry",
            "options.deviceConfig['Contact Sensor'].maxRetries",
            "options.deviceConfig['Contact Sensor'].delayBetweenRetries",
            "options.deviceConfig['Contact Sensor'].disableCaching",
            "options.deviceConfig['Contact Sensor'].offline",
            "options.deviceConfig['Contact Sensor'].history",
            "options.deviceConfig['Contact Sensor'].firmware",
            "options.deviceConfig['Contact Sensor'].logging",
            "options.deviceConfig['Contact Sensor'].refreshRate",
            "options.deviceConfig['Contact Sensor'].updateRate",
            "options.deviceConfig['Contact Sensor'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Curtain Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Curtain'].hide_device",
            "options.deviceConfig['Curtain'].disable_group",
            "options.deviceConfig['Curtain'].hide_lightsensor",
            "options.deviceConfig['Curtain'].set_minlux",
            "options.deviceConfig['Curtain'].set_maxlux",
            "options.deviceConfig['Curtain'].set_max",
            "options.deviceConfig['Curtain'].set_min",
            "options.deviceConfig['Curtain'].set_minStep",
            "options.deviceConfig['Curtain'].setCloseMode",
            "options.deviceConfig['Curtain'].setOpenMode",
            "options.deviceConfig['Curtain'].silentModeSwitch",
            "options.deviceConfig['Curtain'].connectionType",
            "options.deviceConfig['Curtain'].disablePlatformBLE",
            "options.deviceConfig['Curtain'].scanDuration",
            "options.deviceConfig['Curtain'].webhook",
            "options.deviceConfig['Curtain'].external",
            "options.deviceConfig['Curtain'].maxRetry",
            "options.deviceConfig['Curtain'].maxRetries",
            "options.deviceConfig['Curtain'].delayBetweenRetries",
            "options.deviceConfig['Curtain'].disableCaching",
            "options.deviceConfig['Curtain'].offline",
            "options.deviceConfig['Curtain'].history",
            "options.deviceConfig['Curtain'].firmware",
            "options.deviceConfig['Curtain'].logging",
            "options.deviceConfig['Curtain'].refreshRate",
            "options.deviceConfig['Curtain'].updateRate",
            "options.deviceConfig['Curtain'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Curtain3 Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Curtain3'].hide_device",
            "options.deviceConfig['Curtain3'].disable_group",
            "options.deviceConfig['Curtain3'].hide_lightsensor",
            "options.deviceConfig['Curtain3'].set_minlux",
            "options.deviceConfig['Curtain3'].set_maxlux",
            "options.deviceConfig['Curtain3'].set_max",
            "options.deviceConfig['Curtain3'].set_min",
            "options.deviceConfig['Curtain3'].set_minStep",
            "options.deviceConfig['Curtain3'].setCloseMode",
            "options.deviceConfig['Curtain3'].setOpenMode",
            "options.deviceConfig['Curtain3'].silentModeSwitch",
            "options.deviceConfig['Curtain3'].connectionType",
            "options.deviceConfig['Curtain3'].disablePlatformBLE",
            "options.deviceConfig['Curtain3'].scanDuration",
            "options.deviceConfig['Curtain3'].webhook",
            "options.deviceConfig['Curtain3'].external",
            "options.deviceConfig['Curtain3'].maxRetry",
            "options.deviceConfig['Curtain3'].maxRetries",
            "options.deviceConfig['Curtain3'].delayBetweenRetries",
            "options.deviceConfig['Curtain3'].disableCaching",
            "options.deviceConfig['Curtain3'].offline",
            "options.deviceConfig['Curtain3'].history",
            "options.deviceConfig['Curtain3'].firmware",
            "options.deviceConfig['Curtain3'].logging",
            "options.deviceConfig['Curtain3'].refreshRate",
            "options.deviceConfig['Curtain3'].updateRate",
            "options.deviceConfig['Curtain3'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "WoRollerShade Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['WoRollerShade'].hide_device",
            "options.deviceConfig['WoRollerShade'].disable_group",
            "options.deviceConfig['WoRollerShade'].hide_lightsensor",
            "options.deviceConfig['WoRollerShade'].set_minlux",
            "options.deviceConfig['WoRollerShade'].set_maxlux",
            "options.deviceConfig['WoRollerShade'].set_max",
            "options.deviceConfig['WoRollerShade'].set_min",
            "options.deviceConfig['WoRollerShade'].set_minStep",
            "options.deviceConfig['WoRollerShade'].setCloseMode",
            "options.deviceConfig['WoRollerShade'].setOpenMode",
            "options.deviceConfig['WoRollerShade'].silentModeSwitch",
            "options.deviceConfig['WoRollerShade'].connectionType",
            "options.deviceConfig['WoRollerShade'].disablePlatformBLE",
            "options.deviceConfig['WoRollerShade'].scanDuration",
            "options.deviceConfig['WoRollerShade'].webhook",
            "options.deviceConfig['WoRollerShade'].external",
            "options.deviceConfig['WoRollerShade'].maxRetry",
            "options.deviceConfig['WoRollerShade'].maxRetries",
            "options.deviceConfig['WoRollerShade'].delayBetweenRetries",
            "options.deviceConfig['WoRollerShade'].disableCaching",
            "options.deviceConfig['WoRollerShade'].offline",
            "options.deviceConfig['WoRollerShade'].history",
            "options.deviceConfig['WoRollerShade'].firmware",
            "options.deviceConfig['WoRollerShade'].logging",
            "options.deviceConfig['WoRollerShade'].refreshRate",
            "options.deviceConfig['WoRollerShade'].updateRate",
            "options.deviceConfig['WoRollerShade'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Roller Shade Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Roller Shade'].hide_device",
            "options.deviceConfig['Roller Shade'].disable_group",
            "options.deviceConfig['Roller Shade'].hide_lightsensor",
            "options.deviceConfig['Roller Shade'].set_minlux",
            "options.deviceConfig['Roller Shade'].set_maxlux",
            "options.deviceConfig['Roller Shade'].set_max",
            "options.deviceConfig['Roller Shade'].set_min",
            "options.deviceConfig['Roller Shade'].set_minStep",
            "options.deviceConfig['Roller Shade'].setCloseMode",
            "options.deviceConfig['Roller Shade'].setOpenMode",
            "options.deviceConfig['Roller Shade'].silentModeSwitch",
            "options.deviceConfig['Roller Shade'].connectionType",
            "options.deviceConfig['Roller Shade'].disablePlatformBLE",
            "options.deviceConfig['Roller Shade'].scanDuration",
            "options.deviceConfig['Roller Shade'].webhook",
            "options.deviceConfig['Roller Shade'].external",
            "options.deviceConfig['Roller Shade'].maxRetry",
            "options.deviceConfig['Roller Shade'].maxRetries",
            "options.deviceConfig['Roller Shade'].delayBetweenRetries",
            "options.deviceConfig['Roller Shade'].disableCaching",
            "options.deviceConfig['Roller Shade'].offline",
            "options.deviceConfig['Roller Shade'].history",
            "options.deviceConfig['Roller Shade'].firmware",
            "options.deviceConfig['Roller Shade'].logging",
            "options.deviceConfig['Roller Shade'].refreshRate",
            "options.deviceConfig['Roller Shade'].updateRate",
            "options.deviceConfig['Roller Shade'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Blind Tilt Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Blind Tilt'].hide_device",
            "options.deviceConfig['Blind Tilt'].disable_group",
            "options.deviceConfig['Blind Tilt'].mapping",
            "options.deviceConfig['Blind Tilt'].hide_lightsensor",
            "options.deviceConfig['Blind Tilt'].set_minlux",
            "options.deviceConfig['Blind Tilt'].set_maxlux",
            "options.deviceConfig['Blind Tilt'].set_max",
            "options.deviceConfig['Blind Tilt'].set_min",
            "options.deviceConfig['Blind Tilt'].set_minStep",
            "options.deviceConfig['Blind Tilt'].setCloseMode",
            "options.deviceConfig['Blind Tilt'].setOpenMode",
            "options.deviceConfig['Blind Tilt'].silentModeSwitch",
            "options.deviceConfig['Blind Tilt'].connectionType",
            "options.deviceConfig['Blind Tilt'].disablePlatformBLE",
            "options.deviceConfig['Blind Tilt'].scanDuration",
            "options.deviceConfig['Blind Tilt'].webhook",
            "options.deviceConfig['Blind Tilt'].external",
            "options.deviceConfig['Blind Tilt'].maxRetry",
            "options.deviceConfig['Blind Tilt'].maxRetries",
            "options.deviceConfig['Blind Tilt'].delayBetweenRetries",
            "options.deviceConfig['Blind Tilt'].disableCaching",
            "options.deviceConfig['Blind Tilt'].offline",
            "options.deviceConfig['Blind Tilt'].history",
            "options.deviceConfig['Blind Tilt'].firmware",
            "options.deviceConfig['Blind Tilt'].logging",
            "options.deviceConfig['Blind Tilt'].refreshRate",
            "options.deviceConfig['Blind Tilt'].updateRate",
            "options.deviceConfig['Blind Tilt'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Plug Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Plug'].hide_device",
            "options.deviceConfig['Plug'].connectionType",
            "options.deviceConfig['Plug'].disablePlatformBLE",
            "options.deviceConfig['Plug'].scanDuration",
            "options.deviceConfig['Plug'].webhook",
            "options.deviceConfig['Plug'].external",
            "options.deviceConfig['Plug'].maxRetry",
            "options.deviceConfig['Plug'].maxRetries",
            "options.deviceConfig['Plug'].delayBetweenRetries",
            "options.deviceConfig['Plug'].disableCaching",
            "options.deviceConfig['Plug'].offline",
            "options.deviceConfig['Plug'].history",
            "options.deviceConfig['Plug'].firmware",
            "options.deviceConfig['Plug'].logging",
            "options.deviceConfig['Plug'].refreshRate",
            "options.deviceConfig['Plug'].updateRate",
            "options.deviceConfig['Plug'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Plug Mini (US) Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Plug Mini (US)'].hide_device",
            "options.deviceConfig['Plug Mini (US)'].connectionType",
            "options.deviceConfig['Plug Mini (US)'].disablePlatformBLE",
            "options.deviceConfig['Plug Mini (US)'].scanDuration",
            "options.deviceConfig['Plug Mini (US)'].webhook",
            "options.deviceConfig['Plug Mini (US)'].external",
            "options.deviceConfig['Plug Mini (US)'].maxRetry",
            "options.deviceConfig['Plug Mini (US)'].maxRetries",
            "options.deviceConfig['Plug Mini (US)'].delayBetweenRetries",
            "options.deviceConfig['Plug Mini (US)'].disableCaching",
            "options.deviceConfig['Plug Mini (US)'].offline",
            "options.deviceConfig['Plug Mini (US)'].history",
            "options.deviceConfig['Plug Mini (US)'].firmware",
            "options.deviceConfig['Plug Mini (US)'].logging",
            "options.deviceConfig['Plug Mini (US)'].refreshRate",
            "options.deviceConfig['Plug Mini (US)'].updateRate",
            "options.deviceConfig['Plug Mini (US)'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Plug Mini (JP) Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Plug Mini (JP)'].hide_device",
            "options.deviceConfig['Plug Mini (JP)'].connectionType",
            "options.deviceConfig['Plug Mini (JP)'].disablePlatformBLE",
            "options.deviceConfig['Plug Mini (JP)'].scanDuration",
            "options.deviceConfig['Plug Mini (JP)'].webhook",
            "options.deviceConfig['Plug Mini (JP)'].external",
            "options.deviceConfig['Plug Mini (JP)'].maxRetry",
            "options.deviceConfig['Plug Mini (JP)'].maxRetries",
            "options.deviceConfig['Plug Mini (JP)'].delayBetweenRetries",
            "options.deviceConfig['Plug Mini (JP)'].disableCaching",
            "options.deviceConfig['Plug Mini (JP)'].offline",
            "options.deviceConfig['Plug Mini (JP)'].history",
            "options.deviceConfig['Plug Mini (JP)'].firmware",
            "options.deviceConfig['Plug Mini (JP)'].logging",
            "options.deviceConfig['Plug Mini (JP)'].refreshRate",
            "options.deviceConfig['Plug Mini (JP)'].updateRate",
            "options.deviceConfig['Plug Mini (JP)'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Smart Lock Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Smart Lock'].hide_device",
            "options.deviceConfig['Smart Lock'].hide_contactsensor",
            "options.deviceConfig['Smart Lock'].activate_latchbutton",
            "options.deviceConfig['Smart Lock'].connectionType",
            "options.deviceConfig['Smart Lock'].disablePlatformBLE",
            "options.deviceConfig['Smart Lock'].scanDuration",
            "options.deviceConfig['Smart Lock'].webhook",
            "options.deviceConfig['Smart Lock'].external",
            "options.deviceConfig['Smart Lock'].maxRetry",
            "options.deviceConfig['Smart Lock'].maxRetries",
            "options.deviceConfig['Smart Lock'].delayBetweenRetries",
            "options.deviceConfig['Smart Lock'].disableCaching",
            "options.deviceConfig['Smart Lock'].offline",
            "options.deviceConfig['Smart Lock'].history",
            "options.deviceConfig['Smart Lock'].firmware",
            "options.deviceConfig['Smart Lock'].logging",
            "options.deviceConfig['Smart Lock'].refreshRate",
            "options.deviceConfig['Smart Lock'].updateRate",
            "options.deviceConfig['Smart Lock'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Smart Lock Pro Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Smart Lock Pro'].hide_device",
            "options.deviceConfig['Smart Lock Pro'].hide_contactsensor",
            "options.deviceConfig['Smart Lock Pro'].activate_latchbutton",
            "options.deviceConfig['Smart Lock Pro'].connectionType",
            "options.deviceConfig['Smart Lock Pro'].disablePlatformBLE",
            "options.deviceConfig['Smart Lock Pro'].scanDuration",
            "options.deviceConfig['Smart Lock Pro'].webhook",
            "options.deviceConfig['Smart Lock Pro'].external",
            "options.deviceConfig['Smart Lock Pro'].maxRetry",
            "options.deviceConfig['Smart Lock Pro'].maxRetries",
            "options.deviceConfig['Smart Lock Pro'].delayBetweenRetries",
            "options.deviceConfig['Smart Lock Pro'].disableCaching",
            "options.deviceConfig['Smart Lock Pro'].offline",
            "options.deviceConfig['Smart Lock Pro'].history",
            "options.deviceConfig['Smart Lock Pro'].firmware",
            "options.deviceConfig['Smart Lock Pro'].logging",
            "options.deviceConfig['Smart Lock Pro'].refreshRate",
            "options.deviceConfig['Smart Lock Pro'].updateRate",
            "options.deviceConfig['Smart Lock Pro'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Color Bulb Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Color Bulb'].hide_device",
            "options.deviceConfig['Color Bulb'].set_minStep",
            "options.deviceConfig['Color Bulb'].adaptiveLightingShift",
            "options.deviceConfig['Color Bulb'].connectionType",
            "options.deviceConfig['Color Bulb'].disablePlatformBLE",
            "options.deviceConfig['Color Bulb'].scanDuration",
            "options.deviceConfig['Color Bulb'].webhook",
            "options.deviceConfig['Color Bulb'].external",
            "options.deviceConfig['Color Bulb'].maxRetry",
            "options.deviceConfig['Color Bulb'].maxRetries",
            "options.deviceConfig['Color Bulb'].delayBetweenRetries",
            "options.deviceConfig['Color Bulb'].disableCaching",
            "options.deviceConfig['Color Bulb'].offline",
            "options.deviceConfig['Color Bulb'].history",
            "options.deviceConfig['Color Bulb'].firmware",
            "options.deviceConfig['Color Bulb'].logging",
            "options.deviceConfig['Color Bulb'].refreshRate",
            "options.deviceConfig['Color Bulb'].updateRate",
            "options.deviceConfig['Color Bulb'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "K10+ Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['K10+'].hide_device",
            "options.deviceConfig['K10+'].connectionType",
            "options.deviceConfig['K10+'].disablePlatformBLE",
            "options.deviceConfig['K10+'].scanDuration",
            "options.deviceConfig['K10+'].webhook",
            "options.deviceConfig['K10+'].external",
            "options.deviceConfig['K10+'].maxRetry",
            "options.deviceConfig['K10+'].maxRetries",
            "options.deviceConfig['K10+'].delayBetweenRetries",
            "options.deviceConfig['K10+'].disableCaching",
            "options.deviceConfig['K10+'].offline",
            "options.deviceConfig['K10+'].history",
            "options.deviceConfig['K10+'].firmware",
            "options.deviceConfig['K10+'].logging",
            "options.deviceConfig['K10+'].refreshRate",
            "options.deviceConfig['K10+'].updateRate",
            "options.deviceConfig['K10+'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "K10+ Pro Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['K10+ Pro'].hide_device",
            "options.deviceConfig['K10+ Pro'].connectionType",
            "options.deviceConfig['K10+ Pro'].disablePlatformBLE",
            "options.deviceConfig['K10+ Pro'].scanDuration",
            "options.deviceConfig['K10+ Pro'].webhook",
            "options.deviceConfig['K10+ Pro'].external",
            "options.deviceConfig['K10+ Pro'].maxRetry",
            "options.deviceConfig['K10+ Pro'].maxRetries",
            "options.deviceConfig['K10+ Pro'].delayBetweenRetries",
            "options.deviceConfig['K10+ Pro'].disableCaching",
            "options.deviceConfig['K10+ Pro'].offline",
            "options.deviceConfig['K10+ Pro'].history",
            "options.deviceConfig['K10+ Pro'].firmware",
            "options.deviceConfig['K10+ Pro'].logging",
            "options.deviceConfig['K10+ Pro'].refreshRate",
            "options.deviceConfig['K10+ Pro'].updateRate",
            "options.deviceConfig['K10+ Pro'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "WoSweeper Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['WoSweeper'].hide_device",
            "options.deviceConfig['WoSweeper'].connectionType",
            "options.deviceConfig['WoSweeper'].disablePlatformBLE",
            "options.deviceConfig['WoSweeper'].scanDuration",
            "options.deviceConfig['WoSweeper'].webhook",
            "options.deviceConfig['WoSweeper'].external",
            "options.deviceConfig['WoSweeper'].maxRetry",
            "options.deviceConfig['WoSweeper'].maxRetries",
            "options.deviceConfig['WoSweeper'].delayBetweenRetries",
            "options.deviceConfig['WoSweeper'].disableCaching",
            "options.deviceConfig['WoSweeper'].offline",
            "options.deviceConfig['WoSweeper'].history",
            "options.deviceConfig['WoSweeper'].firmware",
            "options.deviceConfig['WoSweeper'].logging",
            "options.deviceConfig['WoSweeper'].refreshRate",
            "options.deviceConfig['WoSweeper'].updateRate",
            "options.deviceConfig['WoSweeper'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "WoSweeperMini Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['WoSweeperMini'].hide_device",
            "options.deviceConfig['WoSweeperMini'].connectionType",
            "options.deviceConfig['WoSweeperMini'].disablePlatformBLE",
            "options.deviceConfig['WoSweeperMini'].scanDuration",
            "options.deviceConfig['WoSweeperMini'].webhook",
            "options.deviceConfig['WoSweeperMini'].external",
            "options.deviceConfig['WoSweeperMini'].maxRetry",
            "options.deviceConfig['WoSweeperMini'].maxRetries",
            "options.deviceConfig['WoSweeperMini'].delayBetweenRetries",
            "options.deviceConfig['WoSweeperMini'].disableCaching",
            "options.deviceConfig['WoSweeperMini'].offline",
            "options.deviceConfig['WoSweeperMini'].history",
            "options.deviceConfig['WoSweeperMini'].firmware",
            "options.deviceConfig['WoSweeperMini'].logging",
            "options.deviceConfig['WoSweeperMini'].refreshRate",
            "options.deviceConfig['WoSweeperMini'].updateRate",
            "options.deviceConfig['WoSweeperMini'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Robot Vacuum Cleaner S1 Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Robot Vacuum Cleaner S1'].hide_device",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].connectionType",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].disablePlatformBLE",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].scanDuration",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].webhook",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].external",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].maxRetry",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].maxRetries",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].delayBetweenRetries",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].disableCaching",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].offline",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].history",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].firmware",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].logging",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].refreshRate",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].updateRate",
            "options.deviceConfig['Robot Vacuum Cleaner S1'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Robot Vacuum Cleaner S1 Plus Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].hide_device",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].connectionType",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].disablePlatformBLE",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].scanDuration",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].webhook",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].external",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].maxRetry",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].maxRetries",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].delayBetweenRetries",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].disableCaching",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].offline",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].history",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].firmware",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].logging",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].refreshRate",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].updateRate",
            "options.deviceConfig['Robot Vacuum Cleaner S1 Plus'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Robot Vacuum Cleaner S10 Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Robot Vacuum Cleaner S10'].hide_device",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].connectionType",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].disablePlatformBLE",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].scanDuration",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].webhook",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].external",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].maxRetry",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].maxRetries",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].delayBetweenRetries",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].disableCaching",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].offline",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].history",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].firmware",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].logging",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].refreshRate",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].updateRate",
            "options.deviceConfig['Robot Vacuum Cleaner S10'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Ceiling Light Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Ceiling Light'].hide_device",
            "options.deviceConfig['Ceiling Light'].set_minStep",
            "options.deviceConfig['Ceiling Light'].adaptiveLightingShift",
            "options.deviceConfig['Ceiling Light'].connectionType",
            "options.deviceConfig['Ceiling Light'].disablePlatformBLE",
            "options.deviceConfig['Ceiling Light'].scanDuration",
            "options.deviceConfig['Ceiling Light'].webhook",
            "options.deviceConfig['Ceiling Light'].external",
            "options.deviceConfig['Ceiling Light'].maxRetry",
            "options.deviceConfig['Ceiling Light'].maxRetries",
            "options.deviceConfig['Ceiling Light'].delayBetweenRetries",
            "options.deviceConfig['Ceiling Light'].disableCaching",
            "options.deviceConfig['Ceiling Light'].offline",
            "options.deviceConfig['Ceiling Light'].history",
            "options.deviceConfig['Ceiling Light'].firmware",
            "options.deviceConfig['Ceiling Light'].logging",
            "options.deviceConfig['Ceiling Light'].refreshRate",
            "options.deviceConfig['Ceiling Light'].updateRate",
            "options.deviceConfig['Ceiling Light'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Ceiling Light Pro Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Ceiling Light Pro'].hide_device",
            "options.deviceConfig['Ceiling Light Pro'].set_minStep",
            "options.deviceConfig['Ceiling Light Pro'].adaptiveLightingShift",
            "options.deviceConfig['Ceiling Light Pro'].connectionType",
            "options.deviceConfig['Ceiling Light Pro'].disablePlatformBLE",
            "options.deviceConfig['Ceiling Light Pro'].scanDuration",
            "options.deviceConfig['Ceiling Light Pro'].webhook",
            "options.deviceConfig['Ceiling Light Pro'].external",
            "options.deviceConfig['Ceiling Light Pro'].maxRetry",
            "options.deviceConfig['Ceiling Light Pro'].maxRetries",
            "options.deviceConfig['Ceiling Light Pro'].delayBetweenRetries",
            "options.deviceConfig['Ceiling Light Pro'].disableCaching",
            "options.deviceConfig['Ceiling Light Pro'].offline",
            "options.deviceConfig['Ceiling Light Pro'].history",
            "options.deviceConfig['Ceiling Light Pro'].firmware",
            "options.deviceConfig['Ceiling Light Pro'].logging",
            "options.deviceConfig['Ceiling Light Pro'].refreshRate",
            "options.deviceConfig['Ceiling Light Pro'].updateRate",
            "options.deviceConfig['Ceiling Light Pro'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Strip Light Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Strip Light'].hide_device",
            "options.deviceConfig['Strip Light'].set_minStep",
            "options.deviceConfig['Strip Light'].adaptiveLightingShift",
            "options.deviceConfig['Strip Light'].connectionType",
            "options.deviceConfig['Strip Light'].disablePlatformBLE",
            "options.deviceConfig['Strip Light'].scanDuration",
            "options.deviceConfig['Strip Light'].webhook",
            "options.deviceConfig['Strip Light'].external",
            "options.deviceConfig['Strip Light'].maxRetry",
            "options.deviceConfig['Strip Light'].maxRetries",
            "options.deviceConfig['Strip Light'].delayBetweenRetries",
            "options.deviceConfig['Strip Light'].disableCaching",
            "options.deviceConfig['Strip Light'].offline",
            "options.deviceConfig['Strip Light'].history",
            "options.deviceConfig['Strip Light'].firmware",
            "options.deviceConfig['Strip Light'].logging",
            "options.deviceConfig['Strip Light'].refreshRate",
            "options.deviceConfig['Strip Light'].updateRate",
            "options.deviceConfig['Strip Light'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Battery Circulator Fan Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.deviceConfig['Battery Circulator Fan'].hide_device",
            "options.deviceConfig['Battery Circulator Fan'].set_minStep",
            "options.deviceConfig['Battery Circulator Fan'].connectionType",
            "options.deviceConfig['Battery Circulator Fan'].disablePlatformBLE",
            "options.deviceConfig['Battery Circulator Fan'].scanDuration",
            "options.deviceConfig['Battery Circulator Fan'].webhook",
            "options.deviceConfig['Battery Circulator Fan'].external",
            "options.deviceConfig['Battery Circulator Fan'].maxRetry",
            "options.deviceConfig['Battery Circulator Fan'].maxRetries",
            "options.deviceConfig['Battery Circulator Fan'].delayBetweenRetries",
            "options.deviceConfig['Battery Circulator Fan'].disableCaching",
            "options.deviceConfig['Battery Circulator Fan'].offline",
            "options.deviceConfig['Battery Circulator Fan'].history",
            "options.deviceConfig['Battery Circulator Fan'].firmware",
            "options.deviceConfig['Battery Circulator Fan'].logging",
            "options.deviceConfig['Battery Circulator Fan'].refreshRate",
            "options.deviceConfig['Battery Circulator Fan'].updateRate",
            "options.deviceConfig['Battery Circulator Fan'].pushRate"
          ]
        }
      ]
    },
    {
      "type": "fieldset",
      "title": "IR Device Settings",
      "expandable": true,
      "expanded": false,
      "items": [
        {
          "type": "help",
          "helpvalue": "<em class='primary-text'>With IR Device Setting, you can set device specific settings based on <b style='color: var(--secondary-color);'>deviceId</b>. This will override IR Remote Type Settings</em>"
        },
        {
          "key": "options.irdevices",
          "notitle": false,
          "type": "tabarray",
          "title": "{{ value.configDeviceName || value.deviceId || 'New IR Device' }}",
          "expandable": true,
          "expanded": false,
          "draggable": true,
          "orderable": true,
          "items": [
            "options.irdevices[].configDeviceName",
            "options.irdevices[].deviceId",
            "options.irdevices[].hide_device",
            "options.irdevices[].configRemoteType",
            "options.irdevices[].connectionType",
            "options.irdevices[].type",
            "options.irdevices[].customize",
            "options.irdevices[].customOn",
            "options.irdevices[].customOff",
            "options.irdevices[].commandType",
            "options.irdevices[].disablePushOn",
            "options.irdevices[].disablePushOff",
            "options.irdevices[].disablePushDetail",
            "options.irdevices[].hide_automode",
            "options.irdevices[].set_max_heat",
            "options.irdevices[].set_min_heat",
            "options.irdevices[].set_max_cool",
            "options.irdevices[].set_min_cool",
            "options.irdevices[].meterType",
            "options.irdevices[].meterId",
            "options.irdevices[].rotation_speed",
            "options.irdevices[].swing_mode",
            "options.irdevices[].set_minStep",
            "options.irdevices[].set_min",
            "options.irdevices[].set_max",
            "options.irdevices[].stateless",
            "options.irdevices[].external",
            "options.irdevices[].disableCaching",
            "options.irdevices[].offline",
            "options.irdevices[].history",
            "options.irdevices[].firmware",
            "options.irdevices[].logging",
            "options.irdevices[].refreshRate",
            "options.irdevices[].updateRate",
            "options.irdevices[].pushRate"
          ]
        }
      ]
    },
    {
      "type": "fieldset",
      "title": "IR Remote Type Settings",
      "expandable": true,
      "expanded": false,
      "items": [
        {
          "type": "help",
          "helpvalue": "<em class='primary-text'>Setting an IR Remote Type Setting will <b style='color: var(--secondary-color);'>not</b> override indiviudally set setting on IR Device Settings.</em>"
        },
        {
          "type": "fieldset",
          "title": "TV Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['TV'].hide_device",
            "options.irdeviceConfig['TV'].connectionType",
            "options.irdeviceConfig['TV'].external",
            "options.irdeviceConfig['TV'].disableCaching",
            "options.irdeviceConfig['TV'].offline",
            "options.irdeviceConfig['TV'].history",
            "options.irdeviceConfig['TV'].firmware",
            "options.irdeviceConfig['TV'].logging",
            "options.irdeviceConfig['TV'].refreshRate",
            "options.irdeviceConfig['TV'].updateRate",
            "options.irdeviceConfig['TV'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY TV Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY TV'].hide_device",
            "options.irdeviceConfig['DIY TV'].connectionType",
            "options.irdeviceConfig['DIY TV'].external",
            "options.irdeviceConfig['DIY TV'].disableCaching",
            "options.irdeviceConfig['DIY TV'].offline",
            "options.irdeviceConfig['DIY TV'].history",
            "options.irdeviceConfig['DIY TV'].firmware",
            "options.irdeviceConfig['DIY TV'].logging",
            "options.irdeviceConfig['DIY TV'].refreshRate",
            "options.irdeviceConfig['DIY TV'].updateRate",
            "options.irdeviceConfig['DIY TV'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Projector Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['Projector'].hide_device",
            "options.irdeviceConfig['Projector'].connectionType",
            "options.irdeviceConfig['Projector'].external",
            "options.irdeviceConfig['Projector'].disableCaching",
            "options.irdeviceConfig['Projector'].offline",
            "options.irdeviceConfig['Projector'].history",
            "options.irdeviceConfig['Projector'].firmware",
            "options.irdeviceConfig['Projector'].logging",
            "options.irdeviceConfig['Projector'].refreshRate",
            "options.irdeviceConfig['Projector'].updateRate",
            "options.irdeviceConfig['Projector'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY Projector Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY Projector'].hide_device",
            "options.irdeviceConfig['DIY Projector'].connectionType",
            "options.irdeviceConfig['DIY Projector'].external",
            "options.irdeviceConfig['DIY Projector'].disableCaching",
            "options.irdeviceConfig['DIY Projector'].offline",
            "options.irdeviceConfig['DIY Projector'].history",
            "options.irdeviceConfig['DIY Projector'].firmware",
            "options.irdeviceConfig['DIY Projector'].logging",
            "options.irdeviceConfig['DIY Projector'].refreshRate",
            "options.irdeviceConfig['DIY Projector'].updateRate",
            "options.irdeviceConfig['DIY Projector'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Set Top Box Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['Set Top Box'].hide_device",
            "options.irdeviceConfig['Set Top Box'].connectionType",
            "options.irdeviceConfig['Set Top Box'].external",
            "options.irdeviceConfig['Set Top Box'].disableCaching",
            "options.irdeviceConfig['Set Top Box'].offline",
            "options.irdeviceConfig['Set Top Box'].history",
            "options.irdeviceConfig['Set Top Box'].firmware",
            "options.irdeviceConfig['Set Top Box'].logging",
            "options.irdeviceConfig['Set Top Box'].refreshRate",
            "options.irdeviceConfig['Set Top Box'].updateRate",
            "options.irdeviceConfig['Set Top Box'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY Set Top Box Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY Set Top Box'].hide_device",
            "options.irdeviceConfig['DIY Set Top Box'].connectionType",
            "options.irdeviceConfig['DIY Set Top Box'].external",
            "options.irdeviceConfig['DIY Set Top Box'].disableCaching",
            "options.irdeviceConfig['DIY Set Top Box'].offline",
            "options.irdeviceConfig['DIY Set Top Box'].history",
            "options.irdeviceConfig['DIY Set Top Box'].firmware",
            "options.irdeviceConfig['DIY Set Top Box'].logging",
            "options.irdeviceConfig['DIY Set Top Box'].refreshRate",
            "options.irdeviceConfig['DIY Set Top Box'].updateRate",
            "options.irdeviceConfig['DIY Set Top Box'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "IPTV Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['IPTV'].hide_device",
            "options.irdeviceConfig['IPTV'].connectionType",
            "options.irdeviceConfig['IPTV'].external",
            "options.irdeviceConfig['IPTV'].disableCaching",
            "options.irdeviceConfig['IPTV'].offline",
            "options.irdeviceConfig['IPTV'].history",
            "options.irdeviceConfig['IPTV'].firmware",
            "options.irdeviceConfig['IPTV'].logging",
            "options.irdeviceConfig['IPTV'].refreshRate",
            "options.irdeviceConfig['IPTV'].updateRate",
            "options.irdeviceConfig['IPTV'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY IPTV Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY IPTV'].hide_device",
            "options.irdeviceConfig['DIY IPTV'].connectionType",
            "options.irdeviceConfig['DIY IPTV'].external",
            "options.irdeviceConfig['DIY IPTV'].disableCaching",
            "options.irdeviceConfig['DIY IPTV'].offline",
            "options.irdeviceConfig['DIY IPTV'].history",
            "options.irdeviceConfig['DIY IPTV'].firmware",
            "options.irdeviceConfig['DIY IPTV'].logging",
            "options.irdeviceConfig['DIY IPTV'].refreshRate",
            "options.irdeviceConfig['DIY IPTV'].updateRate",
            "options.irdeviceConfig['DIY IPTV'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DVD Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DVD'].hide_device",
            "options.irdeviceConfig['DVD'].connectionType",
            "options.irdeviceConfig['DVD'].external",
            "options.irdeviceConfig['DVD'].disableCaching",
            "options.irdeviceConfig['DVD'].offline",
            "options.irdeviceConfig['DVD'].history",
            "options.irdeviceConfig['DVD'].firmware",
            "options.irdeviceConfig['DVD'].logging",
            "options.irdeviceConfig['DVD'].refreshRate",
            "options.irdeviceConfig['DVD'].updateRate",
            "options.irdeviceConfig['DVD'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY DVD Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY DVD'].hide_device",
            "options.irdeviceConfig['DIY DVD'].connectionType",
            "options.irdeviceConfig['DIY DVD'].external",
            "options.irdeviceConfig['DIY DVD'].disableCaching",
            "options.irdeviceConfig['DIY DVD'].offline",
            "options.irdeviceConfig['DIY DVD'].history",
            "options.irdeviceConfig['DIY DVD'].firmware",
            "options.irdeviceConfig['DIY DVD'].logging",
            "options.irdeviceConfig['DIY DVD'].refreshRate",
            "options.irdeviceConfig['DIY DVD'].updateRate",
            "options.irdeviceConfig['DIY DVD'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Speaker Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['Speaker'].hide_device",
            "options.irdeviceConfig['Speaker'].connectionType",
            "options.irdeviceConfig['Speaker'].external",
            "options.irdeviceConfig['Speaker'].disableCaching",
            "options.irdeviceConfig['Speaker'].offline",
            "options.irdeviceConfig['Speaker'].history",
            "options.irdeviceConfig['Speaker'].firmware",
            "options.irdeviceConfig['Speaker'].logging",
            "options.irdeviceConfig['Speaker'].refreshRate",
            "options.irdeviceConfig['Speaker'].updateRate",
            "options.irdeviceConfig['Speaker'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY Speaker Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY Speaker'].hide_device",
            "options.irdeviceConfig['DIY Speaker'].connectionType",
            "options.irdeviceConfig['DIY Speaker'].external",
            "options.irdeviceConfig['DIY Speaker'].disableCaching",
            "options.irdeviceConfig['DIY Speaker'].offline",
            "options.irdeviceConfig['DIY Speaker'].history",
            "options.irdeviceConfig['DIY Speaker'].firmware",
            "options.irdeviceConfig['DIY Speaker'].logging",
            "options.irdeviceConfig['DIY Speaker'].refreshRate",
            "options.irdeviceConfig['DIY Speaker'].updateRate",
            "options.irdeviceConfig['DIY Speaker'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Fan Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['Fan'].hide_device",
            "options.irdeviceConfig['Fan'].connectionType",
            "options.irdeviceConfig['Fan'].external",
            "options.irdeviceConfig['Fan'].disableCaching",
            "options.irdeviceConfig['Fan'].offline",
            "options.irdeviceConfig['Fan'].history",
            "options.irdeviceConfig['Fan'].firmware",
            "options.irdeviceConfig['Fan'].logging",
            "options.irdeviceConfig['Fan'].refreshRate",
            "options.irdeviceConfig['Fan'].updateRate",
            "options.irdeviceConfig['Fan'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY Fan Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY Fan'].hide_device",
            "options.irdeviceConfig['DIY Fan'].connectionType",
            "options.irdeviceConfig['DIY Fan'].external",
            "options.irdeviceConfig['DIY Fan'].disableCaching",
            "options.irdeviceConfig['DIY Fan'].offline",
            "options.irdeviceConfig['DIY Fan'].history",
            "options.irdeviceConfig['DIY Fan'].firmware",
            "options.irdeviceConfig['DIY Fan'].logging",
            "options.irdeviceConfig['DIY Fan'].refreshRate",
            "options.irdeviceConfig['DIY Fan'].updateRate",
            "options.irdeviceConfig['DIY Fan'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Air Conditioner Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['Air Conditioner'].hide_device",
            "options.irdeviceConfig['Air Conditioner'].connectionType",
            "options.irdeviceConfig['Air Conditioner'].external",
            "options.irdeviceConfig['Air Conditioner'].disableCaching",
            "options.irdeviceConfig['Air Conditioner'].offline",
            "options.irdeviceConfig['Air Conditioner'].history",
            "options.irdeviceConfig['Air Conditioner'].firmware",
            "options.irdeviceConfig['Air Conditioner'].logging",
            "options.irdeviceConfig['Air Conditioner'].refreshRate",
            "options.irdeviceConfig['Air Conditioner'].updateRate",
            "options.irdeviceConfig['Air Conditioner'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY Air Conditioner Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY Air Conditioner'].hide_device",
            "options.irdeviceConfig['DIY Air Conditioner'].connectionType",
            "options.irdeviceConfig['DIY Air Conditioner'].external",
            "options.irdeviceConfig['DIY Air Conditioner'].disableCaching",
            "options.irdeviceConfig['DIY Air Conditioner'].offline",
            "options.irdeviceConfig['DIY Air Conditioner'].history",
            "options.irdeviceConfig['DIY Air Conditioner'].firmware",
            "options.irdeviceConfig['DIY Air Conditioner'].logging",
            "options.irdeviceConfig['DIY Air Conditioner'].refreshRate",
            "options.irdeviceConfig['DIY Air Conditioner'].updateRate",
            "options.irdeviceConfig['DIY Air Conditioner'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Light Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['Light'].hide_device",
            "options.irdeviceConfig['Light'].connectionType",
            "options.irdeviceConfig['Light'].external",
            "options.irdeviceConfig['Light'].disableCaching",
            "options.irdeviceConfig['Light'].offline",
            "options.irdeviceConfig['Light'].history",
            "options.irdeviceConfig['Light'].firmware",
            "options.irdeviceConfig['Light'].logging",
            "options.irdeviceConfig['Light'].refreshRate",
            "options.irdeviceConfig['Light'].updateRate",
            "options.irdeviceConfig['Light'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY Light Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY Light'].hide_device",
            "options.irdeviceConfig['DIY Light'].connectionType",
            "options.irdeviceConfig['DIY Light'].external",
            "options.irdeviceConfig['DIY Light'].disableCaching",
            "options.irdeviceConfig['DIY Light'].offline",
            "options.irdeviceConfig['DIY Light'].history",
            "options.irdeviceConfig['DIY Light'].firmware",
            "options.irdeviceConfig['DIY Light'].logging",
            "options.irdeviceConfig['DIY Light'].refreshRate",
            "options.irdeviceConfig['DIY Light'].updateRate",
            "options.irdeviceConfig['DIY Light'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Air Purifier Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['Air Purifier'].hide_device",
            "options.irdeviceConfig['Air Purifier'].connectionType",
            "options.irdeviceConfig['Air Purifier'].external",
            "options.irdeviceConfig['Air Purifier'].disableCaching",
            "options.irdeviceConfig['Air Purifier'].offline",
            "options.irdeviceConfig['Air Purifier'].history",
            "options.irdeviceConfig['Air Purifier'].firmware",
            "options.irdeviceConfig['Air Purifier'].logging",
            "options.irdeviceConfig['Air Purifier'].refreshRate",
            "options.irdeviceConfig['Air Purifier'].updateRate",
            "options.irdeviceConfig['Air Purifier'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY Air Purifier Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY Air Purifier'].hide_device",
            "options.irdeviceConfig['DIY Air Purifier'].connectionType",
            "options.irdeviceConfig['DIY Air Purifier'].external",
            "options.irdeviceConfig['DIY Air Purifier'].disableCaching",
            "options.irdeviceConfig['DIY Air Purifier'].offline",
            "options.irdeviceConfig['DIY Air Purifier'].history",
            "options.irdeviceConfig['DIY Air Purifier'].firmware",
            "options.irdeviceConfig['DIY Air Purifier'].logging",
            "options.irdeviceConfig['DIY Air Purifier'].refreshRate",
            "options.irdeviceConfig['DIY Air Purifier'].updateRate",
            "options.irdeviceConfig['DIY Air Purifier'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Water Heater Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['Water Heater'].hide_device",
            "options.irdeviceConfig['Water Heater'].connectionType",
            "options.irdeviceConfig['Water Heater'].external",
            "options.irdeviceConfig['Water Heater'].disableCaching",
            "options.irdeviceConfig['Water Heater'].offline",
            "options.irdeviceConfig['Water Heater'].history",
            "options.irdeviceConfig['Water Heater'].firmware",
            "options.irdeviceConfig['Water Heater'].logging",
            "options.irdeviceConfig['Water Heater'].refreshRate",
            "options.irdeviceConfig['Water Heater'].updateRate",
            "options.irdeviceConfig['Water Heater'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY Water Heater Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY Water Heater'].hide_device",
            "options.irdeviceConfig['DIY Water Heater'].connectionType",
            "options.irdeviceConfig['DIY Water Heater'].external",
            "options.irdeviceConfig['DIY Water Heater'].disableCaching",
            "options.irdeviceConfig['DIY Water Heater'].offline",
            "options.irdeviceConfig['DIY Water Heater'].history",
            "options.irdeviceConfig['DIY Water Heater'].firmware",
            "options.irdeviceConfig['DIY Water Heater'].logging",
            "options.irdeviceConfig['DIY Water Heater'].refreshRate",
            "options.irdeviceConfig['DIY Water Heater'].updateRate",
            "options.irdeviceConfig['DIY Water Heater'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Vacuum Cleaner Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['Vacuum Cleaner'].hide_device",
            "options.irdeviceConfig['Vacuum Cleaner'].connectionType",
            "options.irdeviceConfig['Vacuum Cleaner'].external",
            "options.irdeviceConfig['Vacuum Cleaner'].disableCaching",
            "options.irdeviceConfig['Vacuum Cleaner'].offline",
            "options.irdeviceConfig['Vacuum Cleaner'].history",
            "options.irdeviceConfig['Vacuum Cleaner'].firmware",
            "options.irdeviceConfig['Vacuum Cleaner'].logging",
            "options.irdeviceConfig['Vacuum Cleaner'].refreshRate",
            "options.irdeviceConfig['Vacuum Cleaner'].updateRate",
            "options.irdeviceConfig['Vacuum Cleaner'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY Vacuum Cleaner Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY Vacuum Cleaner'].hide_device",
            "options.irdeviceConfig['DIY Vacuum Cleaner'].connectionType",
            "options.irdeviceConfig['DIY Vacuum Cleaner'].external",
            "options.irdeviceConfig['DIY Vacuum Cleaner'].disableCaching",
            "options.irdeviceConfig['DIY Vacuum Cleaner'].offline",
            "options.irdeviceConfig['DIY Vacuum Cleaner'].history",
            "options.irdeviceConfig['DIY Vacuum Cleaner'].firmware",
            "options.irdeviceConfig['DIY Vacuum Cleaner'].logging",
            "options.irdeviceConfig['DIY Vacuum Cleaner'].refreshRate",
            "options.irdeviceConfig['DIY Vacuum Cleaner'].updateRate",
            "options.irdeviceConfig['DIY Vacuum Cleaner'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Camera Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['Camera'].hide_device",
            "options.irdeviceConfig['Camera'].connectionType",
            "options.irdeviceConfig['Camera'].external",
            "options.irdeviceConfig['Camera'].disableCaching",
            "options.irdeviceConfig['Camera'].offline",
            "options.irdeviceConfig['Camera'].history",
            "options.irdeviceConfig['Camera'].firmware",
            "options.irdeviceConfig['Camera'].logging",
            "options.irdeviceConfig['Camera'].refreshRate",
            "options.irdeviceConfig['Camera'].updateRate",
            "options.irdeviceConfig['Camera'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "DIY Camera Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['DIY Camera'].hide_device",
            "options.irdeviceConfig['DIY Camera'].connectionType",
            "options.irdeviceConfig['DIY Camera'].external",
            "options.irdeviceConfig['DIY Camera'].disableCaching",
            "options.irdeviceConfig['DIY Camera'].offline",
            "options.irdeviceConfig['DIY Camera'].history",
            "options.irdeviceConfig['DIY Camera'].firmware",
            "options.irdeviceConfig['DIY Camera'].logging",
            "options.irdeviceConfig['DIY Camera'].refreshRate",
            "options.irdeviceConfig['DIY Camera'].updateRate",
            "options.irdeviceConfig['DIY Camera'].pushRate"
          ]
        },
        {
          "type": "fieldset",
          "title": "Others Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            "options.irdeviceConfig['Others'].hide_device",
            "options.irdeviceConfig['Others'].connectionType",
            "options.irdeviceConfig['Others'].external",
            "options.irdeviceConfig['Others'].disableCaching",
            "options.irdeviceConfig['Others'].offline",
            "options.irdeviceConfig['Others'].history",
            "options.irdeviceConfig['Others'].firmware",
            "options.irdeviceConfig['Others'].logging",
            "options.irdeviceConfig['Others'].refreshRate",
            "options.irdeviceConfig['Others'].updateRate",
            "options.irdeviceConfig['Others'].pushRate"
          ]
        }
      ]
    },
    {
      "type": "fieldset",
      "title": "Advanced Settings",
      "expandable": true,
      "expanded": false,
      "items": [
        "options.BLE",
        {
          "key": "options.discoverBLE",
          "description": "This will scan for BLE devices and <em class='primary-text'>display</em> an Array in the logs so you can add them to the config."
        },
        {
          "key": "options.disableLogsforBLE",
          "description": "This will disable the logs coming from <em class='primary-text>node-switchbot</em> BLE ."
        },
        {
          "key": "options.disableLogsforOpenAPI",
          "description": "This will disable the logs coming from <em class='primary-text>node-switchbot</em> OpenAPI."
        },
        "options.hostname",
        "options.webhookURL",
        "options.mqttURL",
        "options.mqttOptions",
        "options.mqttPubOptions",
        "options.maxRetries",
        "options.delayBetweenRetries",
        {
          "key": "options.refreshRate",
          "description": "<em class='primary-text'>Specifies the interval, in seconds, for retrieving the latest device status from the SwitchBot API.</em>"
        },
        {
          "key": "options.updateRate",
          "description": "<em class='primary-text'>Specifies the interval, in seconds, at which devices will request updates from the SwitchBot API while in motion, for Curtain(s) and Blind Tilt(s) only.</em>"
        },
        {
          "key": "options.pushRate",
          "description": "<em class='primary-text'>Specifies the interval, in seconds, between pushes to the SwitchBot API.</em>"
        },
        "options.logging",
        "options.allowInvalidCharacters"
      ]
    }
  ]
}
