homebridge-xbox-tv
Version:
Homebridge plugin to control Xbox game consoles.
1,489 lines • 37.6 kB
JSON
{
"pluginAlias": "XboxTv",
"pluginType": "platform",
"singular": true,
"fixArrays": true,
"strictValidation": true,
"customUi": true,
"headerDisplay": "This plugin works with Xbox Game Consoles. Devices are exposed to HomeKit as separate accessories and each needs to be manually paired.",
"footerDisplay": "For documentation please see [GitHub repository](https://github.com/grzegorz914/homebridge-xbox-tv).",
"schema": {
"type": "object",
"properties": {
"name": {
"title": "Platform",
"type": "string",
"default": "Xbox TV"
},
"devices": {
"type": "array",
"items": {
"title": "Device",
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string",
"placeholder": "Game console"
},
"host": {
"title": "IP/Hostname",
"type": "string",
"placeholder": "192.168.1.10 or xbox.local",
"pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)(\\.([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?))*)$"
},
"xboxLiveId": {
"title": "Live ID",
"type": "string",
"placeholder": "FD00000000000000",
"description": "Xbox Live ID"
},
"displayType": {
"title": "Accessory type",
"type": "integer",
"minimum": 0,
"maximum": 4,
"default": 2,
"anyOf": [
{
"title": "None / Disabled",
"enum": [
0
]
},
{
"title": "Television",
"enum": [
1
]
},
{
"title": "TV Set Top Box",
"enum": [
2
]
},
{
"title": "TV Streaming Stick",
"enum": [
3
]
},
{
"title": "Audio Receiver",
"enum": [
4
]
}
],
"description": "Accessory type for Home app"
},
"webApi": {
"title": "Web Api",
"type": "object",
"properties": {
"enable": {
"title": "Enable",
"type": "boolean",
"default": false,
"description": "This enable console control over Web Api."
},
"token": {
"title": "Token",
"type": "string",
"placeholder": "Web Api Token",
"description": "Here put the reponse Token (value after ?code=) from the authorization URL.",
"format": "password",
"condition": {
"functionBody": "return model.devices[arrayIndices].webApi.enable === true;"
}
},
"clientId": {
"title": "Client Id",
"type": "string",
"placeholder": "a34ac209-edab-4b08-91e7-a4558d8da1bd",
"description": "Here set your own Client Id from Azure AD or leave empty if you do not have own account.",
"condition": {
"functionBody": "return model.devices[arrayIndices].webApi.enable === true;"
}
},
"clientSecret": {
"title": "Client Secret",
"type": "string",
"placeholder": "Client Secret",
"description": "Here set your Client Secret from Azure AD or leave empty if you do not have own account.",
"format": "password",
"condition": {
"functionBody": "return model.devices[arrayIndices].webApi.enable === true;"
}
}
},
"allOf": [
{
"if": {
"required": [
"enable"
],
"properties": {
"enable": {
"const": true
}
}
},
"then": {
"required": [
"token"
]
}
}
]
},
"inputs": {
"title": "Inputs",
"type": "object",
"properties": {
"getFromDevice": {
"title": "Load Inputs From Device",
"type": "boolean",
"description": "This function get all available inputs direct from device, manually configured inputs will be skipped.",
"condition": {
"functionBody": "return model.devices[arrayIndices].webApi.enable === true;"
}
},
"filterGames": {
"title": "Hide Games",
"type": "boolean",
"default": false,
"description": "If enabled, Games will not be displayed on the list of inputs."
},
"filterApps": {
"title": "Hide Apps",
"type": "boolean",
"default": false,
"description": "If enabled, Apps will not be displayed on the list of inputs."
},
"filterSystemApps": {
"title": "Hide System Apps",
"type": "boolean",
"default": false,
"description": "If enabled, System Apps (Accessory, TV, Network Troubleshooter, Xbox Guide) will not be displayed on the list of inputs."
},
"filterDlc": {
"title": "Hide DLC",
"type": "boolean",
"default": false,
"description": "If enabled, DLC will not be displayed on the list of inputs."
},
"displayOrder": {
"title": "Display Order",
"type": "integer",
"minimum": 0,
"maximum": 4,
"description": "Here select display order of the inputs list.",
"anyOf": [
{
"title": "Disabled",
"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
]
}
]
},
"data": {
"title": "Inputs",
"type": "array",
"items": {
"title": "Input",
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string",
"placeholder": "Input name",
"description": "Here set Your own name."
},
"titleId": {
"title": "Title Id",
"type": "string",
"placeholder": "Input Title Id",
"description": "Here set title Id. If web api is enable all available in */var/lib/homebridge/xboxTv/inputs_xxxxxx* file."
},
"reference": {
"title": "Reference",
"type": "string",
"placeholder": "Input reference",
"description": "Here set reference. If web api is enable all available in */var/lib/homebridge/xboxTv/inputs_xxxxxx* file."
},
"oneStoreProductId": {
"title": "Product Id",
"type": "string",
"placeholder": "oneStoreProductId",
"description": "Here set the *oneStoreProductId*. If web api enable, switch app/games will be possible, all available in */var/lib/homebridge/xboxTv/inputs_xxxxxx* file.",
"condition": {
"functionBody": "return model.devices[arrayIndices].webApi.enable === true;"
}
},
"contentType": {
"title": "Content Type",
"type": "string",
"description": "Here select source input type.",
"anyOf": [
{
"title": "Game",
"enum": [
"Game"
]
},
{
"title": "Application",
"enum": [
"App"
]
},
{
"title": "System Appliction",
"enum": [
"System App"
]
},
{
"title": "Dlc",
"enum": [
"Dlc"
]
}
]
}
}
},
"condition": {
"functionBody": "return model.devices[arrayIndices].inputs.getFromDevice === false || model.devices[arrayIndices].webApi.enable === false;"
}
}
}
},
"buttons": {
"title": "Button",
"type": "array",
"items": {
"type": "object",
"properties": {
"displayType": {
"title": "Display Type",
"type": "integer",
"minimum": 0,
"maximum": 2,
"description": "Here select display type in HomeKit app.",
"anyOf": [
{
"title": "Disabled",
"enum": [
0
]
},
{
"title": "Outlet",
"enum": [
1
]
},
{
"title": "Switch",
"enum": [
2
]
}
]
},
"name": {
"title": "Name",
"type": "string",
"placeholder": "Button name",
"description": "Here set Your own name."
},
"mode": {
"title": "Mode",
"type": "integer",
"minimum": 0,
"maximum": 4,
"description": "Here select the function mode.",
"anyOf": [
{
"title": "Media Control",
"enum": [
0
]
},
{
"title": "Game Pad Control",
"enum": [
1
]
},
{
"title": "TV Remote Control",
"enum": [
2
]
},
{
"title": "Console Control",
"enum": [
3
]
},
{
"title": "Game/App Control",
"enum": [
4
]
}
],
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0;"
}
},
"mediaCommand": {
"title": "Media Command",
"type": "string",
"description": "Here select the media command.",
"anyOf": [
{
"title": "Play",
"enum": [
"play"
]
},
{
"title": "Pause",
"enum": [
"pause"
]
},
{
"title": "Play/Pause",
"enum": [
"playPause"
]
},
{
"title": "Stop",
"enum": [
"stop"
]
},
{
"title": "Record",
"enum": [
"record"
]
},
{
"title": "Next Track",
"enum": [
"nextTrack"
]
},
{
"title": "Previous Track",
"enum": [
"prevTrack"
]
},
{
"title": "Fast Forward",
"enum": [
"fastForward"
]
},
{
"title": "Rewind",
"enum": [
"rewind"
]
},
{
"title": "Channel Up",
"enum": [
"channelUp"
]
},
{
"title": "Channel Down",
"enum": [
"channelDown"
]
},
{
"title": "Back",
"enum": [
"back"
]
},
{
"title": "View",
"enum": [
"view"
]
},
{
"title": "Menu",
"enum": [
"menu"
]
},
{
"title": "Seek",
"enum": [
"seek"
]
}
],
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].buttons[arrayIndices[1]].mode === 0;"
}
},
"gamePadCommand": {
"title": "Game Pad Command",
"type": "string",
"description": "Here select the controler command.",
"anyOf": [
{
"title": "Nexus",
"enum": [
"nexus"
]
},
{
"title": "View",
"enum": [
"view"
]
},
{
"title": "Menu",
"enum": [
"menu"
]
},
{
"title": "A",
"enum": [
"a"
]
},
{
"title": "B",
"enum": [
"b"
]
},
{
"title": "X",
"enum": [
"x"
]
},
{
"title": "Y",
"enum": [
"y"
]
},
{
"title": "Up",
"enum": [
"up"
]
},
{
"title": "Down",
"enum": [
"down"
]
},
{
"title": "Left",
"enum": [
"left"
]
},
{
"title": "Right",
"enum": [
"right"
]
}
],
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].buttons[arrayIndices[1]].mode === 1;"
}
},
"tvRemoteCommand": {
"title": "TV Remote Command",
"type": "string",
"description": "Here select the tv remote command.",
"anyOf": [
{
"title": "Volume Up",
"enum": [
"volUp"
]
},
{
"title": "Volume Down",
"enum": [
"volDown"
]
},
{
"title": "Mute",
"enum": [
"volMute"
]
}
],
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].buttons[arrayIndices[1]].mode === 2;"
}
},
"consoleControlCommand": {
"title": "Console Control Command",
"type": "string",
"description": "Here select the console control command.",
"anyOf": [
{
"title": "Reboot",
"enum": [
"reboot"
]
},
{
"title": "Record Game DVR",
"enum": [
"recordGameDvr"
]
}
],
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].buttons[arrayIndices[1]].mode === 3;"
}
},
"gameAppControlCommand": {
"title": "Product Id",
"type": "string",
"placeholder": "oneStoreProductId",
"description": "Here set the *oneStoreProductId*. If web api enabled, switch app/games will be possible, all available in */var/lib/homebridge/xboxTv/inputs_xxxxxx* file.",
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].buttons[arrayIndices[1]].mode === 4;"
}
},
"namePrefix": {
"title": "Prefix",
"type": "boolean",
"description": "Here enable/disable the accessory name as a prefix for button name.",
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0;"
}
}
},
"allOf": [
{
"if": {
"required": [
"displayType"
],
"properties": {
"displayType": {
"enum": [
1,
2
]
}
}
},
"then": {
"required": [
"mode"
]
}
},
{
"if": {
"required": [
"displayType",
"mode"
],
"properties": {
"displayType": {
"enum": [
1,
2
]
},
"mode": {
"enum": [
0
]
}
}
},
"then": {
"required": [
"mediaCommand"
]
}
},
{
"if": {
"required": [
"displayType",
"mode"
],
"properties": {
"displayType": {
"enum": [
1,
2
]
},
"mode": {
"enum": [
1
]
}
}
},
"then": {
"required": [
"gamePadCommand"
]
}
},
{
"if": {
"required": [
"displayType",
"mode"
],
"properties": {
"displayType": {
"enum": [
1,
2
]
},
"mode": {
"enum": [
2
]
}
}
},
"then": {
"required": [
"tvRemoteCommand"
]
}
},
{
"if": {
"required": [
"displayType",
"mode"
],
"properties": {
"displayType": {
"enum": [
1,
2
]
},
"mode": {
"enum": [
3
]
}
}
},
"then": {
"required": [
"consoleControlCommand"
]
}
},
{
"if": {
"required": [
"displayType",
"mode"
],
"properties": {
"displayType": {
"enum": [
1,
2
]
},
"mode": {
"enum": [
4
]
}
}
},
"then": {
"required": [
"gameAppControlCommand"
]
}
}
]
}
},
"sensors": {
"type": "array",
"items": {
"title": "Sensors",
"type": "object",
"properties": {
"displayType": {
"title": "Display Type",
"type": "integer",
"minimum": 0,
"maximum": 3,
"default": 0,
"anyOf": [
{
"title": "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."
},
"mode": {
"title": "Mode",
"type": "integer",
"minimum": 0,
"maximum": 5,
"anyOf": [
{
"title": "App / Games",
"enum": [
0
]
},
{
"title": "Power",
"enum": [
1
]
},
{
"title": "Volume",
"enum": [
2
]
},
{
"title": "Mute",
"enum": [
3
]
},
{
"title": "Screen Saver",
"enum": [
4
]
},
{
"title": "Play State",
"enum": [
5
]
}
],
"description": "Here select the sensor mode.",
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].sensors[arrayIndices[1]].displayType > 0;"
}
},
"name": {
"title": "Name",
"type": "string",
"placeholder": "Name",
"description": "Here set Your own name."
},
"namePrefix": {
"title": "Prefix",
"type": "boolean",
"description": "Here enable the accessory name as a prefix for sensor name.",
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].sensors[arrayIndices[1]].displayType > 0;"
}
},
"pulse": {
"title": "Pulse",
"type": "boolean",
"description": "Here enable sensor pulse, sensor send pulse and fired on every value change of selected mode.",
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].sensors[arrayIndices[1]].displayType > 0;"
}
},
"reference": {
"title": "Reference",
"type": "string",
"placeholder": "Reference",
"description": "Here set the channel reference, sensor fired if switch to this reference.",
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].sensors[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].sensors[arrayIndices[1]].pulse === false && model.devices[arrayIndices[0]].sensors[arrayIndices[1]].mode === 0;"
}
},
"level": {
"title": "Level",
"type": "number",
"minimum": 0,
"maximum": 100,
"multipleOf": 1,
"description": "Here set the level between 0-100% at which the sensor fired.",
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].sensors[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].sensors[arrayIndices[1]].pulse === false && model.devices[arrayIndices[0]].sensors[arrayIndices[1]].mode === 2;"
}
}
},
"allOf": [
{
"if": {
"required": [
"displayType"
],
"properties": {
"displayType": {
"enum": [
1,
2,
3
]
}
}
},
"then": {
"required": [
"mode"
]
}
},
{
"if": {
"required": [
"displayType",
"mode",
"pulse"
],
"properties": {
"displayType": {
"enum": [
1,
2,
3
]
},
"pulse": {
"const": false
},
"mode": {
"enum": [
0
]
}
}
},
"then": {
"required": [
"reference"
]
}
},
{
"if": {
"required": [
"displayType",
"mode",
"pulse"
],
"properties": {
"displayType": {
"enum": [
1,
2,
3
]
},
"pulse": {
"const": false
},
"mode": {
"enum": [
2
]
}
}
},
"then": {
"required": [
"level"
]
}
}
]
}
},
"volume": {
"title": "Volume",
"type": "object",
"properties": {
"displayType": {
"title": "Display Type",
"type": "integer",
"description": "Here select what a extra volume/mute control type You want to use.",
"anyOf": [
{
"title": "Disabled",
"enum": [
0
]
},
{
"title": "Lightbulb",
"enum": [
1
]
},
{
"title": "Fan",
"enum": [
2
]
},
{
"title": "TV Speaker (HW buttons)",
"enum": [
3
]
},
{
"title": "TV Speaker / Lightbulb",
"enum": [
4
]
},
{
"title": "TV Speaker / Fan",
"enum": [
5
]
}
]
},
"name": {
"title": "Name",
"type": "string",
"placeholder": "Volume Control Name",
"description": "Here set Your own volume control name or leave empty.",
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].volume.displayType > 0;"
}
},
"namePrefix": {
"title": "Prefix",
"type": "boolean",
"description": "Here enable/disable the accessory name as a prefix for volume control name.",
"condition": {
"functionBody": "return model.devices[arrayIndices[0]].volume.displayType > 0;"
}
}
}
},
"infoButtonCommand": {
"title": "Info Button",
"type": "string",
"default": "nexus",
"description": "Here select the function of info button in RC.",
"anyOf": [
{
"title": "Game Pad View",
"enum": [
"view"
]
},
{
"title": "Game Pad Nexus",
"enum": [
"nexus"
]
},
{
"title": "Game Pad Menu",
"enum": [
"menu"
]
},
{
"title": "Game Pad A",
"enum": [
"a"
]
},
{
"title": "Game Pad B",
"enum": [
"b"
]
},
{
"title": "Game Pad X",
"enum": [
"x"
]
},
{
"title": "Game Pad Y",
"enum": [
"y"
]
}
]
},
"log": {
"title": "Log",
"type": "object",
"properties": {
"deviceInfo": {
"title": "Device Info",
"type": "boolean",
"default": true,
"description": "This enable log level device info, will display overall device info by every plugin restart"
},
"success": {
"title": "Success",
"type": "boolean",
"default": true,
"description": "This enable log level success"
},
"info": {
"title": "Info",
"type": "boolean",
"default": false,
"description": "This enable log level info"
},
"warn": {
"title": "Warn",
"type": "boolean",
"default": true,
"description": "This enable log level warn"
},
"error": {
"title": "Error",
"type": "boolean",
"default": true,
"description": "This enable log level error"
},
"debug": {
"title": "Debug",
"type": "boolean",
"default": false,
"description": "This enable log level debug"
}
}
},
"restFul": {
"title": "RESTFul",
"type": "object",
"properties": {
"enable": {
"title": "Enable",
"type": "boolean",
"default": false,
"description": "This enable RESTful server."
},
"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;"
}
}
}
},
"mqtt": {
"title": "MQTT",
"type": "object",
"properties": {
"enable": {
"title": "Enable",
"type": "boolean",
"default": false,
"description": "This enable MQTT client."
},
"host": {
"title": "IP/Hostname",
"type": "string",
"placeholder": "192.168.1.20 or mqtt.local",
"pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)(\\.([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?))*)$",
"description": "Here set the IP/Hostname of MQTT Broker.",
"condition": {
"functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
}
},
"port": {
"title": "Port",
"type": "integer",
"placeholder": 1883,
"description": "Here set the port of MQTT Broker.",
"condition": {
"functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
}
},
"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"
}
},
"prefix": {
"title": "Prefix",
"type": "string",
"placeholder": "home",
"description": "Here set the prefix.",
"condition": {
"functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
}
},
"auth": {
"title": "Authorization",
"type": "object",
"properties": {
"enable": {
"title": "Enable",
"type": "boolean",
"description": "This enable authorization for MQTT Broker."
},
"user": {
"title": "User",
"type": "string",
"placeholder": "user",
"description": "Here set the user of MQTT Broker.",
"condition": {
"functionBody": "return model.devices[arrayIndices].mqtt.auth.enable === true;"
}
},
"passwd": {
"title": "Password",
"type": "string",
"placeholder": "password",
"description": "Here set the password of MQTT Broker.",
"format": "password",
"condition": {
"functionBody": "return model.devices[arrayIndices].mqtt.auth.enable === true;"
}
}
},
"condition": {
"functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
},
"allOf": [
{
"if": {
"required": [
"enable"
],
"properties": {
"enable": {
"const": true
}
}
},
"then": {
"required": [
"user",
"passwd"
]
}
}
]
}
},
"allOf": [
{
"if": {
"required": [
"enable"
],
"properties": {
"enable": {
"const": true
}
}
},
"then": {
"required": [
"host"
]
}
}
]
}
},
"required": [
"name",
"host",
"xboxLiveId",
"displayType"
]
}
}
}
},
"layout": [
{
"key": "devices",
"type": "tabarray",
"title": "{{ value.name || 'Device' }}",
"items": [
"devices[].name",
"devices[].host",
"devices[].xboxLiveId",
"devices[].displayType",
{
"key": "devices[].inputs",
"type": "section",
"title": "Inputs",
"expandable": true,
"expanded": false,
"items": [
"devices[].inputs.getFromDevice",
"devices[].inputs.filterGames",
"devices[].inputs.filterApps",
"devices[].inputs.filterSystemApps",
"devices[].inputs.filterDlc",
"devices[].inputs.displayOrder",
{
"key": "devices[].inputs.data",
"type": "tabarray",
"title": "{{ value.name || 'Input' }}",
"items": [
"devices[].inputs.data[].name",
"devices[].inputs.data[].titleId",
"devices[].inputs.data[].reference",
"devices[].inputs.data[].oneStoreProductId",
"devices[].inputs.data[].contentType"
]
}
]
},
{
"key": "devices[]",
"type": "section",
"title": "Buttons",
"expandable": true,
"expanded": false,
"items": [
{
"key": "devices[].buttons",
"type": "tabarray",
"title": "{{ value.name || 'Button' }}",
"items": [
"devices[].buttons[].displayType",
"devices[].buttons[].name",
"devices[].buttons[].mode",
"devices[].buttons[].mediaCommand",
"devices[].buttons[].gamePadCommand",
"devices[].buttons[].tvRemoteCommand",
"devices[].buttons[].consoleControlCommand",
"devices[].buttons[].gameAppControlCommand",
"devices[].buttons[].namePrefix"
]
}
]
},
{
"key": "devices[]",
"type": "section",
"title": "Advanced Settings",
"expandable": true,
"expanded": false,
"items": [
{
"key": "devices[]",
"type": "tabarray",
"title": "{{ value.title }}",
"items": [
{
"key": "devices[].volume",
"title": "Volume",
"items": [
"devices[].volume.displayType",
"devices[].volume.name",
"devices[].volume.namePrefix"
]
},
{
"key": "devices[]",
"title": "Sensors",
"items": [
{
"key": "devices[].sensors",
"type": "tabarray",
"title": "{{ value.name || 'Sensor' }}",
"items": [
"devices[].sensors[].displayType",
"devices[].sensors[].mode",
"devices[].sensors[].name",
"devices[].sensors[].namePrefix",
"devices[].sensors[].pulse",
"devices[].sensors[].reference",
"devices[].sensors[].level"
]
}
]
},
{
"key": "devices[]",
"title": "Device",
"items": [
"devices[].infoButtonCommand"
]
},
{
"key": "devices[].webApi",
"title": "Web Api",
"items": [
"devices[].webApi.enable",
{
"key": "devices[].webApi.token",
"type": "password"
},
{
"key": "devices[].webApi.clientId",
"type": "password"
},
{
"key": "devices[].webApi.clientSecret",
"type": "password"
}
]
},
{
"key": "devices[].log",
"title": "Log",
"items": [
"devices[].log.deviceInfo",
"devices[].log.success",
"devices[].log.info",
"devices[].log.warn",
"devices[].log.error",
"devices[].log.debug"
]
},
{
"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.port"
]
},
{
"key": "devices[].mqtt",
"title": "MQTT",
"items": [
"devices[].mqtt.enable",
"devices[].mqtt.host",
"devices[].mqtt.port",
"devices[].mqtt.clientId",
"devices[].mqtt.prefix",
{
"key": "devices[].mqtt.auth",
"title": "Authorization",
"items": [
"devices[].mqtt.auth.enable",
"devices[].mqtt.auth.user",
{
"key": "devices[].mqtt.auth.passwd",
"type": "password"
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}