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