UNPKG

homebridge-433-arduino

Version:

Add bidirectional support for 433MHz switches to Homebridge using Arduino or ESP hardware.

673 lines (672 loc) 18.2 kB
{ "pluginAlias": "ArduinoRCSwitch", "pluginType": "platform", "headerDisplay": "For setting up the USB/WiFi transceiver see https://github.com/normen/arduino-433", "footerDisplay": "For help please see https://github.com/normen/homebridge-433-arduino/wiki", "schema": { "name": { "title": "Name", "type": "string", "default": "Arduino RC Switch Platform", "required": true }, "use_espilight": { "title": "ESPiLight Mode", "description": "Enable this if you have ESPiLight mode enabled on your arduino-433 transceiver", "type": "boolean", "required": false }, "serial_port": { "title": "Serial Port Name", "description": "e.g. '/dev/ttyUSB0'", "type": "string", "required": false }, "host": { "title": "Websocket Server IP or Hostname", "description": "e.g. 'arduino-433' - remove the serial port entry above to use WebSocket", "type": "string", "required": false }, "port": { "title": "Websocket Port Number", "description": "usually not needed", "type": "number", "required": false }, "input_output_timeout": { "title": "I/O Timeout", "description": "radio silence time after receiving to avoid mixing signals, defaults to 100(ms)", "type": "number", "required": false }, "throttle": { "title": "Input Message Throttle", "description": "throttle input messages to not trigger homekit too often if buttons send a lot of signals, default 500(ms)", "type": "number", "required": false }, "switches": { "title": "On/Off Switches", "required": false, "type": "array", "items": { "name": "Switch Config", "type": "object", "properties": { "name": { "title": "Name", "type": "string", "required": true }, "hint": { "title": "Hint", "type": "string", "description": "Your own hint to remember the switch", "required": false }, "type": { "title": "Type", "type": "string", "required": false }, "message": { "title": "Message", "type": "object", "required": false, "properties":{ "id":{ "title":"ID", "type":"string", "required": false }, "unit":{ "title":"Unit", "type":"string", "required": false }, "state":{ "title":"State", "type":"string", "required": false } } }, "on":{ "title": "On Message", "type": "object", "required": false, "properties":{ "code":{ "title":"Code", "type":"number", "required":false }, "pulse":{ "title":"Pulse", "type":"number", "required":false }, "protocol":{ "title":"Protocol", "type":"number", "required":false } } }, "off":{ "title": "Off Message", "type": "object", "required": false, "properties":{ "code":{ "title":"Code", "type":"number", "required":false }, "pulse":{ "title":"Pulse", "type":"number", "required":false }, "protocol":{ "title":"Protocol", "type":"number", "required":false } } } } } }, "buttons": { "title": "Buttons", "required": false, "type": "array", "items": { "name": "Button Config", "type": "object", "properties": { "name": { "title": "Name", "type": "string", "required": true }, "hint": { "title": "Hint", "type": "string", "description": "Your own hint to remember the button", "required": false }, "type": { "title": "Type", "type": "string", "required": false }, "message": { "title": "Message", "type": "object", "required": false, "properties":{ "id":{ "title":"ID", "type":"string", "required": false }, "unit":{ "title":"Unit", "type":"string", "required": false }, "state":{ "title":"State", "type":"string", "required": false } } }, "code":{ "title":"Code", "type":"number", "required":false }, "pulse":{ "title":"Pulse", "type":"number", "required":false }, "protocol":{ "title":"Protocol", "type":"number", "required":false } } } }, "sensors": { "title": "Water Sensors", "required": false, "type": "array", "items": { "name": "Sensor Config", "type": "object", "properties": { "name": { "title": "Name", "type": "string", "required": true }, "hint": { "title": "Hint", "type": "string", "description": "Your own hint to remember the sensor", "required": false }, "type": { "title": "Type", "type": "string", "required": false }, "message": { "title": "Message", "type": "object", "required": false, "properties":{ "id":{ "title":"ID", "type":"string", "required": false }, "unit":{ "title":"Unit", "type":"string", "required": false }, "state":{ "title":"State", "type":"string", "required": false } } }, "code":{ "title":"Code", "type":"number", "required":false }, "pulse":{ "title":"Pulse", "type":"number", "required":false }, "protocol":{ "title":"Protocol", "type":"number", "required":false } } } }, "detectors": { "title": "Smoke Detectors", "required": false, "type": "array", "items": { "name": "Detector Config", "type": "object", "properties": { "name": { "title": "Name", "type": "string", "required": true }, "hint": { "title": "Hint", "type": "string", "description": "Your own hint to remember the detector", "required": false }, "type": { "title": "Type", "type": "string", "required": false }, "message": { "title": "Message", "type": "object", "required": false, "properties":{ "id":{ "title":"ID", "type":"string", "required": false }, "unit":{ "title":"Unit", "type":"string", "required": false }, "state":{ "title":"State", "type":"string", "required": false } } }, "code":{ "title":"Code", "type":"number", "required":false }, "pulse":{ "title":"Pulse", "type":"number", "required":false }, "protocol":{ "title":"Protocol", "type":"number", "required":false } } } }, "motion": { "title": "Motion Detectors", "required": false, "type": "array", "items": { "name": "Detector Config", "type": "object", "properties": { "name": { "title": "Name", "type": "string", "required": true }, "hint": { "title": "Hint", "type": "string", "description": "Your own hint to remember the detector", "required": false }, "type": { "title": "Type", "type": "string", "required": false }, "message": { "title": "Message", "type": "object", "required": false, "properties":{ "id":{ "title":"ID", "type":"string", "required": false }, "unit":{ "title":"Unit", "type":"string", "required": false }, "state":{ "title":"State", "type":"string", "required": false } } }, "code":{ "title":"Code", "type":"number", "required":false }, "pulse":{ "title":"Pulse", "type":"number", "required":false }, "protocol":{ "title":"Protocol", "type":"number", "required":false } } } } }, "form": [ "name", "serial_port", { "type": "section", "expandable": true, "expanded": false, "title": "WiFi / WebSocket", "items": [ "host", "port" ] }, { "type": "section", "expandable": true, "expanded": false, "title": "Advanced", "items": [ "input_output_timeout", "throttle" ] }, "use_espilight", { "type": "fieldset", "expandable": true, "expanded": false, "title": "On/Off Switches", "items": [ { "key": "switches", "items":[ "switches[].name", "switches[].hint", { "key": "switches[].type", "condition": { "functionBody": "return model.use_espilight" } }, { "key": "switches[].message", "condition": { "functionBody": "return model.use_espilight" }, "items":[ { "type": "flex", "flex-flow": "row wrap", "items": [ "switches[].message.id", "switches[].message.unit" ] } ] }, { "key": "switches[].on", "condition": { "functionBody": "return !model.use_espilight" }, "items":[ { "type": "flex", "flex-flow": "row wrap", "items": [ "switches[].on.code", "switches[].on.pulse", "switches[].on.protocol" ] } ] }, { "key": "switches[].off", "type": "object", "condition": { "functionBody": "return !model.use_espilight" }, "items":[ { "type": "flex", "flex-flow": "row wrap", "items": [ "switches[].off.code", "switches[].off.pulse", "switches[].off.protocol" ] } ] } ] } ] }, { "type": "fieldset", "expandable": true, "expanded": false, "title": "Buttons", "items": [ { "key": "buttons", "items":[ "buttons[].name", "buttons[].hint", { "key": "buttons[].code", "condition": { "functionBody": "return !model.use_espilight" } }, { "key": "buttons[].pulse", "condition": { "functionBody": "return !model.use_espilight" } }, { "key": "buttons[].protocol", "condition": { "functionBody": "return !model.use_espilight" } }, { "key": "buttons[].type", "condition": { "functionBody": "return model.use_espilight" } }, { "key": "buttons[].message", "condition": { "functionBody": "return model.use_espilight" }, "items":[ { "type": "flex", "flex-flow": "row wrap", "items": [ "buttons[].message.id", "buttons[].message.unit", "buttons[].message.state" ] } ] } ] } ] }, { "type": "fieldset", "expandable": true, "expanded": false, "title": "Water Sensors", "items": [ { "key": "sensors", "items":[ "sensors[].name", "sensors[].hint", { "key": "sensors[].code", "condition": { "functionBody": "return !model.use_espilight" } }, { "key": "sensors[].pulse", "condition": { "functionBody": "return !model.use_espilight" } }, { "key": "sensors[].protocol", "condition": { "functionBody": "return !model.use_espilight" } }, { "key": "sensors[].type", "condition": { "functionBody": "return model.use_espilight" } }, { "key": "sensors[].message", "condition": { "functionBody": "return model.use_espilight" }, "items":[ { "type": "flex", "flex-flow": "row wrap", "items": [ "sensors[].message.id", "sensors[].message.unit", "sensors[].message.state" ] } ] } ] } ] }, { "type": "fieldset", "expandable": true, "expanded": false, "title": "Smoke Detectors", "items": [ { "key": "detectors", "items":[ "detectors[].name", "detectors[].hint", { "key": "detectors[].code", "condition": { "functionBody": "return !model.use_espilight" } }, { "key": "detectors[].pulse", "condition": { "functionBody": "return !model.use_espilight" } }, { "key": "detectors[].protocol", "condition": { "functionBody": "return !model.use_espilight" } }, { "key": "detectors[].type", "condition": { "functionBody": "return model.use_espilight" } }, { "key": "detectors[].message", "condition": { "functionBody": "return model.use_espilight" }, "items":[ { "type": "flex", "flex-flow": "row wrap", "items": [ "detectors[].message.id", "detectors[].message.unit", "detectors[].message.state" ] } ] } ] } ] }, { "type": "fieldset", "expandable": true, "expanded": false, "title": "Motion Detectors", "items": [ { "key": "motion", "items":[ "motion[].name", "motion[].hint", { "key": "motion[].code", "condition": { "functionBody": "return !model.use_espilight" } }, { "key": "motion[].pulse", "condition": { "functionBody": "return !model.use_espilight" } }, { "key": "motion[].protocol", "condition": { "functionBody": "return !model.use_espilight" } }, { "key": "motion[].type", "condition": { "functionBody": "return model.use_espilight" } }, { "key": "motion[].message", "condition": { "functionBody": "return model.use_espilight" }, "items":[ { "type": "flex", "flex-flow": "row wrap", "items": [ "motion[].message.id", "motion[].message.unit", "motion[].message.state" ] } ] } ] } ] } ] }