@switchbot/homebridge-switchbot
Version:
The SwitchBot plugin allows you to access your SwitchBot device(s) from HomeKit.
881 lines • 743 kB
JSON
{
"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