UNPKG

@switchbot/homebridge-switchbot

Version:

The SwitchBot plugin allows you to access your SwitchBot device(s) from HomeKit.

881 lines • 743 kB
{ "pluginAlias": "SwitchBot", "pluginType": "platform", "singular": true, "customUi": true, "customUiPath": "./dist/homebridge-ui", "headerDisplay": "<p align='center'><img width='100px' src='https://user-images.githubusercontent.com/9875439/102681754-ac2eb800-4189-11eb-8e17-7c47c804484b.png'></p>\n\nThe **SwitchBot** plugin allows you to control SwitchBot Devices. \n\nTo get started link your SwitchBot account.\n\n1. Download SwitchBot App on App Store or Google Play Store.\n\n2. Register a SwitchBot account and log in into your account.\n\n3. Generate an Open Token within the App.\n\n4. Input your `Open Token` into the parameter below.", "footerDisplay": "Please raise any issues on our [project page](https://github.com/OpenWonderLabs/homebridge-switchbot/issues).\n\nIf you would like to have other SwitchBot Devices added to this plugin fill out [Feature Request Form](https://github.com/OpenWonderLabs/homebridge-switchbot/issues/new?assignees=&labels=&template=feature_request.md).\n\n[SwitchBot Website](https://www.switch-bot.com)", "schema": { "type": "object", "properties": { "name": { "type": "string", "title": "Name", "default": "SwitchBot" }, "credentials": { "type": "object", "properties": { "token": { "title": "Token", "type": "string", "pattern": "^[0-9A-Fa-f]+$", "x-schema-form": { "type": "token" } }, "secret": { "title": "Secret", "type": "string", "pattern": "^[0-9A-Fa-f]+$", "x-schema-form": { "type": "secret" } }, "notice": { "title": "Notice", "type": "string", "default": "Keep your Token & Secret a secret!" } }, "required": [ "token", "secret", "notice" ] }, "options": { "type": "object", "properties": { "devices": { "type": "array", "items": { "title": "Devices", "type": "object", "properties": { "configDeviceName": { "title": "Device Name", "type": "string", "pattern": "^[a-zA-Z0-9]+([a-zA-Z0-9 ]*[a-zA-Z0-9]+)?$", "placeholder": "SwitchBot", "condition": { "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId);" } }, "deviceId": { "title": "Device ID", "type": "string", "placeholder": "81F3UT59513F", "pattern": "^[0-9A-F]{12}$|^[0-9A-Z0-9]{15}$|^[0-9A-Z0-9]{18}$" }, "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", "condition": { "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);" }, "oneOf": [ { "title": "Blind Tilt", "enum": [ "Blind Tilt" ] }, { "title": "Bot", "enum": [ "Bot" ] }, { "title": "Relay Switch 1", "enum": [ "Relay Switch 1" ] }, { "title": "Relay Switch 1PM", "enum": [ "Relay Switch 1PM" ] }, { "title": "Battery Circulator Fan", "enum": [ "Battery Circulator Fan" ] }, { "title": "Ceiling Light", "enum": [ "Ceiling Light" ] }, { "title": "Ceiling Light Pro", "enum": [ "Ceiling Light Pro" ] }, { "title": "Color Bulb", "enum": [ "Color Bulb" ] }, { "title": "Contact Sensor", "enum": [ "Contact Sensor" ] }, { "title": "Curtain", "enum": [ "Curtain" ] }, { "title": "Curtain 3", "enum": [ "Curtain3" ] }, { "title": "Floor Cleaning Robot S10", "enum": [ "WoSweeper" ] }, { "title": "Hub 2", "enum": [ "Hub 2" ] }, { "title": "Humidifier", "enum": [ "Humidifier" ] }, { "title": "Evaporative Humidifier", "enum": [ "Humidifier2" ] }, { "title": "Indoor/Outdoor Sensor", "enum": [ "WoIOSensor" ] }, { "title": "Water Detector", "enum": [ "Water Detector" ] }, { "title": "Meter", "enum": [ "Meter" ] }, { "title": "Meter Plus (JP)", "enum": [ "Meter Plus (JP)" ] }, { "title": "Meter Plus (US)", "enum": [ "MeterPlus" ] }, { "title": "Meter Pro", "enum": [ "MeterPro" ] }, { "title": "Meter Pro (CO2)", "enum": [ "MeterPro(CO2)" ] }, { "title": "Mini Robot Vacuum K10+", "enum": [ "K10+" ] }, { "title": "Mini Robot Vacuum K10+ Pro", "enum": [ "K10+ Pro" ] }, { "title": "Mini Robot Vacuum K10+ (WoSweeperMini)", "enum": [ "WoSweeperMini" ] }, { "title": "Mini Robot Vacuum K10+ Pro (WoSweeperMiniPro)", "enum": [ "WoSweeperMiniPro" ] }, { "title": "Motion Sensor", "enum": [ "Motion Sensor" ] }, { "title": "Plug", "enum": [ "Plug" ] }, { "title": "Plug Mini (JP)", "enum": [ "Plug Mini (JP)" ] }, { "title": "Plug Mini (US)", "enum": [ "Plug Mini (US)" ] }, { "title": "Robot Vacuum Cleaner S1", "enum": [ "WoSweeper" ] }, { "title": "Robot Vacuum Cleaner S1 Plus", "enum": [ "WoSweeperPlus" ] }, { "title": "Robot Vacuum Cleaner S10", "enum": [ "Robot Vacuum Cleaner S10" ] }, { "title": "Roller Shade", "enum": [ "WoRollerShade" ] }, { "title": "Smart Fan", "enum": [ "Smart Fan" ] }, { "title": "Smart Lock", "enum": [ "Smart Lock" ] }, { "title": "Smart Lock Pro", "enum": [ "Smart Lock Pro" ] }, { "title": "Strip Light", "enum": [ "Strip Light" ] }, { "title": "Wallet Finder", "enum": [ "WalletFinder" ] } ] }, "connectionType": { "title": "Connection Type", "type": "string", "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.", "condition": { "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device);" }, "oneOf": [ { "title": "BLE", "enum": [ "BLE" ] }, { "title": "BLE/OpenAPI", "enum": [ "BLE/OpenAPI" ] }, { "title": "Disable", "enum": [ "Disabled" ] }, { "title": "OpenAPI", "enum": [ "OpenAPI" ] } ] }, "disablePlatformBLE": { "title": "Disable Platform BLE", "type": "boolean", "description": "If set to true, this will disable the platform BLE for this specific device.", "condition": { "functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].connectionType !== 'Disabled');" } }, "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'));" } }, "customBLEaddress": { "title": "Custom BLE Address", "type": "string", "placeholder": "81F3UT59513F", "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'));" } }, "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'));" } }, "type": { "title": "What Type of Device do you want to display in the Home App?", "type": "string", "default": "", "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);" }, "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" ] } ] }, "mode": { "title": "Bot Mode", "type": "string", "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", "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);" } }, "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].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].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].mode && model.options.devices[arrayIndices].doublePress > 1);" } }, "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 === 'Humidifier2' || 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].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)') && 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 === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || 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].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)') && 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].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)') && 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].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId);" } }, "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_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);" } }, "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);" } }, "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].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && 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);" } }, "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].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light 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);" } }, "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);" } }, "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 === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2') && model.options.devices[arrayIndices].deviceId);" } }, "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].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro') && 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].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro') && 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 === '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].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && 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 === '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].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);" } }, "setOpenMode": { "title": "Opening Mode", "type": "string", "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].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId);" }, "oneOf": [ { "enum": [ "0" ], "title": "Performance Mode" }, { "enum": [ "1" ], "title": "Silent Mode" } ] }, "setCloseMode": { "title": "Closing Mode", "type": "string", "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].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId);" }, "oneOf": [ { "enum": [ "0" ], "title": "Performance Mode" }, { "enum": [ "1" ], "title": "Silent Mode" } ] }, "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 === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId);" } }, "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'));" } }, "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'));" } }, "mqttURL": { "title": "MQTT URL (Device Specific)", "type": "string", "placeholder": "192.168.7.1", "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)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));" } }, "mqttOptions": { "title": "MQTT Options (Device Specific)", "type": "string", "condition": { "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)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));" } }, "mqttPubOptions": { "title": "MQTT Pub Options (Device Specific)", "type": "string", "condition": { "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)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));" } }, "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)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));" } }, "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);" } }, "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);" } }, "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);" } }, "logging": { "title": "Device Logging Override Setting", "type": "string", "default": "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);" }, "oneOf": [ { "title": "Debug Logging", "enum": [ "debug" ] }, { "title": "No Logging", "enum": [ "none" ] }, { "title": "Standard Logging", "enum": [ "standard" ] } ] }, "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].configDeviceType === 'WoRollerShade' || model.options.d