homebridge-lgwebos-tv
Version:
Homebridge plugin to control LG webOS TV.
1,466 lines (1,465 loc) • 64 kB
JSON
{
"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
},