{
  "pluginAlias": "LgWebOsTv",
  "pluginType": "platform",
  "singular": true,
  "fixArrays": true,
  "strictValidation": true,
  "headerDisplay": "This plugin works with webOS based TV and are exposed to HomeKit as separate accessories and each needs to be manually paired.",
  "footerDisplay": "For documentation please see [GitHub repository](https://github.com/grzegorz914/homebridge-lgwebos-tv).",
  "schema": {
    "type": "object",
    "properties": {
      "devices": {
        "type": "array",
        "items": {
          "type": "object",
          "title": "Device",
          "properties": {
            "name": {
              "title": "Name",
              "type": "string",
              "placeholder": "LG TV",
              "required": true
            },
            "host": {
              "title": "IP/Hostname",
              "type": "string",
              "placeholder": "192.168.1.8",
              "format": "hostname",
              "required": true
            },
            "mac": {
              "title": "Address Mac",
              "type": "string",
              "placeholder": "ab:cd:ef:fe:dc:ba",
              "pattern": "^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$",
              "required": true
            },
            "broadcastAddress": {
              "title": "Broadcast address",
              "type": "string",
              "placeholder": "255.255.255.255",
              "format": "ipv4",
              "description": "Her set Your own broadcast address, only if You have problem to Power ON TV.",
              "required": false
            },
            "disableAccessory": {
              "title": "Disable Accessory",
              "type": "boolean",
              "default": false,
              "description": "Here You can disable this accessory.",
              "required": false
            },
            "getInputsFromDevice": {
              "title": "Load Inputs From Device",
              "type": "boolean",
              "default": false,
              "description": "This function get all available inputs and apps direct from device, manually configured inputs will be skipped.",
              "required": false
            },
            "disableLoadDefaultInputs": {
              "title": "Disable Load Default Inputs",
              "type": "boolean",
              "default": false,
              "description": "This function disable load default inputs Live TV, HDMI 1, HDMI 2 in to the inputs list.",
              "condition": {
                "functionBody": "return model.devices[arrayIndices].getInputsFromDevice === false"
              },
              "required": false
            },
            "filterSystemApps": {
              "title": "Hide System Apps",
              "type": "boolean",
              "default": false,
              "description": "If enabled, all System Apps will not be displayed on the list of inputs.",
              "condition": {
                "functionBody": "return model.devices[arrayIndices].getInputsFromDevice === true"
              },
              "required": false
            },
            "inputsDisplayOrder": {
              "title": "Inputs Display Order",
              "type": "integer",
              "minimum": 0,
              "maximum": 4,
              "default": 0,
              "description": "Here select display order of the inputs list.",
              "oneOf": [
                {
                  "title": "None",
                  "enum": [
                    0
                  ]
                },
                {
                  "title": "Ascending by Name",
                  "enum": [
                    1
                  ]
                },
                {
                  "title": "Descending by Name",
                  "enum": [
                    2
                  ]
                },
                {
                  "title": "Ascending by Reference",
                  "enum": [
                    3
                  ]
                },
                {
                  "title": "Descending by Reference",
                  "enum": [
                    4
                  ]
                }
              ],
              "required": true
            },
            "inputs": {
              "type": "array",
              "items": {
                "title": "Input",
                "type": "object",
                "properties": {
                  "name": {
                    "title": "Name",
                    "type": "string",
                    "placeholder": "Name",
                    "description": "Here set Your own name.",
                    "required": false
                  },
                  "reference": {
                    "title": "Reference",
                    "type": "string",
                    "placeholder": "Input/App, Channel reference",
                    "description": "Here set the Input/App, Channel reference.",
                    "required": false
                  },
                  "mode": {
                    "title": "Mode",
                    "type": "integer",
                    "description": "Here select the function mode.",
                    "default": 0,
                    "oneOf": [
                      {
                        "title": "Input/App",
                        "enum": [
                          0
                        ]
                      },
                      {
                        "title": "Live TV Channel",
                        "enum": [
                          1
                        ]
                      }
                    ],
                    "required": true
                  }
                }
              }
            },
            "buttons": {
              "type": "array",
              "items": {
                "title": "Button",
                "type": "object",
                "properties": {
                  "name": {
                    "title": "Name",
                    "type": "string",
                    "placeholder": "Name",
                    "description": "Here set Your own name.",
                    "required": false
                  },
                  "mode": {
                    "title": "Mode",
                    "type": "integer",
                    "description": "Here select the function mode.",
                    "minimum": 0,
                    "maximum": 2,
                    "default": 0,
                    "oneOf": [
                      {
                        "title": "Input/App",
                        "enum": [
                          0
                        ]
                      },
                      {
                        "title": "Live TV Channel",
                        "enum": [
                          1
                        ]
                      },
                      {
                        "title": "Remote Control",
                        "enum": [
                          2
                        ]
                      }
                    ],
                    "required": true
                  },
                  "reference": {
                    "title": "Reference",
                    "type": "string",
                    "placeholder": "Input/App, Channel reference",
                    "description": "Here set the Input/App or Channel reference.",
                    "required": false
                  },
                  "command": {
                    "title": "RC Command",
                    "type": "string",
                    "default": "POWER",
                    "oneOf": [
                      {
                        "title": "0",
                        "enum": [
                          "0"
                        ]
                      },
                      {
                        "title": "1",
                        "enum": [
                          "1"
                        ]
                      },
                      {
                        "title": "2",
                        "enum": [
                          "2"
                        ]
                      },
                      {
                        "title": "3",
                        "enum": [
                          "3"
                        ]
                      },
                      {
                        "title": "4",
                        "enum": [
                          "4"
                        ]
                      },
                      {
                        "title": "5",
                        "enum": [
                          "5"
                        ]
                      },
                      {
                        "title": "6",
                        "enum": [
                          "6"
                        ]
                      },
                      {
                        "title": "7",
                        "enum": [
                          "7"
                        ]
                      },
                      {
                        "title": "8",
                        "enum": [
                          "8"
                        ]
                      },
                      {
                        "title": "9",
                        "enum": [
                          "9"
                        ]
                      },
                      {
                        "title": "Power",
                        "enum": [
                          "POWER"
                        ]
                      },
                      {
                        "title": "Volume Up",
                        "enum": [
                          "VOLUMEUP"
                        ]
                      },
                      {
                        "title": "Volume Down",
                        "enum": [
                          "VOLUMEDOWN"
                        ]
                      },
                      {
                        "title": "Mute",
                        "enum": [
                          "MUTE"
                        ]
                      },
                      {
                        "title": "Channel Up",
                        "enum": [
                          "CHANNELUP"
                        ]
                      },
                      {
                        "title": "Channel Down",
                        "enum": [
                          "CHANNELDOWN"
                        ]
                      },
                      {
                        "title": "Home",
                        "enum": [
                          "HOME"
                        ]
                      },
                      {
                        "title": "Menu",
                        "enum": [
                          "MENU"
                        ]
                      },
                      {
                        "title": "Q Menu",
                        "enum": [
                          "QMENU"
                        ]
                      },
                      {
                        "title": "Menu Up",
                        "enum": [
                          "UP"
                        ]
                      },
                      {
                        "title": "Menu Down",
                        "enum": [
                          "DOWN"
                        ]
                      },
                      {
                        "title": "Menu Left",
                        "enum": [
                          "LEFT"
                        ]
                      },
                      {
                        "title": "Menu Right",
                        "enum": [
                          "RIGHT"
                        ]
                      },
                      {
                        "title": "Menu OK",
                        "enum": [
                          "ENTER"
                        ]
                      },
                      {
                        "title": "Back",
                        "enum": [
                          "BACK"
                        ]
                      },
                      {
                        "title": "Exit",
                        "enum": [
                          "EXIT"
                        ]
                      },
                      {
                        "title": "Eject",
                        "enum": [
                          "EJECT"
                        ]
                      },
                      {
                        "title": "Info",
                        "enum": [
                          "INFO"
                        ]
                      },
                      {
                        "title": "Play",
                        "enum": [
                          "PLAY"
                        ]
                      },
                      {
                        "title": "Pause",
                        "enum": [
                          "PAUSE"
                        ]
                      },
                      {
                        "title": "Record",
                        "enum": [
                          "RECORD"
                        ]
                      },
                      {
                        "title": "Fast Forward",
                        "enum": [
                          "FASTFORWARD"
                        ]
                      },
                      {
                        "title": "Rewind",
                        "enum": [
                          "REWIND"
                        ]
                      },
                      {
                        "title": "Red",
                        "enum": [
                          "RED"
                        ]
                      },
                      {
                        "title": "Green",
                        "enum": [
                          "GREEN"
                        ]
                      },
                      {
                        "title": "Yellow",
                        "enum": [
                          "YELLOW"
                        ]
                      },
                      {
                        "title": "Blue",
                        "enum": [
                          "BLUE"
                        ]
                      },
                      {
                        "title": "Live Zoom",
                        "enum": [
                          "LIVE_ZOOM"
                        ]
                      },
                      {
                        "title": "Magnifier Zoom",
                        "enum": [
                          "MAGNIFIER_ZOOM"
                        ]
                      },
                      {
                        "title": "3D Mode",
                        "enum": [
                          "3D_MODE"
                        ]
                      },
                      {
                        "title": "List",
                        "enum": [
                          "LIST"
                        ]
                      },
                      {
                        "title": "AD",
                        "enum": [
                          "AD"
                        ]
                      },
                      {
                        "title": "Dash",
                        "enum": [
                          "DASH"
                        ]
                      },
                      {
                        "title": "Favorites",
                        "enum": [
                          "FAVORITES"
                        ]
                      },
                      {
                        "title": "Program",
                        "enum": [
                          "PROGRAM"
                        ]
                      },
                      {
                        "title": "My Apps",
                        "enum": [
                          "MYAPPS"
                        ]
                      },
                      {
                        "title": "Aspect Ratio",
                        "enum": [
                          "ASPECT_RATIO"
                        ]
                      },
                      {
                        "title": "Screen Remot",
                        "enum": [
                          "SCREEN_REMOT"
                        ]
                      },
                      {
                        "title": "Recent",
                        "enum": [
                          "RECENT"
                        ]
                      },
                      {
                        "title": "SAP",
                        "enum": [
                          "SAP"
                        ]
                      },
                      {
                        "title": "CC",
                        "enum": [
                          "CC"
                        ]
                      },
                      {
                        "title": "Click",
                        "enum": [
                          "CLICK"
                        ]
                      },
                      {
                        "title": "Teletext",
                        "enum": [
                          "TELETEXT"
                        ]
                      },
                      {
                        "title": "Text Option",
                        "enum": [
                          "TEXTOPTION"
                        ]
                      },
                      {
                        "title": "BML Data",
                        "enum": [
                          "BML_DATA"
                        ]
                      },
                      {
                        "title": "3 Digital Input",
                        "enum": [
                          "3DIGIT_INPUT"
                        ]
                      }
                    ],
                    "description": "Here select the remote control command.",
                    "required": false
                  },
                  "displayType": {
                    "title": "Display Type",
                    "type": "integer",
                    "default": 0,
                    "oneOf": [
                      {
                        "title": "None/Disabled",
                        "enum": [
                          0
                        ]
                      },
                      {
                        "title": "Outlet",
                        "enum": [
                          1
                        ]
                      },
                      {
                        "title": "Switch",
                        "enum": [
                          2
                        ]
                      }
                    ],
                    "description": "Here select display type in HomeKit app.",
                    "required": true
                  },
                  "namePrefix": {
                    "title": "Prefix",
                    "type": "boolean",
                    "description": "Here enable/disable the accessory name as a prefix for button name.",
                    "required": false
                  }
                }
              }
            },
            "sensorPower": {
              "title": "Power",
              "type": "boolean",
              "default": false,
              "description": "This expose Power as a Motion Sensor to use with automations, fired if Power ON.",
              "required": false
            },
            "sensorPixelRefresh": {
              "title": "Pixel Refresh",
              "type": "boolean",
              "default": false,
              "description": "This expose Pixel Refresh as a Motion Sensor to use with automations, fired if PixelRefresh ON.",
              "required": false
            },
            "sensorVolume": {
              "title": "Volume",
              "type": "boolean",
              "default": false,
              "description": "This expose Volume as a Motion Sensor to use with automations, fired on every Volume change.",
              "required": false
            },
            "sensorMute": {
              "title": "Mute",
              "type": "boolean",
              "default": false,
              "description": "This expose Mute as a Motion Sensor to use with automations, fired if Mute ON.",
              "required": false
            },
            "sensorInput": {
              "title": "Input",
              "type": "boolean",
              "default": false,
              "description": "This expose Input as a Motion Sensor to use with automations, fired on every Input change.",
              "required": false
            },
            "sensorChannel": {
              "title": "Channel",
              "type": "boolean",
              "default": false,
              "description": "This expose Channel as a Motion Sensor to use with automations, fired on every Input change.",
              "required": false
            },
            "sensorSoundMode": {
              "title": "Sound Mode",
              "type": "boolean",
              "default": false,
              "description": "This expose Sound Mode as a Motion Sensor to use with automations, fired on every Sound Mode change, webOS >= 6.0.",
              "required": false
            },
            "sensorSoundOutput": {
              "title": "Sound Output",
              "type": "boolean",
              "default": false,
              "description": "This expose Sound Output as a Motion Sensor to use with automations, fired on every Sound Output change.",
              "required": false
            },
            "sensorPictureMode": {
              "title": "Picture Mode",
              "type": "boolean",
              "default": false,
              "description": "This expose Picture Mode as a Motion Sensor to use with automations, fired on every Picture Mode change, webOS >= 4.0.",
              "required": false
            },
            "sensorScreenOnOff": {
              "title": "Screen Off",
              "type": "boolean",
              "default": false,
              "description": "This expose Screen ON/OFF as a Motion Sensor to use with automations, fired if Screen Off, webOS >= 4.0.",
              "required": false
            },
            "sensorScreenSaver": {
              "title": "Screen Saver",
              "type": "boolean",
              "default": false,
              "description": "This expose Screen Saver as a Motion Sensor to use with automations, fired if Screen Saver ON, webOS >= 4.0.",
              "required": false
            },
            "sensorPlayState": {
              "title": "Play State",
              "type": "boolean",
              "default": false,
              "description": "This expose Play State as a Motion Sensor to use with automations, fired if Playing, webOS >= 7.0.",
              "required": false
            },
            "sensorInputs": {
              "type": "array",
              "items": {
                "title": "Inputs",
                "type": "object",
                "description": "Here create Input/App Sensors based on reference, sensor will active if switch to it.",
                "properties": {
                  "name": {
                    "title": "Name",
                    "type": "string",
                    "placeholder": "Name",
                    "description": "Here set Your own name.",
                    "required": false
                  },
                  "reference": {
                    "title": "Reference",
                    "type": "string",
                    "placeholder": "Input/App reference",
                    "description": "Here set the Input/App reference.",
                    "required": false
                  },
                  "displayType": {
                    "title": "Type",
                    "type": "integer",
                    "default": 0,
                    "oneOf": [
                      {
                        "title": "None/Disabled",
                        "enum": [
                          0
                        ]
                      },
                      {
                        "title": "Motion Sensor",
                        "enum": [
                          1
                        ]
                      },
                      {
                        "title": "Occupancy Sensor",
                        "enum": [
                          2
                        ]
                      },
                      {
                        "title": "Contact Sensor",
                        "enum": [
                          3
                        ]
                      }
                    ],
                    "description": "Here select sensor type to be exposed in HomeKit app.",
                    "required": true
                  },
                  "namePrefix": {
                    "title": "Prefix",
                    "type": "boolean",
                    "description": "Here enable/disable the accessory name as a prefix for sensor name.",
                    "required": false
                  }
                }
              }
            },
            "turnScreenOnOff": {
              "title": "Turn Screen ON/OFF",
              "type": "boolean",
              "default": false,
              "description": "This enable possibility turn screen ON/OFF, webOS >= 4.0.",
              "required": false
            },
            "turnScreenSaverOnOff": {
              "title": "Turn Screen Saver ON/OFF",
              "type": "boolean",
              "default": false,
              "description": "This enable possibility turn screen saver ON/OFF, webOS >= 4.0.",
              "required": false
            },
            "brightnessControl": {
              "title": "Brightness",
              "type": "boolean",
              "default": false,
              "description": "This enable possibility adjust the Brightness.",
              "required": false
            },
            "backlightControl": {
              "title": "Backlight",
              "type": "boolean",
              "default": false,
              "description": "This enable possibility adjust the Backlight.",
              "required": false
            },
            "contrastControl": {
              "title": "Contrast",
              "type": "boolean",
              "default": false,
              "description": "This enable possibility adjust the Contrast.",
              "required": false
            },
            "colorControl": {
              "title": "Color",
              "type": "boolean",
              "default": false,
              "description": "This enable possibility adjust the Color.",
              "required": false
            },
            "pictureModeControl": {
              "title": "Picture Modes",
              "type": "boolean",
              "default": false,
              "description": "This enable possibility change the Picture Mode, webOS >= 4.0.",
              "required": false
            },
            "pictureModes": {
              "title": "Picture Mode",
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "title": "Name",
                    "type": "string",
                    "placeholder": "Picture Mode Name",
                    "description": "Here set Your own Picture Mode name.",
                    "required": false
                  },
                  "reference": {
                    "title": "Mode",
                    "type": "string",
                    "default": "normal",
                    "description": "Here choice the Picture Mode.",
                    "oneOf": [
                      {
                        "title": "Normal",
                        "enum": [
                          "normal"
                        ]
                      },
                      {
                        "title": "Cinema",
                        "enum": [
                          "cinema"
                        ]
                      },
                      {
                        "title": "Eco",
                        "enum": [
                          "eco"
                        ]
                      },
                      {
                        "title": "Game",
                        "enum": [
                          "game"
                        ]
                      },
                      {
                        "title": "Photo",
                        "enum": [
                          "photo"
                        ]
                      },
                      {
                        "title": "Sports",
                        "enum": [
                          "sports"
                        ]
                      },
                      {
                        "title": "Vivid",
                        "enum": [
                          "vivid"
                        ]
                      },
                      {
                        "title": "Technicolor",
                        "enum": [
                          "technicoloro"
                        ]
                      },
                      {
                        "title": "Filmmaker",
                        "enum": [
                          "filmMaker"
                        ]
                      },
                      {
                        "title": "HDR Filmmaker",
                        "enum": [
                          "hdrFilmMaker"
                        ]
                      },
                      {
                        "title": "HDR Cinema",
                        "enum": [
                          "hdrCinema"
                        ]
                      },
                      {
                        "title": "HDR Cinema Bright",
                        "enum": [
                          "hdrCinemaBright"
                        ]
                      },
                      {
                        "title": "HDR Standard",
                        "enum": [
                          "hdrStandard"
                        ]
                      },
                      {
                        "title": "HDR Effect",
                        "enum": [
                          "hdrEffect"
                        ]
                      },
                      {
                        "title": "HDR Game",
                        "enum": [
                          "hdrGame"
                        ]
                      },
                      {
                        "title": "HDR Vivid",
                        "enum": [
                          "hdrVivid"
                        ]
                      },
                      {
                        "title": "HDR Technicolor",
                        "enum": [
                          "hdrTechnicolor"
                        ]
                      },
                      {
                        "title": "HDR External",
                        "enum": [
                          "hdrExternal"
                        ]
                      },
                      {
                        "title": "Dolby HDR Cinema",
                        "enum": [
                          "dolbyHdrCinema"
                        ]
                      },
                      {
                        "title": "Dolby HDR Cinema Bright",
                        "enum": [
                          "dolbyHdrCinemaBright"
                        ]
                      },
                      {
                        "title": "Dolby HDR Cinema Dark",
                        "enum": [
                          "dolbyHdrDarkAmazon"
                        ]
                      },
                      {
                        "title": "Dolby HDR Standard",
                        "enum": [
                          "dolbyHdrStandard"
                        ]
                      },
                      {
                        "title": "Dolby HDR Vivid",
                        "enum": [
                          "dolbyHdrVivid"
                        ]
                      },
                      {
                        "title": "Dolby HDR Game",
                        "enum": [
                          "dolbyHdrGame"
                        ]
                      },
                      {
                        "title": "Expert 1",
                        "enum": [
                          "expert1"
                        ]
                      },
                      {
                        "title": "Expert 2",
                        "enum": [
                          "expert2"
                        ]
                      }
                    ],
                    "required": false
                  },
                  "displayType": {
                    "title": "Display Type",
                    "type": "integer",
                    "default": 0,
                    "oneOf": [
                      {
                        "title": "None/Disabled",
                        "enum": [
                          0
                        ]
                      },
                      {
                        "title": "Outlet",
                        "enum": [
                          1
                        ]
                      },
                      {
                        "title": "Switch",
                        "enum": [
                          2
                        ]
                      }
                    ],
                    "description": "Here select display type in HomeKit app.",
                    "required": true
                  },
                  "namePrefix": {
                    "title": "Prefix",
                    "type": "boolean",
                    "description": "Here enable/disable the accessory name as a prefix for picture mode.",
                    "required": false
                  }
                }
              }
            },
            "volumeControl": {
              "title": "Volume Control",
              "type": "integer",
              "minimum": 0,
              "maximum": 3,
              "default": 0,
              "oneOf": [
                {
                  "title": "None/Disabled",
                  "enum": [
                    0
                  ]
                },
                {
                  "title": "Slider",
                  "enum": [
                    1
                  ]
                },
                {
                  "title": "Fan",
                  "enum": [
                    2
                  ]
                },
                {
                  "title": "Speaker",
                  "enum": [
                    3
                  ]
                }
              ],
              "description": "Here select what a volume control mode You want to use.",
              "required": true
            },
            "volumeControlName": {
              "title": "Volume Control Name",
              "type": "string",
              "placeholder": "Name",
              "description": "Here set Your own volume control name or leave empty.",
              "required": false
            },
            "volumeControlNamePrefix": {
              "title": "Volume Control Name Prefix",
              "type": "boolean",
              "default": false,
              "description": "Here enable/disable the accessory name as a prefix for volume control name.",
              "required": false
            },
            "soundModeControl": {
              "title": "Sound Modes",
              "type": "boolean",
              "default": false,
              "description": "This enable possibility change the Sound Mode, only for webOS >= 6.0.",
              "required": false
            },
            "soundModes": {
              "title": "Sound Mode",
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "title": "Name",
                    "type": "string",
                    "placeholder": "Sound Mode Name",
                    "description": "Here set Your own Sound Mode name.",
                    "required": false
                  },
                  "reference": {
                    "title": "Mode",
                    "type": "string",
                    "default": "standard",
                    "description": "Here choice the Sound Mode.",
                    "oneOf": [
                      {
                        "title": "Ai Sound Plus",
                        "enum": [
                          "aiSoundPlus"
                        ]
                      },
                      {
                        "title": "Standard",
                        "enum": [
                          "standard"
                        ]
                      },
                      {
                        "title": "Movie",
                        "enum": [
                          "movie"
                        ]
                      },
                      {
                        "title": "Clear Voice",
                        "enum": [
                          "clearVoice"
                        ]
                      },
                      {
                        "title": "News",
                        "enum": [
                          "news"
                        ]
                      },
                      {
                        "title": "Sports",
                        "enum": [
                          "sports"
                        ]
                      },
                      {
                        "title": "Music",
                        "enum": [
                          "music"
                        ]
                      },
                      {
                        "title": "Game",
                        "enum": [
                          "game"
                        ]
                      }
                    ],
                    "required": false
                  },
                  "displayType": {
                    "title": "Display Type",
                    "type": "integer",
                    "default": 0,
                    "oneOf": [
                      {
                        "title": "None/Disabled",
                        "enum": [
                          0
                        ]
                      },
                      {
                        "title": "Outlet",
                        "enum": [
                          1
                        ]
                      },
                      {
                        "title": "Switch",
                        "enum": [
                          2
                        ]
                      }
                    ],
                    "description": "Here select display type in HomeKit app.",
                    "required": true
                  },
                  "namePrefix": {
                    "title": "Prefix",
                    "type": "boolean",
                    "description": "Here enable/disable the accessory name as a prefix for sound mode.",
                    "required": false
                  }
                }
              }
            },
            "soundOutputControl": {
              "title": "Sound Output",
              "type": "boolean",
              "default": false,
              "description": "This enable possibility change the Sound Output.",
              "required": false
            },
            "soundOutputs": {
              "title": "Sound Outputs",
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "title": "Name",
                    "type": "string",
                    "placeholder": "Sound Output Name",
                    "description": "Here set Your own Sound Output name.",
                    "required": false
                  },
                  "reference": {
                    "title": "Output",
                    "type": "string",
                    "default": "tv_speaker",
                    "description": "Here choice the Sound Output.",
                    "oneOf": [
                      {
                        "title": "TV Speaker",
                        "enum": [
                          "tv_speaker"
                        ]
                      },
                      {
                        "title": "External Speaker",
                        "enum": [
                          "external_speaker"
                        ]
                      },
                      {
                        "title": "External Optical",
                        "enum": [
                          "external_optical"
                        ]
                      },
                      {
                        "title": "External ARC",
                        "enum": [
                          "external_arc"
                        ]
                      },
                      {
                        "title": "Line Out",
                        "enum": [
                          "lineout"
                        ]
                      },
                      {
                        "title": "Headphone",
                        "enum": [
                          "headphone"
                        ]
                      },
                      {
                        "title": "TV External Speaker",
                        "enum": [
                          "tv_external_speaker"
                        ]
                      },
                      {
                        "title": "TV Speaker Headphone",
                        "enum": [
                          "tv_speaker_headphone"
                        ]
                      },
                      {
                        "title": "BT Soundbar",
                        "enum": [
                          "bt_soundbar"
                        ]
                      },
                      {
                        "title": "Soundbar",
                        "enum": [
                          "soundbar"
                        ]
                      }
                    ],
                    "required": false
                  },
                  "displayType": {
                    "title": "Display Type",
                    "type": "integer",
                    "default": 0,
                    "oneOf": [
                      {
                        "title": "None/Disabled",
                        "enum": [
                          0
                        ]
                      },
                      {
                        "title": "Outlet",
                        "enum": [
                          1
                        ]
                      },
                      {
                        "title": "Switch",
                        "enum": [
                          2
                        ]
                      }
                    ],
                    "description": "Here select display type in HomeKit app.",
                    "required": true
                  },
                  "namePrefix": {
                    "title": "Prefix",
                    "type": "boolean",
                    "description": "Here enable/disable the accessory name as a prefix for sound output.",
                    "required": false
                  }
                }
              }
            },
            "serviceMenu": {
              "title": "Service Menu",
              "type": "boolean",
              "default": false,
              "description": "This enable access to the service menu from input list.",
              "required": false
            },
            "sslWebSocket": {
              "title": "SSL WebSocket",
              "type": "boolean",
              "default": false,
              "description": "This enable SSL WebSocket, support TV with new firmware.",
              "required": false
            },
            "disableTvService": {
              "title": "Disable TV Service",
              "type": "boolean",
              "default": false,
              "description": "This disable TV service and prevent display double services if TV already support HomeKit native.",
              "required": false
            },
            "ezAdjustMenu": {
              "title": "EZ Adjust Menu",
              "type": "boolean",
              "default": false,
              "description": "This enable access to the ez adjust menu from input list.",
              "required": false
            },
            "infoButtonCommand": {
              "title": "Info Button",
              "type": "string",
              "default": "MENU",
              "oneOf": [
                {
                  "title": "Home",
                  "enum": [
                    "HOME"
                  ]
                },
                {
                  "title": "Menu",
                  "enum": [
                    "MENU"
                  ]
                },
                {
                  "title": "Q Menu",
                  "enum": [
                    "QMENU"
                  ]
                },
                {
                  "title": "Info",
                  "enum": [
                    "INFO"
                  ]
                },
                {
                  "title": "Red",
                  "enum": [
                    "RED"
                  ]
                },
                {
                  "title": "Green",
                  "enum": [
                    "GREEN"
                  ]
                },
                {
                  "title": "Yellow",
                  "enum": [
                    "YELLOW"
                  ]
                },
                {
                  "title": "Blue",
                  "enum": [
                    "BLUE"
                  ]
                }
              ],
              "description": "Here select the function of info button in RC.",
              "required": false
            },
            "disableLogDeviceInfo": {
              "title": "Disable Log Device Info",
              "type": "boolean",
              "default": false,
              "description": "This disable logging device info by every connections device to the network.",
              "required": false
            },
            "disableLogInfo": {
              "title": "Disable Log Info",
              "type": "boolean",
              "default": false,
              "required": false
            },
            "disableLogSuccess": {
              "title": "Disable Log Success",
              "type": "boolean",
              "default": false,
              "required": false
            },
            "disableLogWarn": {
              "title": "Disable Log Warn",
              "type": "boolean",
              "default": false,
              "required": false
            },
            "disableLogError": {
              "title": "Disable Log Error",
              "type": "boolean",
              "default": false,
              "required": false
            },
            "enableDebugMode": {
              "title": "Enable Log Debug",
              "type": "boolean",
              "default": false,
              "required": false
            },
            "restFul": {
              "title": "RESTFul",
              "type": "object",
              "properties": {
                "enable": {
                  "title": "Enable",
                  "type": "boolean",
                  "default": false,
                  "description": "This enable RESTful server."
                },
                "debug": {
                  "title": "Debug",
                  "type": "boolean",
                  "default": false,
                  "description": "This enable debug mode for RESTFul.",
                  "condition": {
                    "functionBody": "return model.devices[arrayIndices].restFul.enable === true;"
                  },
                  "required": false
                },
                "port": {
                  "title": "Port",
                  "type": "integer",
                  "placeholder": 3000,
                  "description": "Here set the listening Port for RESTful server.",
                  "condition": {
                    "functionBody": "return model.devices[arrayIndices].restFul.enable === true;"
                  },
                  "required": false
                }
              }
            },
            "mqtt": {
              "title": "MQTT",
              "type": "object",
              "properties": {
                "enable": {
                  "title": "Enable",
                  "type": "boolean",
                  "default": false,
                  "description": "This enable MQTT client."
                },
                "debug": {
                  "title": "Debug",
                  "type": "boolean",
                  "default": false,
                  "description": "This enable debug mode for MQTT.",
                  "condition": {
                    "functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
                  },
                  "required": false
                },
                "host": {
                  "title": "IP/Hostname",
                  "type": "string",
                  "placeholder": "ip or hostname",
                  "format": "hostname",
                  "description": "Here set the IP/Hostname of MQTT Broker.",
                  "condition": {
                    "functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
                  },
                  "required": false
                },
                "port": {
                  "title": "Port",
                  "type": "integer",
                  "placeholder": 1883,
                  "description": "Here set the port of MQTT Broker.",
                  "condition": {
                    "functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
                  },
                  "required": false
                },
                "clientId": {
                  "title": "Client ID",
                  "type": "string",
                  "placeholder": "client id",
                  "description": "Here optional set the Client ID of MQTT Broker.",
                  "condition": {
                    "functionBody": "return model.devices[arrayIndices].mqtt.enable === true"
                  },
                  "required": false
                },
                "prefix": {
                  "title": "Prefix",
                  "type": "string",
                  "placeholder": "home/envoy",
                  "description": "Here set the prefix.",
                  "condition": {
                    "functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
                  },
                  "required": false
                },
                "auth": {
                  "title": "Authorization",
                  "type": "boolean",
                  "default": false,
                  "description": "This enable authorization for MQTT Broker.",
                  "condition": {
                    "functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
                  },
                  "required": false
                },
                "user": {
                  "title": "User",
                  "type": "string",
                  "placeholder": "user",
                  "description": "Here set the user of MQTT Broker.",
                  "condition": {
                    "functionBody": "return model.devices[arrayIndices].mqtt.enable === true && model.devices[arrayIndices].mqtt.auth === true;"
                  },
                  "required": false
                },
                "passwd": {
                  "title": "Password",
                  "type": "string",
                  "placeholder": "password",
                  "description": "Here set the password of MQTT Broker.",
                  "format": "password",
                  "condition": {
                    "functionBody": "return model.devices[arrayIndices].mqtt.enable === true && model.devices[arrayIndices].mqtt.auth === true;"
                  },
                  "required": false
                }
              }
            }
          }
        }
      }
    }
  },
  "layout": [
    {
      "key": "devices",
      "type": "tabarray",
      "title": "{{ value.name || 'device' }}",
      "items": [
        "devices[].name",
        "devices[].host",
        "devices[].mac",
        "devices[].broadcastAddress",
        "devices[].disableAccessory",
        {
          "key": "devices[]",
          "type": "section",
          "title": "Inputs",
          "expandable": true,
          "expanded": false,
          "items": [
            "devices[].getInputsFromDevice",
            "devices[].filterSystemApps",
            "devices[].disableLoadDefaultInputs",
            "devices[].inputsDisplayOrder",
            {
              "key": "devices[].inputs",
              "type": "tabarray",
              "title": "{{ value.name || 'input' }}",
              "items": [
                "devices[].inputs[].name",
                "devices[].inputs[].reference",
                "devices[].inputs[].mode"
              ],
              "condition": {
                "functionBody": "return model.devices[arrayIndices].getInputsFromDevice === false;"
              }
            }
          ],
          "condition": {
            "functionBody": "return model.devices[arrayIndices].disableAccessory === false;"
          }
        },
        {
          "key": "devices[]",
          "type": "section",
          "title": "Buttons",
          "expandable": true,
          "expanded": false,
          "items": [
            {
              "key": "devices[].buttons",
              "type": "tabarray",
              "title": "{{ value.name || 'button' }}",
              "items": [
                "devices[].buttons[].name",
                "devices[].buttons[].mode",
                "devices[].buttons[].reference",
                "devices[].buttons[].displayType",
                "devices[].buttons[].namePrefix"
              ],
              "condition": {
                "functionBody": "return model.devices[arrayIndices].buttons[arrayIndices].mode <= 1;"
              }
            },
            {
              "key": "devices[].buttons",
              "type": "tabarray",
              "title": "{{ value.name || 'button' }}",
              "items": [
                "devices[].buttons[].name",
                "devices[].buttons[].mode",
                "devices[].buttons[].command",
                "devices[].buttons[].displayType",
                "devices[].buttons[].namePrefix"
              ],
              "condition": {
                "functionBody": "return model.devices[arrayIndices].buttons[arrayIndices].mode === 2;"
              }
            }
          ],
          "condition": {
            "functionBody": "return model.devices[arrayIndices].disableAccessory === false;"
          }
        },
        {
          "key": "devices[]",
          "type": "section",
          "title": "Advanced Settings",
          "expandable": true,
          "expanded": false,
          "items": [
            {
              "key": "devices[]",
              "type": "tabarray",
              "title": "{{ value.title }}",
              "items": [
                {
                  "key": "devices[]",
                  "title": "Sensors",
                  "items": [
                    "devices[].sensorPower",
                    "devices[].sensorVolume",
                    "devices[].sensorMute",
                    "devices[].sensorInput",
                    "devices[].sensorChannel",
                    "devices[].sensorSoundMode",
                    "devices[].sensorSoundOutput",
                    "devices[].sensorPictureMode",
                    "devices[].sensorScreenOnOff",
                    "devices[].sensorScreenSaver",
                    "devices[].sensorPixelRefresh",
                    "devices[].sensorPlayState",
                    {
                      "key": "devices[]",
                      "type": "section",
                      "title": "Custom Inputs",
                      "expandable": true,
                      "expanded": false,
                      "items": [
                        {
                          "key": "devices[].sensorInputs",
                          "type": "tabarray",
                          "title": "{{ value.name || 'sensor' }}",
                          "items": [
                            "devices[].sensorInputs[].name",
                            "devices[].sensorInputs[].reference",
                            "devices[].sensorInputs[].displayType",
                            "devices[].sensorInputs[].namePrefix"
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "key": "devices[]",
                  "title": "Picture / Screen",
                  "items": [
                    "devices[].turnScreenOnOff",
                    "devices[].turnScreenSaverOnOff",
                    "devices[].brightnessControl",
                    "devices[].backlightControl",
                    "devices[].contrastControl",
                    "devices[].colorControl",
                    "devices[].pictureModeControl",
                    {
                      "items": [
                        {
                          "key": "devices[].pictureModes",
                          "type": "tabarray",
                          "title": "{{ value.name || 'mode' }}",
                          "items": [
                            "devices[].pictureModes[].name",
                            "devices[].pictureModes[].reference",
                            "devices[].pictureModes[].displayType",
                            "devices[].pictureModes[].namePrefix"
                          ]
                        }
                      ],
                      "condition": {
                        "functionBody": "return model.devices[arrayIndices].pictureModeControl === true;"
                      }
                    }
                  ]
                },
                {
                  "key": "devices[]",
                  "title": "Sound / Volume",
                  "items": [
                    "devices[].volumeControl",
                    "devices[].volumeControlName",
                    "devices[].volumeControlNamePrefix",
                    "devices[].soundModeControl",
                    {
                      "items": [
                        {
                          "key": "devices[].soundModes",
                          "type": "tabarray",
                          "title": "{{ value.name || 'mode' }}",
                          "items": [
                            "devices[].soundModes[].name",
                            "devices[].soundModes[].reference",
                            "devices[].soundModes[].displayType",
                            "devices[].soundModes[].namePrefix"
                          ]
                        }
                      ],
                      "condition": {
                        "functionBody": "return model.devices[arrayIndices].soundModeControl === true;"
                      }
                    },
                    "devices[].soundOutputControl",
                    {
                      "items": [
                        {
                          "key": "devices[].soundOutputs",
                          "type": "tabarray",
                          "title": "{{ value.name || 'output' }}",
                          "items": [
                            "devices[].soundOutputs[].name",
                            "devices[].soundOutputs[].reference",
                            "devices[].soundOutputs[].displayType",
                            "devices[].soundOutputs[].namePrefix"
                          ]
                        }
                      ],
                      "condition": {
                        "functionBody": "return model.devices[arrayIndices].soundOutputControl === true;"
                      }
                    }
                  ]
                },
                {
                  "key": "devices[]",
                  "title": "Device",
                  "items": [
                    "devices[].sslWebSocket",
                    "devices[].serviceMenu",
                    "devices[].ezAdjustMenu",
                    "devices[].infoButtonCommand",
                    "devices[].disableTvService"
                  ]
                },
                {
                  "key": "devices[]",
                  "title": "Log",
                  "items": [
                    "devices[].disableLogDeviceInfo",
                    "devices[].disableLogInfo",
                    "devices[].disableLogSuccess",
                    "devices[].disableLogWarn",
                    "devices[].disableLogError",
                    "devices[].enableDebugMode"
                  ]
                },
                {
                  "key": "devices[]",
                  "title": "External Integrations",
                  "items": [
                    {
                      "key": "devices[]",
                      "type": "tabarray",
                      "title": "{{ value.title }}",
                      "items": [
                        {
                          "key": "devices[].restFul",
                          "title": "RESTFul",
                          "items": [
                            "devices[].restFul.enable",
                            "devices[].restFul.debug",
                            "devices[].restFul.port"
                          ]
                        },
                        {
                          "key": "devices[].mqtt",
                          "title": "MQTT",
                          "items": [
                            "devices[].mqtt.enable",
                            "devices[].mqtt.debug",
                            "devices[].mqtt.host",
                            "devices[].mqtt.port",
                            "devices[].mqtt.clientId",
                            "devices[].mqtt.prefix",
                            "devices[].mqtt.auth",
                            "devices[].mqtt.user",
                            {
                              "key": "devices[].mqtt.passwd",
                              "type": "password"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ],
          "condition": {
            "functionBody": "return model.devices[arrayIndices].disableAccessory === false;"
          }
        }
      ]
    }
  ]
}