diff --git a/config.schema.json b/config.schema.json
index a2b0d92e..f9069e91 100644
--- a/config.schema.json
+++ b/config.schema.json
@@ -65,14 +65,6 @@
"functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
}
},
- "hide_device": {
- "title": "Hide Device",
- "type": "boolean",
- "description": "If true, device will be removed or hidden from HomeKit.",
- "condition": {
- "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
- }
- },
"configDeviceType": {
"title": "Device Type",
"type": "string",
@@ -256,47 +248,6 @@
"functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
}
},
- "connectionType": {
- "title": "Connection Type",
- "type": "string",
- "oneOf": [
- {
- "title": "BLE",
- "enum": [
- "BLE"
- ]
- },
- {
- "title": "BLE/OpenAPI",
- "enum": [
- "BLE/OpenAPI"
- ]
- },
- {
- "title": "Disable",
- "enum": [
- "Disabled"
- ]
- },
- {
- "title": "OpenAPI",
- "enum": [
- "OpenAPI"
- ]
- }
- ],
- "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
- "condition": {
- "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
- }
- },
- "webhook": {
- "title": "Enable Webhook",
- "type": "boolean",
- "condition": {
- "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
- }
- },
"customBLEaddress": {
"title": "Custom BLE Address",
"type": "string",
@@ -305,14 +256,6 @@
"functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
}
},
- "scanDuration": {
- "title": "Scan Duration (Default is 1 Second) for BLE",
- "type": "number",
- "placeholder": 1,
- "condition": {
- "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
- }
- },
"hide_temperature": {
"title": "Hide Temperature Sensor",
"type": "boolean",
@@ -356,78 +299,66 @@
}
},
"mode": {
+ "title": "Bot Mode",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Default",
+ "enum": [""]
+ },
+ {
+ "title": "Multi-Press",
+ "enum": ["multipress"]
+ },
+ {
+ "title": "Press",
+ "enum": ["press"]
+ },
+ {
+ "title": "Switch",
+ "enum": ["switch"]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Bot' && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "mapping": {
"title": "Mapping Mode",
"type": "string",
"required": true,
"default": "",
"oneOf": [
{
- "if": {
- "properties": {
- "configDeviceType": {
- "const": "Bot"
- }
- }
- },
- "then": {
- "oneOf": [
- {
- "title": "Default",
- "enum": [""]
- },
- {
- "title": "Multi-Press",
- "enum": ["multipress"]
- },
- {
- "title": "Press",
- "enum": ["press"]
- },
- {
- "title": "Switch",
- "enum": ["switch"]
- }
- ]
- }
+ "title": "Default",
+ "enum": [""]
},
{
- "if": {
- "properties": {
- "configDeviceType": {
- "const": "Blind Tilt"
- }
- }
- },
- "then": {
- "oneOf": [
- {
- "title": "Default",
- "enum": [""]
- },
- {
- "title": "Down and Up",
- "enum": ["down_and_up"]
- },
- {
- "title": "Only Down",
- "enum": ["only_down"]
- },
- {
- "title": "Only Up",
- "enum": ["only_up"]
- },
- {
- "title": "Up and Down",
- "enum": ["up_and_down"]
- },
- {
- "title": "Use Tilt for Direction",
- "enum": ["use_tilt_for_direction"]
- }
- ]
- }
+ "title": "Down and Up",
+ "enum": ["down_and_up"]
+ },
+ {
+ "title": "Only Down",
+ "enum": ["only_down"]
+ },
+ {
+ "title": "Only Up",
+ "enum": ["only_up"]
+ },
+ {
+ "title": "Up and Down",
+ "enum": ["up_and_down"]
+ },
+ {
+ "title": "Use Tilt for Direction",
+ "enum": ["use_tilt_for_direction"]
}
- ]
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' && model.options.devices[arrayIndices].deviceId);"
+ }
},
"type": {
"title": "What Type of Device do you want to display in the Home App?",
@@ -676,37 +607,6 @@
"functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Smart Lock' || model.options.devices[arrayIndices].configDeviceType === 'Smart Lock Pro') && model.options.devices[arrayIndices].deviceId);"
}
},
- "disableCaching": {
- "title": "Disable Caching",
- "type": "boolean",
- "condition": {
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
- }
- },
- "maxRetries": {
- "title": "Device Max Retries for OpenAPI",
- "type": "number",
- "placeholder": 5,
- "condition": {
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
- }
- },
- "delayBetweenRetries": {
- "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
- "type": "number",
- "placeholder": 3,
- "condition": {
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
- }
- },
- "maxRetry": {
- "title": "Max Retries for BLE",
- "type": "number",
- "placeholder": "5",
- "condition": {
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
- }
- },
"mqttURL": {
"title": "MQTT URL (Device Specific)",
"type": "string",
@@ -729,19 +629,19 @@
"functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mqttURL && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
}
},
- "history": {
- "title": "EVE History",
+ "hide_device": {
+ "title": "Hide Device",
"type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
"condition": {
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
}
},
- "firmware": {
- "title": "Firmware Override",
- "type": "string",
- "placeholder": "1.2.8",
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
"condition": {
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
}
},
"refreshRate": {
@@ -752,14 +652,6 @@
"functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
}
},
- "pushRate": {
- "title": "Device Push Rate",
- "type": "number",
- "placeholder": 360,
- "condition": {
- "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
- }
- },
"updateRate": {
"title": "Update Rate",
"type": "number",
@@ -770,18 +662,20 @@
"functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
}
},
- "offline": {
- "title": "Offline as Off",
- "type": "boolean",
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
"condition": {
"functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
}
},
- "external": {
- "title": "External Accessory",
- "type": "boolean",
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
"condition": {
- "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
}
},
"logging": {
@@ -814,21 +708,4024 @@
"standard"
]
}
- ],
- "condition": {
- "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ },
+ "required": [
+ "deviceId",
+ "configDeviceType",
+ "configDeviceName",
+ "connectionType",
+ "logging"
+ ]
+ },
+ "uniqueItems": true
+ },
+ "deviceConfig": {
+ "type": "object",
+ "properties": {
+ "Bot": {
+ "type": "object",
+ "properties": {
+ "mode": {
+ "title": "Bot Mode",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Default",
+ "enum": [""]
+ },
+ {
+ "title": "Multi-Press",
+ "enum": ["multipress"]
+ },
+ {
+ "title": "Press",
+ "enum": ["press"]
+ },
+ {
+ "title": "Switch",
+ "enum": ["switch"]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Bot' && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "type": {
+ "title": "What Type of Device do you want to display in the Home App?",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Default",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "Door",
+ "enum": [
+ "door"
+ ]
+ },
+ {
+ "title": "Fan",
+ "enum": [
+ "fan"
+ ]
+ },
+ {
+ "title": "Faucet",
+ "enum": [
+ "faucet"
+ ]
+ },
+ {
+ "title": "Garage Door",
+ "enum": [
+ "garagedoor"
+ ]
+ },
+ {
+ "title": "Lock",
+ "enum": [
+ "lock"
+ ]
+ },
+ {
+ "title": "Outlet",
+ "enum": [
+ "outlet"
+ ]
+ },
+ {
+ "title": "Stateful Programmable Switch (Only Works in 3rd Party Home Apps)",
+ "enum": [
+ "stateful"
+ ]
+ },
+ {
+ "title": "Switch",
+ "enum": [
+ "switch"
+ ]
+ },
+ {
+ "title": "Window",
+ "enum": [
+ "window"
+ ]
+ },
+ {
+ "title": "Window Covering",
+ "enum": [
+ "windowcovering"
+ ]
+ }
+ ],
+ "placeholder": "outlet",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Bot' && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "doublePress": {
+ "title": "How many presses do you want to simulate?",
+ "type": "number",
+ "placeholder": "2",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Bot' && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].bot && model.options.devices[arrayIndices].mode);"
+ }
+ },
+ "pushRatePress": {
+ "title": "Double Press Push Rate",
+ "type": "number",
+ "placeholder": "15",
+ "description": "Indicates the number of seconds between pushes for double presses to SwitchBot API",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Bot' && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].bot && model.options.devices[arrayIndices].mode && model.options.devices[arrayIndices].doublePress > 1);"
+ }
+ },
+ "allowPush": {
+ "title": "Allow Changes to Be Pushed",
+ "description": "If set to true, this will allow commands to be sent even if device state is already in state that is being pushed.",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Bot' && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].bot && model.options.devices[arrayIndices].mode);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Meter": {
+ "type": "object",
+ "properties": {
+ "hide_temperature": {
+ "title": "Hide Temperature Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "convertUnitTo": {
+ "title": "Convert Temperature Unit To",
+ "type": "string",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_temperature);"
+ },
+ "oneOf": [
+ {
+ "title": "Celsius",
+ "enum": [
+ "CELSIUS"
+ ]
+ },
+ {
+ "title": "Fahrenheit",
+ "enum": [
+ "FAHRENHEIT"
+ ]
+ }
+ ]
+ },
+ "hide_humidity": {
+ "title": "Hide Humidity Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "MeterPlus": {
+ "type": "object",
+ "properties": {
+ "hide_temperature": {
+ "title": "Hide Temperature Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "convertUnitTo": {
+ "title": "Convert Temperature Unit To",
+ "type": "string",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_temperature);"
+ },
+ "oneOf": [
+ {
+ "title": "Celsius",
+ "enum": [
+ "CELSIUS"
+ ]
+ },
+ {
+ "title": "Fahrenheit",
+ "enum": [
+ "FAHRENHEIT"
+ ]
+ }
+ ]
+ },
+ "hide_humidity": {
+ "title": "Hide Humidity Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "IOSensor": {
+ "type": "object",
+ "properties": {
+ "hide_temperature": {
+ "title": "Hide Temperature Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "convertUnitTo": {
+ "title": "Convert Temperature Unit To",
+ "type": "string",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_temperature);"
+ },
+ "oneOf": [
+ {
+ "title": "Celsius",
+ "enum": [
+ "CELSIUS"
+ ]
+ },
+ {
+ "title": "Fahrenheit",
+ "enum": [
+ "FAHRENHEIT"
+ ]
+ }
+ ]
+ },
+ "hide_humidity": {
+ "title": "Hide Humidity Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Humidifier": {
+ "type": "object",
+ "properties": {
+ "hide_temperature": {
+ "title": "Hide Temperature Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "convertUnitTo": {
+ "title": "Convert Temperature Unit To",
+ "type": "string",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_temperature);"
+ },
+ "oneOf": [
+ {
+ "title": "Celsius",
+ "enum": [
+ "CELSIUS"
+ ]
+ },
+ {
+ "title": "Fahrenheit",
+ "enum": [
+ "FAHRENHEIT"
+ ]
+ }
+ ]
+ },
+ "set_minStep": {
+ "title": "Set Minimum Step",
+ "type": "number",
+ "placeholder": "1",
+ "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Curtain": {
+ "type": "object",
+ "properties": {
+ "disable_group": {
+ "title": "Disable Grouping",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_lightsensor": {
+ "title": "Hide Light Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "set_minlux": {
+ "title": "Set Min Lux",
+ "type": "number",
+ "placeholder": "1",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
+ }
+ },
+ "set_maxlux": {
+ "title": "Set Max Lux",
+ "type": "number",
+ "placeholder": "6001",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
+ }
+ },
+ "set_min": {
+ "title": "Set Minimum Open State",
+ "type": "number",
+ "placeholder": "0",
+ "description": "Sets the minimum percentage before needed to set to Open",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "set_max": {
+ "title": "Set Maximum Close State",
+ "type": "number",
+ "placeholder": "100",
+ "description": "Sets the maximum percentage before needing to set to Closed",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "set_minStep": {
+ "title": "Set Minimum Step",
+ "type": "number",
+ "placeholder": "1",
+ "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "setOpenMode": {
+ "title": "Opening Mode",
+ "type": "string",
+ "oneOf": [
+ {
+ "enum": [
+ "0"
+ ],
+ "title": "Performance Mode"
+ },
+ {
+ "enum": [
+ "1"
+ ],
+ "title": "Silent Mode"
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "setCloseMode": {
+ "title": "Closing Mode",
+ "type": "string",
+ "oneOf": [
+ {
+ "enum": [
+ "0"
+ ],
+ "title": "Performance Mode"
+ },
+ {
+ "enum": [
+ "1"
+ ],
+ "title": "Silent Mode"
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "silentModeSwitch": {
+ "title": "Enable Silent Mode Switches",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Curtain3": {
+ "type": "object",
+ "properties": {
+ "disable_group": {
+ "title": "Disable Grouping",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_lightsensor": {
+ "title": "Hide Light Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "set_minlux": {
+ "title": "Set Min Lux",
+ "type": "number",
+ "placeholder": "1",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
+ }
+ },
+ "set_maxlux": {
+ "title": "Set Max Lux",
+ "type": "number",
+ "placeholder": "6001",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
+ }
+ },
+ "set_min": {
+ "title": "Set Minimum Open State",
+ "type": "number",
+ "placeholder": "0",
+ "description": "Sets the minimum percentage before needed to set to Open",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "set_max": {
+ "title": "Set Maximum Close State",
+ "type": "number",
+ "placeholder": "100",
+ "description": "Sets the maximum percentage before needing to set to Closed",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "set_minStep": {
+ "title": "Set Minimum Step",
+ "type": "number",
+ "placeholder": "1",
+ "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "setOpenMode": {
+ "title": "Opening Mode",
+ "type": "string",
+ "oneOf": [
+ {
+ "enum": [
+ "0"
+ ],
+ "title": "Performance Mode"
+ },
+ {
+ "enum": [
+ "1"
+ ],
+ "title": "Silent Mode"
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "setCloseMode": {
+ "title": "Closing Mode",
+ "type": "string",
+ "oneOf": [
+ {
+ "enum": [
+ "0"
+ ],
+ "title": "Performance Mode"
+ },
+ {
+ "enum": [
+ "1"
+ ],
+ "title": "Silent Mode"
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "silentModeSwitch": {
+ "title": "Enable Silent Mode Switches",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Blind Tilt": {
+ "type": "object",
+ "properties": {
+ "disable_group": {
+ "title": "Disable Grouping",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "mapping": {
+ "title": "Mapping Mode",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Default",
+ "enum": [""]
+ },
+ {
+ "title": "Down and Up",
+ "enum": ["down_and_up"]
+ },
+ {
+ "title": "Only Down",
+ "enum": ["only_down"]
+ },
+ {
+ "title": "Only Up",
+ "enum": ["only_up"]
+ },
+ {
+ "title": "Up and Down",
+ "enum": ["up_and_down"]
+ },
+ {
+ "title": "Use Tilt for Direction",
+ "enum": ["use_tilt_for_direction"]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_lightsensor": {
+ "title": "Hide Light Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "set_minlux": {
+ "title": "Set Min Lux",
+ "type": "number",
+ "placeholder": "1",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
+ }
+ },
+ "set_maxlux": {
+ "title": "Set Max Lux",
+ "type": "number",
+ "placeholder": "6001",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
+ }
+ },
+ "set_min": {
+ "title": "Set Minimum Open State",
+ "type": "number",
+ "placeholder": "0",
+ "description": "Sets the minimum percentage before needed to set to Open",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "set_max": {
+ "title": "Set Maximum Close State",
+ "type": "number",
+ "placeholder": "100",
+ "description": "Sets the maximum percentage before needing to set to Closed",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "set_minStep": {
+ "title": "Set Minimum Step",
+ "type": "number",
+ "placeholder": "1",
+ "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "setOpenMode": {
+ "title": "Opening Mode",
+ "type": "string",
+ "oneOf": [
+ {
+ "enum": [
+ "0"
+ ],
+ "title": "Performance Mode"
+ },
+ {
+ "enum": [
+ "1"
+ ],
+ "title": "Silent Mode"
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "setCloseMode": {
+ "title": "Closing Mode",
+ "type": "string",
+ "oneOf": [
+ {
+ "enum": [
+ "0"
+ ],
+ "title": "Performance Mode"
+ },
+ {
+ "enum": [
+ "1"
+ ],
+ "title": "Silent Mode"
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "silentModeSwitch": {
+ "title": "Enable Silent Mode Switches",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Contact Sensor": {
+ "type": "object",
+ "properties": {
+ "hide_lightsensor": {
+ "title": "Hide Light Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "set_minlux": {
+ "title": "Set Min Lux",
+ "type": "number",
+ "placeholder": "1",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
+ }
+ },
+ "set_maxlux": {
+ "title": "Set Max Lux",
+ "type": "number",
+ "placeholder": "6001",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
+ }
+ },
+ "hide_motionsensor": {
+ "title": "Hide Contact Sensor's Motion Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Motion Sensor": {
+ "type": "object",
+ "properties": {
+ "hide_lightsensor": {
+ "title": "Hide Light Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "set_minlux": {
+ "title": "Set Min Lux",
+ "type": "number",
+ "placeholder": "1",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
+ }
+ },
+ "set_maxlux": {
+ "title": "Set Max Lux",
+ "type": "number",
+ "placeholder": "6001",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Water Detector": {
+ "type": "object",
+ "properties": {
+ "hide_leak": {
+ "title": "Hide Water Detector's Leak Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Water Detector' && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "dry": {
+ "title": "Water Detector's Dry Alert",
+ "type": "boolean",
+ "description": "If true, the Water Detector will send an alert when it is dry.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType === 'Water Detector' && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Color Bulb": {
+ "type": "object",
+ "properties": {
+ "set_minStep": {
+ "title": "Set Minimum Step",
+ "type": "number",
+ "placeholder": "1",
+ "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "adaptiveLightingShift": {
+ "title": "Adaptive Lighting Shift",
+ "type": "number",
+ "placeholder": "-1",
+ "description": "The mired for each Adaptive Lighting update will be increased by this value, making the light appear warmer. Set to -1 to remove Adaptive Lighting feature. Must be -1 or more.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Strip Light": {
+ "type": "object",
+ "properties": {
+ "set_minStep": {
+ "title": "Set Minimum Step",
+ "type": "number",
+ "placeholder": "1",
+ "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "adaptiveLightingShift": {
+ "title": "Adaptive Lighting Shift",
+ "type": "number",
+ "placeholder": "-1",
+ "description": "The mired for each Adaptive Lighting update will be increased by this value, making the light appear warmer. Set to -1 to remove Adaptive Lighting feature. Must be -1 or more.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Ceiling Light": {
+ "type": "object",
+ "properties": {
+ "set_minStep": {
+ "title": "Set Minimum Step",
+ "type": "number",
+ "placeholder": "1",
+ "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "adaptiveLightingShift": {
+ "title": "Adaptive Lighting Shift",
+ "type": "number",
+ "placeholder": "-1",
+ "description": "The mired for each Adaptive Lighting update will be increased by this value, making the light appear warmer. Set to -1 to remove Adaptive Lighting feature. Must be -1 or more.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Ceiling Light Pro": {
+ "type": "object",
+ "properties": {
+ "set_minStep": {
+ "title": "Set Minimum Step",
+ "type": "number",
+ "placeholder": "1",
+ "description": "Sets the minimum steps device will take. So if set to 20, it would allow you to set the curtain state to 0, 20, 40, 60, 80, and 100",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "adaptiveLightingShift": {
+ "title": "Adaptive Lighting Shift",
+ "type": "number",
+ "placeholder": "-1",
+ "description": "The mired for each Adaptive Lighting update will be increased by this value, making the light appear warmer. Set to -1 to remove Adaptive Lighting feature. Must be -1 or more.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
}
}
},
- "required": [
- "deviceId",
- "configDeviceType",
- "configDeviceName",
- "connectionType",
- "logging"
- ]
- },
- "uniqueItems": true
+ "Smart Lock": {
+ "type": "object",
+ "properties": {
+ "hide_contactsensor": {
+ "title": "Hide Lock's Contact Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Smart Lock' || model.options.devices[arrayIndices].configDeviceType === 'Smart Lock Pro') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "activate_latchbutton": {
+ "title": "Activate Latch Button",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Smart Lock' || model.options.devices[arrayIndices].configDeviceType === 'Smart Lock Pro') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ },
+ "Smart Lock Pro": {
+ "type": "object",
+ "properties": {
+ "hide_contactsensor": {
+ "title": "Hide Lock's Contact Sensor",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Smart Lock' || model.options.devices[arrayIndices].configDeviceType === 'Smart Lock Pro') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "activate_latchbutton": {
+ "title": "Activate Latch Button",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Smart Lock' || model.options.devices[arrayIndices].configDeviceType === 'Smart Lock Pro') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "hide_device": {
+ "title": "Hide Device",
+ "type": "boolean",
+ "description": "If true, device will be removed or hidden from HomeKit.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "external": {
+ "title": "External Accessory",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "refreshRate": {
+ "title": "Device Refresh Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "updateRate": {
+ "title": "Update Rate",
+ "type": "number",
+ "minimum": 1,
+ "placeholder": 5,
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt') && model.options.devices[arrayIndices].deviceId);"
+ }
+ },
+ "pushRate": {
+ "title": "Device Push Rate",
+ "type": "number",
+ "placeholder": 360,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "firmware": {
+ "title": "Firmware Override",
+ "type": "string",
+ "placeholder": "1.2.8",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "logging": {
+ "title": "Device Logging Override Setting",
+ "type": "string",
+ "required": true,
+ "default": "",
+ "oneOf": [
+ {
+ "title": "Debug Logging",
+ "enum": [
+ "debug"
+ ]
+ },
+ {
+ "title": "Default Logging",
+ "enum": [
+ ""
+ ]
+ },
+ {
+ "title": "No Logging",
+ "enum": [
+ "none"
+ ]
+ },
+ {
+ "title": "Standard Logging",
+ "enum": [
+ "standard"
+ ]
+ }
+ ],
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "connectionType": {
+ "title": "Connection Type",
+ "type": "string",
+ "oneOf": [
+ {
+ "title": "BLE",
+ "enum": [
+ "BLE"
+ ]
+ },
+ {
+ "title": "BLE/OpenAPI",
+ "enum": [
+ "BLE/OpenAPI"
+ ]
+ },
+ {
+ "title": "Disable",
+ "enum": [
+ "Disabled"
+ ]
+ },
+ {
+ "title": "OpenAPI",
+ "enum": [
+ "OpenAPI"
+ ]
+ }
+ ],
+ "description": "Bluetooth (BLE) API is only available for the following Device Types: Humidifier, Meter, MeterPlus, Curtain, Bot, Motion Sensor, Contact Sensor, Plug Mini (US), Plug Mini (JP), & Color Bulb",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);"
+ }
+ },
+ "scanDuration": {
+ "title": "Scan Duration (Default is 1 Second) for BLE",
+ "type": "number",
+ "placeholder": 1,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "offline": {
+ "title": "Offline as Off",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
+ }
+ },
+ "maxRetry": {
+ "title": "Max Retries for BLE",
+ "type": "number",
+ "placeholder": "5",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'BLE' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI') && (model.options.devices[arrayIndices].configDeviceType === 'Bot' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1' || model.options.devices[arrayIndices].configDeviceType === 'Robot Vacuum Cleaner S1 Plus' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Plug' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (JP)' || model.options.devices[arrayIndices].configDeviceType === 'Plug Mini (US)' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Color Bulb' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor'));"
+ }
+ },
+ "maxRetries": {
+ "title": "Device Max Retries for OpenAPI",
+ "type": "number",
+ "placeholder": 5,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "delayBetweenRetries": {
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
+ "type": "number",
+ "placeholder": 3,
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ },
+ "disableCaching": {
+ "title": "Disable Caching",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3'));"
+ }
+ },
+ "history": {
+ "title": "EVE History",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)'));"
+ }
+ },
+ "webhook": {
+ "title": "Enable Webhook",
+ "type": "boolean",
+ "condition": {
+ "functionBody": "return (model.options && model.options.devices && model.options.webhookURL && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].connectionType === 'OpenAPI' || model.options.devices[arrayIndices].connectionType === 'BLE/OpenAPI'));"
+ }
+ }
+ }
+ }
+ }
},
"irdevices": {
"type": "array",
@@ -1499,6 +5396,10 @@
"expandable": true,
"expanded": false,
"items": [
+ {
+ "type": "help",
+ "helpvalue": "With SwitchBot Device Setting, you can set device specific settings based on deviceId."
+ },
{
"key": "options.devices",
"notitle": false,
@@ -1517,6 +5418,7 @@
"options.devices[].webhook",
"options.devices[].type",
"options.devices[].mode",
+ "options.devices[].mapping",
"options.devices[].allowPush",
"options.devices[].doublePress",
"options.devices[].pushRatePress",
@@ -1528,7 +5430,6 @@
"options.devices[].set_maxlux",
"options.devices[].hide_leak",
"options.devices[].dry",
- "options.devices[].mode",
"options.devices[].set_minStep",
"options.devices[].set_min",
"options.devices[].set_max",
@@ -1569,6 +5470,495 @@
}
]
},
+ {
+ "type": "fieldset",
+ "title": "SwitchBot Device Type Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ {
+ "type": "help",
+ "helpvalue": "Setting a Device Type Setting will override all indiviudally set setting on SwithBot Device Settings."
+ },
+ {
+ "type": "fieldset",
+ "title": "Bot Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Bot.mode",
+ "options.deviceConfig.Bot.type",
+ "options.deviceConfig.Bot.doublePress",
+ "options.deviceConfig.Bot.pushRatePress",
+ "options.deviceConfig.Bot.allowPush",
+ "options.deviceConfig.Bot.hide_device",
+ "options.deviceConfig.Bot.external",
+ "options.deviceConfig.Bot.refreshRate",
+ "options.deviceConfig.Bot.updateRate",
+ "options.deviceConfig.Bot.pushRate",
+ "options.deviceConfig.Bot.firmware",
+ "options.deviceConfig.Bot.logging",
+ "options.deviceConfig.Bot.connectionType",
+ "options.deviceConfig.Bot.scanDuration",
+ "options.deviceConfig.Bot.offline",
+ "options.deviceConfig.Bot.maxRetry",
+ "options.deviceConfig.Bot.maxRetries",
+ "options.deviceConfig.Bot.delayBetweenRetries",
+ "options.deviceConfig.Bot.disableCaching",
+ "options.deviceConfig.Bot.history",
+ "options.deviceConfig.Bot.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Meter Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Meter.hide_temperature",
+ "options.deviceConfig.Meter.convertUnitTo",
+ "options.deviceConfig.Meter.hide_humidity",
+ "options.deviceConfig.Meter.external",
+ "options.deviceConfig.Meter.refreshRate",
+ "options.deviceConfig.Meter.updateRate",
+ "options.deviceConfig.Meter.pushRate",
+ "options.deviceConfig.Meter.firmware",
+ "options.deviceConfig.Meter.logging",
+ "options.deviceConfig.Meter.connectionType",
+ "options.deviceConfig.Meter.scanDuration",
+ "options.deviceConfig.Meter.hide_device",
+ "options.deviceConfig.Meter.offline",
+ "options.deviceConfig.Meter.maxRetry",
+ "options.deviceConfig.Meter.maxRetries",
+ "options.deviceConfig.Meter.delayBetweenRetries",
+ "options.deviceConfig.Meter.disableCaching",
+ "options.deviceConfig.Meter.history",
+ "options.deviceConfig.Meter.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Meter Plus Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.MeterPlus.hide_temperature",
+ "options.deviceConfig.MeterPlus.convertUnitTo",
+ "options.deviceConfig.MeterPlus.hide_humidity",
+ "options.deviceConfig.MeterPlus.external",
+ "options.deviceConfig.MeterPlus.refreshRate",
+ "options.deviceConfig.MeterPlus.updateRate",
+ "options.deviceConfig.MeterPlus.pushRate",
+ "options.deviceConfig.MeterPlus.firmware",
+ "options.deviceConfig.MeterPlus.logging",
+ "options.deviceConfig.MeterPlus.connectionType",
+ "options.deviceConfig.MeterPlus.scanDuration",
+ "options.deviceConfig.MeterPlus.hide_device",
+ "options.deviceConfig.MeterPlus.offline",
+ "options.deviceConfig.MeterPlus.maxRetry",
+ "options.deviceConfig.MeterPlus.maxRetries",
+ "options.deviceConfig.MeterPlus.delayBetweenRetries",
+ "options.deviceConfig.MeterPlus.disableCaching",
+ "options.deviceConfig.MeterPlus.history",
+ "options.deviceConfig.MeterPlus.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "IOSensor Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.IOSensor.hide_temperature",
+ "options.deviceConfig.IOSensor.convertUnitTo",
+ "options.deviceConfig.IOSensor.hide_humidity",
+ "options.deviceConfig.IOSensor.external",
+ "options.deviceConfig.IOSensor.refreshRate",
+ "options.deviceConfig.IOSensor.updateRate",
+ "options.deviceConfig.IOSensor.pushRate",
+ "options.deviceConfig.IOSensor.firmware",
+ "options.deviceConfig.IOSensor.logging",
+ "options.deviceConfig.IOSensor.connectionType",
+ "options.deviceConfig.IOSensor.scanDuration",
+ "options.deviceConfig.IOSensor.hide_device",
+ "options.deviceConfig.IOSensor.offline",
+ "options.deviceConfig.IOSensor.maxRetry",
+ "options.deviceConfig.IOSensor.maxRetries",
+ "options.deviceConfig.IOSensor.delayBetweenRetries",
+ "options.deviceConfig.IOSensor.disableCaching",
+ "options.deviceConfig.IOSensor.history",
+ "options.deviceConfig.IOSensor.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Humidifier Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Humidifier.hide_temperature",
+ "options.deviceConfig.Humidifier.convertUnitTo",
+ "options.deviceConfig.Humidifier.set_minStep",
+ "options.deviceConfig.Humidifier.external",
+ "options.deviceConfig.Humidifier.refreshRate",
+ "options.deviceConfig.Humidifier.updateRate",
+ "options.deviceConfig.Humidifier.pushRate",
+ "options.deviceConfig.Humidifier.firmware",
+ "options.deviceConfig.Humidifier.logging",
+ "options.deviceConfig.Humidifier.connectionType",
+ "options.deviceConfig.Humidifier.scanDuration",
+ "options.deviceConfig.Humidifier.hide_device",
+ "options.deviceConfig.Humidifier.offline",
+ "options.deviceConfig.Humidifier.maxRetry",
+ "options.deviceConfig.Humidifier.maxRetries",
+ "options.deviceConfig.Humidifier.delayBetweenRetries",
+ "options.deviceConfig.Humidifier.disableCaching",
+ "options.deviceConfig.Humidifier.history",
+ "options.deviceConfig.Humidifier.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Curtain Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Curtain.disable_group",
+ "options.deviceConfig.Curtain.hide_lightsensor",
+ "options.deviceConfig.Curtain.set_minLux",
+ "options.deviceConfig.Curtain.set_maxLux",
+ "options.deviceConfig.Curtain.set_max",
+ "options.deviceConfig.Curtain.set_min",
+ "options.deviceConfig.Curtain.set_minStep",
+ "options.deviceConfig.Curtain.setCloseMode",
+ "options.deviceConfig.Curtain.setOpenMode",
+ "options.deviceConfig.Curtain.silentModeSwitch",
+ "options.deviceConfig.Curtain.external",
+ "options.deviceConfig.Curtain.refreshRate",
+ "options.deviceConfig.Curtain.updateRate",
+ "options.deviceConfig.Curtain.pushRate",
+ "options.deviceConfig.Curtain.firmware",
+ "options.deviceConfig.Curtain.logging",
+ "options.deviceConfig.Curtain.connectionType",
+ "options.deviceConfig.Curtain.scanDuration",
+ "options.deviceConfig.Curtain.hide_device",
+ "options.deviceConfig.Curtain.offline",
+ "options.deviceConfig.Curtain.maxRetry",
+ "options.deviceConfig.Curtain.maxRetries",
+ "options.deviceConfig.Curtain.delayBetweenRetries",
+ "options.deviceConfig.Curtain.disableCaching",
+ "options.deviceConfig.Curtain.history",
+ "options.deviceConfig.Curtain.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Curtain3 Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Curtain3.disable_group",
+ "options.deviceConfig.Curtain3.hide_lightsensor",
+ "options.deviceConfig.Curtain3.set_minLux",
+ "options.deviceConfig.Curtain3.set_maxLux",
+ "options.deviceConfig.Curtain3.set_max",
+ "options.deviceConfig.Curtain3.set_min",
+ "options.deviceConfig.Curtain3.set_minStep",
+ "options.deviceConfig.Curtain3.setCloseMode",
+ "options.deviceConfig.Curtain3.setOpenMode",
+ "options.deviceConfig.Curtain3.silentModeSwitch",
+ "options.deviceConfig.Curtain3.external",
+ "options.deviceConfig.Curtain3.refreshRate",
+ "options.deviceConfig.Curtain3.updateRate",
+ "options.deviceConfig.Curtain3.pushRate",
+ "options.deviceConfig.Curtain3.firmware",
+ "options.deviceConfig.Curtain3.logging",
+ "options.deviceConfig.Curtain3.connectionType",
+ "options.deviceConfig.Curtain3.scanDuration",
+ "options.deviceConfig.Curtain3.hide_device",
+ "options.deviceConfig.Curtain3.offline",
+ "options.deviceConfig.Curtain3.maxRetry",
+ "options.deviceConfig.Curtain3.maxRetries",
+ "options.deviceConfig.Curtain3.delayBetweenRetries",
+ "options.deviceConfig.Curtain3.disableCaching",
+ "options.deviceConfig.Curtain3.history",
+ "options.deviceConfig.Curtain3.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Blind Tilt Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Blind Tilt.disable_group",
+ "options.deviceConfig.Blind Tilt.mapping",
+ "options.deviceConfig.Blind Tilt.hide_lightsensor",
+ "options.deviceConfig.Blind Tilt.set_minLux",
+ "options.deviceConfig.Blind Tilt.set_maxLux",
+ "options.deviceConfig.Blind Tilt.set_max",
+ "options.deviceConfig.Blind Tilt.set_min",
+ "options.deviceConfig.Blind Tilt.set_minStep",
+ "options.deviceConfig.Blind Tilt.setCloseMode",
+ "options.deviceConfig.Blind Tilt.setOpenMode",
+ "options.deviceConfig.Blind Tilt.silentModeSwitch",
+ "options.deviceConfig.Blind Tilt.external",
+ "options.deviceConfig.Blind Tilt.refreshRate",
+ "options.deviceConfig.Blind Tilt.updateRate",
+ "options.deviceConfig.Blind Tilt.pushRate",
+ "options.deviceConfig.Blind Tilt.firmware",
+ "options.deviceConfig.Blind Tilt.logging",
+ "options.deviceConfig.Blind Tilt.connectionType",
+ "options.deviceConfig.Blind Tilt.scanDuration",
+ "options.deviceConfig.Blind Tilt.hide_device",
+ "options.deviceConfig.Blind Tilt.offline",
+ "options.deviceConfig.Blind Tilt.maxRetry",
+ "options.deviceConfig.Blind Tilt.maxRetries",
+ "options.deviceConfig.Blind Tilt.delayBetweenRetries",
+ "options.deviceConfig.Blind Tilt.disableCaching",
+ "options.deviceConfig.Blind Tilt.history",
+ "options.deviceConfig.Blind Tilt.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Contact Sensor Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Contact Sensor.hide_lightsensor",
+ "options.deviceConfig.Contact Sensor.set_minLux",
+ "options.deviceConfig.Contact Sensor.set_maxLux",
+ "options.deviceConfig.Contact Sensor.hide_motionsensor",
+ "options.deviceConfig.Contact Sensor.external",
+ "options.deviceConfig.Contact Sensor.refreshRate",
+ "options.deviceConfig.Contact Sensor.updateRate",
+ "options.deviceConfig.Contact Sensor.pushRate",
+ "options.deviceConfig.Contact Sensor.firmware",
+ "options.deviceConfig.Contact Sensor.logging",
+ "options.deviceConfig.Contact Sensor.connectionType",
+ "options.deviceConfig.Contact Sensor.scanDuration",
+ "options.deviceConfig.Contact Sensor.hide_device",
+ "options.deviceConfig.Contact Sensor.offline",
+ "options.deviceConfig.Contact Sensor.maxRetry",
+ "options.deviceConfig.Contact Sensor.maxRetries",
+ "options.deviceConfig.Contact Sensor.delayBetweenRetries",
+ "options.deviceConfig.Contact Sensor.disableCaching",
+ "options.deviceConfig.Contact Sensor.history",
+ "options.deviceConfig.Contact Sensor.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Motion Sensor Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Motion Sensor.hide_lightsensor",
+ "options.deviceConfig.Motion Sensor.set_minLux",
+ "options.deviceConfig.Motion Sensor.set_maxLux",
+ "options.deviceConfig.Motion Sensor.external",
+ "options.deviceConfig.Motion Sensor.refreshRate",
+ "options.deviceConfig.Motion Sensor.updateRate",
+ "options.deviceConfig.Motion Sensor.pushRate",
+ "options.deviceConfig.Motion Sensor.firmware",
+ "options.deviceConfig.Motion Sensor.logging",
+ "options.deviceConfig.Motion Sensor.connectionType",
+ "options.deviceConfig.Motion Sensor.scanDuration",
+ "options.deviceConfig.Motion Sensor.hide_device",
+ "options.deviceConfig.Motion Sensor.offline",
+ "options.deviceConfig.Motion Sensor.maxRetry",
+ "options.deviceConfig.Motion Sensor.maxRetries",
+ "options.deviceConfig.Motion Sensor.delayBetweenRetries",
+ "options.deviceConfig.Motion Sensor.disableCaching",
+ "options.deviceConfig.Motion Sensor.history",
+ "options.deviceConfig.Motion Sensor.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Water Detector Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Water Detector.hide_leak",
+ "options.deviceConfig.Water Detector.dry",
+ "options.deviceConfig.Water Detector.external",
+ "options.deviceConfig.Water Detector.refreshRate",
+ "options.deviceConfig.Water Detector.updateRate",
+ "options.deviceConfig.Water Detector.pushRate",
+ "options.deviceConfig.Water Detector.firmware",
+ "options.deviceConfig.Water Detector.logging",
+ "options.deviceConfig.Water Detector.connectionType",
+ "options.deviceConfig.Water Detector.scanDuration",
+ "options.deviceConfig.Water Detector.hide_device",
+ "options.deviceConfig.Water Detector.offline",
+ "options.deviceConfig.Water Detector.maxRetry",
+ "options.deviceConfig.Water Detector.maxRetries",
+ "options.deviceConfig.Water Detector.delayBetweenRetries",
+ "options.deviceConfig.Water Detector.disableCaching",
+ "options.deviceConfig.Water Detector.history",
+ "options.deviceConfig.Water Detector.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Color Bulb Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Color Bulb.set_minStep",
+ "options.deviceConfig.Color Bulb.adaptiveLightingShift",
+ "options.deviceConfig.Color Bulb.external",
+ "options.deviceConfig.Color Bulb.refreshRate",
+ "options.deviceConfig.Color Bulb.updateRate",
+ "options.deviceConfig.Color Bulb.pushRate",
+ "options.deviceConfig.Color Bulb.firmware",
+ "options.deviceConfig.Color Bulb.logging",
+ "options.deviceConfig.Color Bulb.connectionType",
+ "options.deviceConfig.Color Bulb.scanDuration",
+ "options.deviceConfig.Color Bulb.hide_device",
+ "options.deviceConfig.Color Bulb.offline",
+ "options.deviceConfig.Color Bulb.maxRetry",
+ "options.deviceConfig.Color Bulb.maxRetries",
+ "options.deviceConfig.Color Bulb.delayBetweenRetries",
+ "options.deviceConfig.Color Bulb.disableCaching",
+ "options.deviceConfig.Color Bulb.history",
+ "options.deviceConfig.Color Bulb.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Strip Light Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Strip Light.set_minStep",
+ "options.deviceConfig.Strip Light.adaptiveLightingShift",
+ "options.deviceConfig.Strip Light.external",
+ "options.deviceConfig.Strip Light.refreshRate",
+ "options.deviceConfig.Strip Light.updateRate",
+ "options.deviceConfig.Strip Light.pushRate",
+ "options.deviceConfig.Strip Light.firmware",
+ "options.deviceConfig.Strip Light.logging",
+ "options.deviceConfig.Strip Light.connectionType",
+ "options.deviceConfig.Strip Light.scanDuration",
+ "options.deviceConfig.Strip Light.hide_device",
+ "options.deviceConfig.Strip Light.offline",
+ "options.deviceConfig.Strip Light.maxRetry",
+ "options.deviceConfig.Strip Light.maxRetries",
+ "options.deviceConfig.Strip Light.delayBetweenRetries",
+ "options.deviceConfig.Strip Light.disableCaching",
+ "options.deviceConfig.Strip Light.history",
+ "options.deviceConfig.Strip Light.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Ceiling Light Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Ceiling Light.set_minStep",
+ "options.deviceConfig.Ceiling Light.adaptiveLightingShift",
+ "options.deviceConfig.Ceiling Light.external",
+ "options.deviceConfig.Ceiling Light.refreshRate",
+ "options.deviceConfig.Ceiling Light.updateRate",
+ "options.deviceConfig.Ceiling Light.pushRate",
+ "options.deviceConfig.Ceiling Light.firmware",
+ "options.deviceConfig.Ceiling Light.logging",
+ "options.deviceConfig.Ceiling Light.connectionType",
+ "options.deviceConfig.Ceiling Light.scanDuration",
+ "options.deviceConfig.Ceiling Light.hide_device",
+ "options.deviceConfig.Ceiling Light.offline",
+ "options.deviceConfig.Ceiling Light.maxRetry",
+ "options.deviceConfig.Ceiling Light.maxRetries",
+ "options.deviceConfig.Ceiling Light.delayBetweenRetries",
+ "options.deviceConfig.Ceiling Light.disableCaching",
+ "options.deviceConfig.Ceiling Light.history",
+ "options.deviceConfig.Ceiling Light.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Ceiling Light Pro Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Ceiling Light Pro.set_minStep",
+ "options.deviceConfig.Ceiling Light Pro.adaptiveLightingShift",
+ "options.deviceConfig.Ceiling Light Pro.external",
+ "options.deviceConfig.Ceiling Light Pro.refreshRate",
+ "options.deviceConfig.Ceiling Light Pro.updateRate",
+ "options.deviceConfig.Ceiling Light Pro.pushRate",
+ "options.deviceConfig.Ceiling Light Pro.firmware",
+ "options.deviceConfig.Ceiling Light Pro.logging",
+ "options.deviceConfig.Ceiling Light Pro.connectionType",
+ "options.deviceConfig.Ceiling Light Pro.scanDuration",
+ "options.deviceConfig.Ceiling Light Pro.hide_device",
+ "options.deviceConfig.Ceiling Light Pro.offline",
+ "options.deviceConfig.Ceiling Light Pro.maxRetry",
+ "options.deviceConfig.Ceiling Light Pro.maxRetries",
+ "options.deviceConfig.Ceiling Light Pro.delayBetweenRetries",
+ "options.deviceConfig.Ceiling Light Pro.disableCaching",
+ "options.deviceConfig.Ceiling Light Pro.history",
+ "options.deviceConfig.Ceiling Light Pro.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Smart Lock Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Smart Lock.hide_contactsensor",
+ "options.deviceConfig.Smart Lock.activate_latchbutton",
+ "options.deviceConfig.Smart Lock.external",
+ "options.deviceConfig.Smart Lock.refreshRate",
+ "options.deviceConfig.Smart Lock.updateRate",
+ "options.deviceConfig.Smart Lock.pushRate",
+ "options.deviceConfig.Smart Lock.firmware",
+ "options.deviceConfig.Smart Lock.logging",
+ "options.deviceConfig.Smart Lock.connectionType",
+ "options.deviceConfig.Smart Lock.scanDuration",
+ "options.deviceConfig.Smart Lock.hide_device",
+ "options.deviceConfig.Smart Lock.offline",
+ "options.deviceConfig.Smart Lock.maxRetry",
+ "options.deviceConfig.Smart Lock.maxRetries",
+ "options.deviceConfig.Smart Lock.delayBetweenRetries",
+ "options.deviceConfig.Smart Lock.disableCaching",
+ "options.deviceConfig.Smart Lock.history",
+ "options.deviceConfig.Smart Lock.webhook"
+ ]
+ },
+ {
+ "type": "fieldset",
+ "title": "Smart Lock Pro Settings",
+ "expandable": true,
+ "expanded": false,
+ "items": [
+ "options.deviceConfig.Smart Lock Pro.hide_contactsensor",
+ "options.deviceConfig.Smart Lock Pro.activate_latchbutton",
+ "options.deviceConfig.Smart Lock Pro.external",
+ "options.deviceConfig.Smart Lock Pro.refreshRate",
+ "options.deviceConfig.Smart Lock Pro.updateRate",
+ "options.deviceConfig.Smart Lock Pro.pushRate",
+ "options.deviceConfig.Smart Lock Pro.firmware",
+ "options.deviceConfig.Smart Lock Pro.logging",
+ "options.deviceConfig.Smart Lock Pro.connectionType",
+ "options.deviceConfig.Smart Lock Pro.scanDuration",
+ "options.deviceConfig.Smart Lock Pro.hide_device",
+ "options.deviceConfig.Smart Lock Pro.offline",
+ "options.deviceConfig.Smart Lock Pro.maxRetry",
+ "options.deviceConfig.Smart Lock Pro.maxRetries",
+ "options.deviceConfig.Smart Lock Pro.delayBetweenRetries",
+ "options.deviceConfig.Smart Lock Pro.disableCaching",
+ "options.deviceConfig.Smart Lock Pro.history",
+ "options.deviceConfig.Smart Lock Pro.webhook"
+ ]
+ }
+ ]
+ },
{
"type": "fieldset",
"title": "IR Device Settings",
diff --git a/src/device/blindtilt.ts b/src/device/blindtilt.ts
index 65cfea2a..caf3165e 100644
--- a/src/device/blindtilt.ts
+++ b/src/device/blindtilt.ts
@@ -86,7 +86,7 @@ export class BlindTilt extends deviceBase {
// default placeholders
- this.mappingMode = ((device as blindTiltConfig).mode as BlindTiltMappingMode) ?? BlindTiltMappingMode.OnlyUp
+ this.mappingMode = ((device as blindTiltConfig).mapping as BlindTiltMappingMode) ?? BlindTiltMappingMode.OnlyUp
this.debugLog(`Mapping mode: ${this.mappingMode}`)
// this is subject we use to track when we need to POST changes to the SwitchBot API
diff --git a/src/platform.ts b/src/platform.ts
index f8f2edd1..959fef52 100644
--- a/src/platform.ts
+++ b/src/platform.ts
@@ -113,7 +113,6 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
credentials: config.credentials as object,
options: config.options as object,
devices: config.devices as { deviceId: string }[],
- deviceConfig: config.deviceConfig as { [deviceType: string]: devicesConfig },
}
// Plugin Configuration
@@ -615,9 +614,11 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
'Battery Circulator Fan': this.createFan.bind(this),
}
+ const deviceConfig = this.config.options?.deviceConfig?.[device.deviceType] || {}
+
if (deviceTypeHandlers[device.deviceType!]) {
await this.debugLog(`Discovered ${device.deviceType}: ${device.deviceId}`)
- await deviceTypeHandlers[device.deviceType!](device)
+ await deviceTypeHandlers[device.deviceType!]({ ...device, ...deviceConfig })
} else if (['Hub Mini', 'Hub Plus', 'Remote', 'Indoor Cam', 'remote with screen'].includes(device.deviceType!)) {
await this.debugLog(`Discovered ${device.deviceType}: ${device.deviceId}, is currently not supported, device: ${JSON.stringify(device)}`)
} else {
diff --git a/src/settings.ts b/src/settings.ts
index eb2b066e..84cd6c1c 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -23,7 +23,6 @@ export const PLUGIN_NAME = '@switchbot/homebridge-switchbot'
export interface SwitchBotPlatformConfig extends PlatformConfig {
credentials?: credentials
options?: options
- deviceConfig?: { [deviceType: string]: devicesConfig }
}
interface credentials {
token?: string
@@ -33,6 +32,7 @@ interface credentials {
export interface options {
devices?: devicesConfig[]
+ deviceConfig?: { [deviceType: string]: devicesConfig }
irdevices?: irDevicesConfig[]
allowInvalidCharacters?: boolean
mqttURL?: string
@@ -132,7 +132,7 @@ export interface curtainConfig extends BaseDeviceConfig {
export interface blindTiltConfig extends BaseDeviceConfig {
configDeviceType: 'Blind Tilt'
disable_group?: boolean
- mode?: string
+ mapping?: string
hide_lightsensor?: boolean
set_minLux?: number
set_maxLux?: number