homebridge-433-arduino
Version:
Add bidirectional support for 433MHz switches to Homebridge using Arduino or ESP hardware.
673 lines (672 loc) • 18.2 kB
JSON
{
"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"
]
}
]
}
]
}
]
}
]
}