homebridge-wemo
Version:
Homebridge plugin to integrate Wemo devices into HomeKit.
815 lines (814 loc) • 36.7 kB
JSON
{
"pluginAlias": "Wemo",
"pluginType": "platform",
"customUi": true,
"customUiPath": "./lib/homebridge-ui",
"headerDisplay": "<p align=\"center\"><img width=\"60%\" src=\"https://user-images.githubusercontent.com/43026681/126868557-d0983348-d124-4247-bea9-7dcc62849cdf.png\"></p><p align=\"center\">For help and support please visit our <a href=\"https://github.com/homebridge-plugins/homebridge-wemo/wiki\">GitHub Wiki</a>. We hope you find this plugin useful!</p>",
"singular": true,
"schema": {
"type": "object",
"properties": {
"name": {
"title": "Plugin Name",
"type": "string",
"default": "Wemo"
},
"mode": {
"type": "string",
"title": "Device Detection",
"default": "auto",
"oneOf": [
{
"title": "Auto (Discover All & Manual IP Devices)",
"enum": ["auto"]
},
{
"title": "Semi (Discover Configured & Manual IP Devices)",
"enum": ["semi"]
},
{
"title": "Manual (Discovery Only Manual IP Devices)",
"enum": ["manual"]
}
]
},
"hideConnectionErrors": {
"title": "Hide Connection Errors",
"type": "boolean"
},
"discoveryInterval": {
"type": "integer",
"title": "Discovery Interval",
"description": "An interval (in seconds) in which the plugin will broadcast on your network to initally find devices and repair connection errors. Must be 15 or more.",
"placeholder": 30,
"minimum": 15
},
"wemoClient": {
"title": "Discovery Settings",
"type": "object",
"properties": {
"callback_url": {
"type": "string",
"title": "UPNP Callback IP/Port",
"placeholder": "192.168.1.13:2021",
"description": "Override the callback IP and port that is used for UPNP subscriptions."
},
"listen_interface": {
"type": "string",
"title": "UPNP Interface",
"description": "This can be used to specify which network interface to listen on. If blank then by default the server will listen on all interfaces, however, Wemo subscription messages will only be sent to the first non-internal IPv4 address returned by os.networkInterfaces() after being sorted by compatible network which may or may not be what you want."
},
"port": {
"type": "integer",
"title": "UPNP Port",
"description": "This can be used to specify a port to bind to for listening to UPnP events. If blank or 0 then the plugin will listen on any available randomly selected port.",
"placeholder": 0
},
"discover_opts": {
"type": "object",
"properties": {
"interfaces": {
"type": "string",
"title": "Discovery Interfaces",
"description": "A comma separated list of interfaces to explicitly bind to. If blank then bind to all available interfaces."
},
"explicitSocketBind": {
"type": "boolean",
"title": "Discovery Explicit Socket Bind",
"description": "Bind sockets to each discovered interface explicitly instead of relying on the system. Might help with issues with multiple NICs."
}
}
}
}
},
"pollingInterval": {
"type": "integer",
"title": "HTTP Polling Interval",
"description": "An interval (in seconds) in which the plugin will request status updates for devices that don't support UPnP or have it manually disabled. Must be 15 or more.",
"placeholder": 30,
"minimum": 15
},
"upnpInterval": {
"type": "integer",
"title": "UPnP Subscription Interval",
"description": "An interval (in seconds) in which the plugin will resubscribe to UPnP notifications. Must be 60 or more.",
"placeholder": 300,
"minimum": 60
},
"disableUPNP": {
"type": "boolean",
"title": "Disable UPnP",
"description": "Global disable option for UPnP. HTTP polling will be used instead. This can also be overridden per accessory later in the config."
},
"disableDeviceLogging": {
"type": "boolean",
"title": "Disable Device Logging",
"description": "Global logging setting for accessory status changes. If true then accessory status changes will not be logged. This can also be set per accessory later in the config."
},
"removeByName": {
"title": "Remove By Name",
"type": "string"
},
"makerTypes": {
"title": "Wemo Makers",
"description": "Optional settings for Wemo Makers.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"title": "Label",
"type": "string",
"description": "This setting has no effect except to help identify this device."
},
"serialNumber": {
"type": "string",
"title": "Serial Number"
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.makerTypes && model.makerTypes[arrayIndices] && model.makerTypes[arrayIndices].serialNumber && model.makerTypes[arrayIndices].serialNumber.length > 0);"
}
},
"makerType": {
"type": "string",
"title": "Show As",
"oneOf": [
{
"title": "Garage Door",
"enum": ["garageDoor"]
},
{
"title": "Switch (with contact sensor if exists)",
"enum": ["switch"]
}
],
"condition": {
"functionBody": "return (model.makerTypes && model.makerTypes[arrayIndices] && model.makerTypes[arrayIndices].serialNumber && model.makerTypes[arrayIndices].serialNumber.length > 0 && !model.makerTypes[arrayIndices].ignoreDevice);"
}
},
"makerTimer": {
"type": "integer",
"title": "Open/Close Time",
"description": "The time in seconds for how long it takes the garage door to open/close. Must be 1 or more.",
"placeholder": 20,
"minimum": 1,
"condition": {
"functionBody": "return (model.makerTypes && model.makerTypes[arrayIndices] && model.makerTypes[arrayIndices].makerType === 'garageDoor' && !model.makerTypes[arrayIndices].ignoreDevice);"
}
},
"reversePolarity": {
"type": "boolean",
"title": "Reverse Polarity",
"description": "If true, the plugin will reverse the 'Open' and 'Closed' HomeKit states.",
"condition": {
"functionBody": "return (model.makerTypes && model.makerTypes[arrayIndices] && model.makerTypes[arrayIndices].makerType === 'switch' && !model.makerTypes[arrayIndices].ignoreDevice);"
}
},
"manualIP": {
"type": "string",
"title": "Manual IP/URL",
"placeholder": "192.168.1.20",
"description": "If the plugin cannot discover this device you can specify its IP and the plugin will try to determine the correct port. You can also specify a full address to specify both the IP and the port, e.g. http://192.168.1.1:49153/setup.xml.",
"condition": {
"functionBody": "return (model.makerTypes && model.makerTypes[arrayIndices] && model.makerTypes[arrayIndices].serialNumber && model.makerTypes[arrayIndices].serialNumber.length > 0 && !model.makerTypes[arrayIndices].ignoreDevice);"
}
},
"listenerType": {
"type": "string",
"title": "Listener Type",
"oneOf": [
{
"title": "UPnP (Default)",
"enum": ["default"]
},
{
"title": "HTTP Polling",
"enum": ["http"]
}
],
"description": "UPnP allows for real-time notifications when your device is controlled, but can be problematic if your device is on a different IP network/VLAN to Homebridge. In this case you should use HTTP polling.",
"condition": {
"functionBody": "return (model.makerTypes && model.makerTypes[arrayIndices] && model.makerTypes[arrayIndices].serialNumber && model.makerTypes[arrayIndices].serialNumber.length > 0 && !model.makerTypes[arrayIndices].ignoreDevice);"
}
}
}
}
},
"wemoInsights": {
"title": "Wemo Insights",
"description": "Optional settings for Wemo Insights.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"title": "Label",
"type": "string",
"description": "This setting has no effect except to help identify this device."
},
"serialNumber": {
"type": "string",
"title": "Serial Number"
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.wemoInsights && model.wemoInsights[arrayIndices] && model.wemoInsights[arrayIndices].serialNumber && model.wemoInsights[arrayIndices].serialNumber.length > 0);"
}
},
"showTodayTC": {
"type": "boolean",
"title": "Show Today's Consumption",
"description": "If true, today's consumption will show in the Eve app's Total Consumption field instead of the cumulative value.",
"condition": {
"functionBody": "return (model.wemoInsights && model.wemoInsights[arrayIndices] && model.wemoInsights[arrayIndices].serialNumber && model.wemoInsights[arrayIndices].serialNumber.length > 0 && !model.wemoInsights[arrayIndices].ignoreDevice);"
}
},
"wattDiff": {
"type": "integer",
"title": "Limit Wattage Logging (by wattage)",
"description": "The plugin will not log device wattage if the difference from the previous value is less than this number. Must be 1 or more.",
"placeholder": 1,
"minimum": 1,
"condition": {
"functionBody": "return (model.wemoInsights && model.wemoInsights[arrayIndices] && model.wemoInsights[arrayIndices].serialNumber && model.wemoInsights[arrayIndices].serialNumber.length > 0 && !model.wemoInsights[arrayIndices].ignoreDevice);"
}
},
"timeDiff": {
"type": "integer",
"title": "Limit Wattage Logging (by time)",
"description": "The plugin will not log device wattage if the time difference (in seconds) from the previous value is less than this number. Must be 1 or more.",
"placeholder": 1,
"minimum": 1,
"condition": {
"functionBody": "return (model.wemoInsights && model.wemoInsights[arrayIndices] && model.wemoInsights[arrayIndices].serialNumber && model.wemoInsights[arrayIndices].serialNumber.length > 0 && !model.wemoInsights[arrayIndices].ignoreDevice);"
}
},
"showAs": {
"type": "string",
"title": "Show As",
"oneOf": [
{
"title": "Outlet (Default)",
"enum": ["default"]
},
{
"title": "Switch",
"enum": ["switch"]
},
{
"title": "Air Purifier",
"enum": ["purifier"]
}
],
"condition": {
"functionBody": "return (model.wemoInsights && model.wemoInsights[arrayIndices] && model.wemoInsights[arrayIndices].serialNumber && model.wemoInsights[arrayIndices].serialNumber.length > 0 && !model.wemoInsights[arrayIndices].ignoreDevice);"
}
},
"outletInUseTrue": {
"type": "boolean",
"title": "Outlet In Use - Force True",
"description": "When enabled, the plugin will always report the outlet as in use.",
"condition": {
"functionBody": "return (model.wemoInsights && model.wemoInsights[arrayIndices] && model.wemoInsights[arrayIndices].serialNumber && model.wemoInsights[arrayIndices].serialNumber.length > 0 && !model.wemoInsights[arrayIndices].ignoreDevice) && (!model.wemoInsights[arrayIndices].showAs || (model.wemoInsights[arrayIndices].showAs && !['switch','purifier'].includes(model.wemoInsights[arrayIndices].showAs)));"
}
},
"manualIP": {
"type": "string",
"title": "Manual IP/URL",
"placeholder": "192.168.1.20",
"description": "If the plugin cannot discover this device you can specify its IP and the plugin will try to determine the correct port. You can also specify a full address to specify both the IP and the port, e.g. http://192.168.1.1:49153/setup.xml.",
"condition": {
"functionBody": "return (model.wemoInsights && model.wemoInsights[arrayIndices] && model.wemoInsights[arrayIndices].serialNumber && model.wemoInsights[arrayIndices].serialNumber.length > 0 && !model.wemoInsights[arrayIndices].ignoreDevice);"
}
},
"listenerType": {
"type": "string",
"title": "Listener Type",
"oneOf": [
{
"title": "UPnP (Default)",
"enum": ["default"]
},
{
"title": "HTTP Polling",
"enum": ["http"]
}
],
"description": "UPnP allows for real-time notifications when your device is controlled, but can be problematic if your device is on a different IP network/VLAN to Homebridge. In this case you should use HTTP polling.",
"condition": {
"functionBody": "return (model.wemoInsights && model.wemoInsights[arrayIndices] && model.wemoInsights[arrayIndices].serialNumber && model.wemoInsights[arrayIndices].serialNumber.length > 0 && !model.wemoInsights[arrayIndices].ignoreDevice);"
}
}
}
}
},
"wemoLights": {
"title": "Wemo Lights",
"description": "Optional settings for Wemo Light Switches, Dimmers and Bulbs.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"title": "Label",
"type": "string",
"description": "This setting has no effect except to help identify this device."
},
"serialNumber": {
"type": "string",
"title": "Serial Number",
"description": "In the case of a Wemo Bulb (via Link) please use the device ID of the bulb, not the serial number of the Link."
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.wemoLights && model.wemoLights[arrayIndices] && model.wemoLights[arrayIndices].serialNumber && model.wemoLights[arrayIndices].serialNumber.length > 0);"
}
},
"brightnessStep": {
"title": "Brightness Step",
"type": "integer",
"description": "A minimum step for the brightness slider in the Home app. Must be 1 or more.",
"placeholder": 1,
"minimum": 1,
"condition": {
"functionBody": "return (model.wemoLights && model.wemoLights[arrayIndices] && model.wemoLights[arrayIndices].serialNumber && model.wemoLights[arrayIndices].serialNumber.length > 0 && !model.wemoLights[arrayIndices].ignoreDevice);"
}
},
"enableColourControl": {
"title": "Enable Colour Control",
"type": "boolean",
"description": "If true, colour control (separate from colour temperature control) will be enabled if the bulb supports it.",
"condition": {
"functionBody": "return (model.wemoLights && model.wemoLights[arrayIndices] && model.wemoLights[arrayIndices].serialNumber && model.wemoLights[arrayIndices].serialNumber.length > 0 && !model.wemoLights[arrayIndices].ignoreDevice);"
}
},
"adaptiveLightingShift": {
"title": "Adaptive Lighting Shift",
"type": "integer",
"description": "The mired for each Adaptive Lighting update will be increased by this value, making the light appear warmer. Set to -1 to remove Adaptive Lighting feature. Must be -1 or more.",
"placeholder": 0,
"minimum": -1,
"condition": {
"functionBody": "return (model.wemoLights && model.wemoLights[arrayIndices] && model.wemoLights[arrayIndices].serialNumber && model.wemoLights[arrayIndices].serialNumber.length > 0 && !model.wemoLights[arrayIndices].ignoreDevice);"
}
},
"transitionTime": {
"title": "Transition Time",
"type": "integer",
"description": "Transition time (in seconds?) for brightness and colour temperature changes. Applies to Wemo Bulb (not Dimmer). Must be 0 or more.",
"placeholder": 0,
"minimum": 0,
"condition": {
"functionBody": "return (model.wemoLights && model.wemoLights[arrayIndices] && model.wemoLights[arrayIndices].serialNumber && model.wemoLights[arrayIndices].serialNumber.length > 0 && !model.wemoLights[arrayIndices].ignoreDevice);"
}
},
"manualIP": {
"type": "string",
"title": "Manual IP/URL",
"placeholder": "192.168.1.20",
"description": "If the plugin cannot discover this device you can specify its IP and the plugin will try to determine the correct port. You can also specify a full address to specify both the IP and the port, e.g. http://192.168.1.1:49153/setup.xml.",
"condition": {
"functionBody": "return (model.wemoLights && model.wemoLights[arrayIndices] && model.wemoLights[arrayIndices].serialNumber && model.wemoLights[arrayIndices].serialNumber.length > 0 && !model.wemoLights[arrayIndices].ignoreDevice);"
}
},
"listenerType": {
"type": "string",
"title": "Listener Type",
"oneOf": [
{
"title": "UPnP (Default)",
"enum": ["default"]
},
{
"title": "HTTP Polling",
"enum": ["http"]
}
],
"description": "UPnP allows for real-time notifications when your device is controlled, but can be problematic if your device is on a different IP network/VLAN to Homebridge. In this case you should use HTTP polling.",
"condition": {
"functionBody": "return (model.wemoLights && model.wemoLights[arrayIndices] && model.wemoLights[arrayIndices].serialNumber && model.wemoLights[arrayIndices].serialNumber.length > 0 && !model.wemoLights[arrayIndices].ignoreDevice);"
}
}
}
}
},
"wemoLinks": {
"title": "Wemo Links",
"description": "Optional settings for Wemo Link hubs.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"title": "Label",
"type": "string",
"description": "This setting has no effect except to help identify this device."
},
"serialNumber": {
"type": "string",
"title": "Serial Number"
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this Link's subaccessories will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.wemoLinks && model.wemoLinks[arrayIndices] && model.wemoLinks[arrayIndices].serialNumber && model.wemoLinks[arrayIndices].serialNumber.length > 0);"
}
},
"manualIP": {
"type": "string",
"title": "Manual IP/URL",
"placeholder": "192.168.1.20",
"description": "If the plugin cannot discover this device you can specify its IP and the plugin will try to determine the correct port. You can also specify a full address to specify both the IP and the port, e.g. http://192.168.1.1:49153/setup.xml.",
"condition": {
"functionBody": "return (model.wemoLinks && model.wemoLinks[arrayIndices] && model.wemoLinks[arrayIndices].serialNumber && model.wemoLinks[arrayIndices].serialNumber.length > 0 && !model.wemoLinks[arrayIndices].ignoreDevice);"
}
},
"listenerType": {
"type": "string",
"title": "Listener Type",
"oneOf": [
{
"title": "UPnP (Default)",
"enum": ["default"]
},
{
"title": "HTTP Polling",
"enum": ["http"]
}
],
"description": "UPnP allows for real-time notifications when your device is controlled, but can be problematic if your device is on a different IP network/VLAN to Homebridge. In this case you should use HTTP polling.",
"condition": {
"functionBody": "return (model.wemoLinks && model.wemoLinks[arrayIndices] && model.wemoLinks[arrayIndices].serialNumber && model.wemoLinks[arrayIndices].serialNumber.length > 0 && !model.wemoLinks[arrayIndices].ignoreDevice);"
}
}
}
}
},
"wemoMotions": {
"title": "Wemo Motions",
"description": "Optional settings for Wemo Motions.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"title": "Label",
"type": "string",
"description": "This setting has no effect except to help identify this device."
},
"serialNumber": {
"type": "string",
"title": "Serial Number"
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.wemoMotions && model.wemoMotions[arrayIndices] && model.wemoMotions[arrayIndices].serialNumber && model.wemoMotions[arrayIndices].serialNumber.length > 0);"
}
},
"noMotionTimer": {
"type": "integer",
"title": "No Motion Timer",
"description": "A timer (in seconds) for how long after motion is not detected that the state is changed.",
"placeholder": 60,
"minimum": 0,
"condition": {
"functionBody": "return (model.wemoMotions && model.wemoMotions[arrayIndices] && model.wemoMotions[arrayIndices].serialNumber && model.wemoMotions[arrayIndices].serialNumber.length > 0 && !model.wemoMotions[arrayIndices].ignoreDevice);"
}
},
"manualIP": {
"type": "string",
"title": "Manual IP/URL",
"placeholder": "192.168.1.20",
"description": "If the plugin cannot discover this device you can specify its IP and the plugin will try to determine the correct port. You can also specify a full address to specify both the IP and the port, e.g. http://192.168.1.1:49153/setup.xml.",
"condition": {
"functionBody": "return (model.wemoMotions && model.wemoMotions[arrayIndices] && model.wemoMotions[arrayIndices].serialNumber && model.wemoMotions[arrayIndices].serialNumber.length > 0 && !model.wemoMotions[arrayIndices].ignoreDevice);"
}
}
}
}
},
"wemoOutlets": {
"title": "Wemo Outlets",
"description": "Optional settings for Wemo WiFi Outlets and Outdoor Plugs.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"title": "Label",
"type": "string",
"description": "This setting has no effect except to help identify this device."
},
"serialNumber": {
"type": "string",
"title": "Serial Number"
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.wemoOutlets && model.wemoOutlets[arrayIndices] && model.wemoOutlets[arrayIndices].serialNumber && model.wemoOutlets[arrayIndices].serialNumber.length > 0);"
}
},
"showAs": {
"type": "string",
"title": "Show As",
"oneOf": [
{
"title": "Outlet (Default)",
"enum": ["default"]
},
{
"title": "Switch",
"enum": ["switch"]
},
{
"title": "Air Purifier",
"enum": ["purifier"]
}
],
"condition": {
"functionBody": "return (model.wemoOutlets && model.wemoOutlets[arrayIndices] && model.wemoOutlets[arrayIndices].serialNumber && model.wemoOutlets[arrayIndices].serialNumber.length > 0 && !model.wemoOutlets[arrayIndices].ignoreDevice);"
}
},
"manualIP": {
"type": "string",
"title": "Manual IP/URL",
"placeholder": "192.168.1.20",
"description": "If the plugin cannot discover this device you can specify its IP and the plugin will try to determine the correct port. You can also specify a full address to specify both the IP and the port, e.g. http://192.168.1.1:49153/setup.xml.",
"condition": {
"functionBody": "return (model.wemoOutlets && model.wemoOutlets[arrayIndices] && model.wemoOutlets[arrayIndices].serialNumber && model.wemoOutlets[arrayIndices].serialNumber.length > 0 && !model.wemoOutlets[arrayIndices].ignoreDevice);"
}
},
"listenerType": {
"type": "string",
"title": "Listener Type",
"oneOf": [
{
"title": "UPnP (Default)",
"enum": ["default"]
},
{
"title": "HTTP Polling",
"enum": ["http"]
}
],
"description": "UPnP allows for real-time notifications when your device is controlled, but can be problematic if your device is on a different IP network/VLAN to Homebridge. In this case you should use HTTP polling.",
"condition": {
"functionBody": "return (model.wemoOutlets && model.wemoOutlets[arrayIndices] && model.wemoOutlets[arrayIndices].serialNumber && model.wemoOutlets[arrayIndices].serialNumber.length > 0 && !model.wemoOutlets[arrayIndices].ignoreDevice);"
}
}
}
}
},
"wemoOthers": {
"title": "Wemo Others",
"description": "Optional settings for Wemo Heater, Dehumidifier, Air Purifier, Crockpot and Coffee Maker.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"title": "Label",
"type": "string",
"description": "This setting has no effect except to help identify this device."
},
"serialNumber": {
"type": "string",
"title": "Serial Number"
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.wemoOthers && model.wemoOthers[arrayIndices] && model.wemoOthers[arrayIndices].serialNumber && model.wemoOthers[arrayIndices].serialNumber.length > 0);"
}
},
"manualIP": {
"type": "string",
"title": "Manual IP/URL",
"placeholder": "192.168.1.20",
"description": "If the plugin cannot discover this device you can specify its IP and the plugin will try to determine the correct port. You can also specify a full address to specify both the IP and the port, e.g. http://192.168.1.1:49153/setup.xml.",
"condition": {
"functionBody": "return (model.wemoOthers && model.wemoOthers[arrayIndices] && model.wemoOthers[arrayIndices].serialNumber && model.wemoOthers[arrayIndices].serialNumber.length > 0 && !model.wemoOthers[arrayIndices].ignoreDevice);"
}
},
"listenerType": {
"type": "string",
"title": "Listener Type",
"oneOf": [
{
"title": "UPnP (Default)",
"enum": ["default"]
},
{
"title": "HTTP Polling",
"enum": ["http"]
}
],
"description": "UPnP allows for real-time notifications when your device is controlled, but can be problematic if your device is on a different IP network/VLAN to Homebridge. In this case you should use HTTP polling.",
"condition": {
"functionBody": "return (model.wemoOthers && model.wemoOthers[arrayIndices] && model.wemoOthers[arrayIndices].serialNumber && model.wemoOthers[arrayIndices].serialNumber.length > 0 && !model.wemoOthers[arrayIndices].ignoreDevice);"
}
}
}
}
}
}
},
"layout": [
{
"type": "fieldset",
"items": ["mode"]
},
{
"type": "fieldset",
"title": "Advanced Settings",
"description": "Advanced settings for the plugin, including network and discovery options.",
"expandable": true,
"items": [
"disableDeviceLogging",
"hideConnectionErrors",
"discoveryInterval",
"wemoClient.discover_opts.interfaces",
"wemoClient.discover_opts.explicitSocketBind",
"pollingInterval",
"disableUPNP",
"upnpInterval",
"wemoClient.callback_url",
"wemoClient.listen_interface",
"wemoClient.port"
]
},
{
"key": "makerTypes",
"expandable": true,
"title": "Wemo Makers",
"description": "Optional settings for Wemo Makers.",
"add": "Add Another Device",
"type": "array",
"items": [
{
"type": "fieldset",
"items": [
"makerTypes[].label",
"makerTypes[].serialNumber",
"makerTypes[].ignoreDevice",
"makerTypes[].makerType",
"makerTypes[].makerTimer",
"makerTypes[].reversePolarity",
"makerTypes[].manualIP",
"makerTypes[].listenerType"
]
}
]
},
{
"key": "wemoInsights",
"expandable": true,
"title": "Wemo Insights",
"description": "Optional settings for Wemo Insights.",
"add": "Add Another Device",
"type": "array",
"items": [
{
"type": "fieldset",
"items": [
"wemoInsights[].label",
"wemoInsights[].serialNumber",
"wemoInsights[].ignoreDevice",
"wemoInsights[].showTodayTC",
"wemoInsights[].wattDiff",
"wemoInsights[].timeDiff",
"wemoInsights[].showAs",
"wemoInsights[].outletInUseTrue",
"wemoInsights[].manualIP",
"wemoInsights[].listenerType"
]
}
]
},
{
"key": "wemoLights",
"expandable": true,
"title": "Wemo Lights",
"description": "Optional settings for Wemo Light Switches, Dimmers and Bulbs.",
"add": "Add Another Device",
"type": "array",
"items": [
{
"type": "fieldset",
"items": [
"wemoLights[].label",
"wemoLights[].serialNumber",
"wemoLights[].ignoreDevice",
"wemoLights[].brightnessStep",
"wemoLights[].enableColourControl",
"wemoLights[].adaptiveLightingShift",
"wemoLights[].transitionTime",
"wemoLights[].manualIP",
"wemoLights[].listenerType"
]
}
]
},
{
"key": "wemoLinks",
"expandable": true,
"title": "Wemo Links",
"description": "Optional settings for Wemo Link hubs.",
"add": "Add Another Device",
"type": "array",
"items": [
{
"type": "fieldset",
"items": [
"wemoLinks[].label",
"wemoLinks[].serialNumber",
"wemoLinks[].ignoreDevice",
"wemoLinks[].listenerType",
"wemoLinks[].manualIP"
]
}
]
},
{
"key": "wemoMotions",
"expandable": true,
"title": "Wemo Motions",
"description": "Optional settings for Wemo Motions.",
"add": "Add Another Device",
"type": "array",
"items": [
{
"type": "fieldset",
"items": [
"wemoMotions[].label",
"wemoMotions[].serialNumber",
"wemoMotions[].ignoreDevice",
"wemoMotions[].noMotionTimer",
"wemoMotions[].manualIP"
]
}
]
},
{
"key": "wemoOutlets",
"expandable": true,
"title": "Wemo Outlets",
"description": "Optional settings for Wemo WiFi Outlets and Outdoor Plugs.",
"add": "Add Another Device",
"type": "array",
"items": [
{
"type": "fieldset",
"items": [
"wemoOutlets[].label",
"wemoOutlets[].serialNumber",
"wemoOutlets[].ignoreDevice",
"wemoOutlets[].showAs",
"wemoOutlets[].manualIP",
"wemoOutlets[].listenerType"
]
}
]
},
{
"key": "wemoOthers",
"expandable": true,
"title": "Wemo Others",
"description": "Optional settings for Wemo Heater, Dehumidifier, Air Purifier, Crockpot and Coffee Maker.",
"add": "Add Another Device",
"type": "array",
"items": [
{
"type": "fieldset",
"items": [
"wemoOthers[].label",
"wemoOthers[].serialNumber",
"wemoOthers[].ignoreDevice",
"wemoOthers[].manualIP",
"wemoOthers[].listenerType"
]
}
]
}
]
}