UNPKG

@homebridge-plugins/homebridge-rainbird

Version:

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

383 lines (382 loc) 14.6 kB
{ "pluginAlias": "RainBird", "pluginType": "platform", "singular": true, "customUi": true, "customUiPath": "./dist/homebridge-ui", "headerDisplay": "The Homebridge [RainBird](https://rainbird.com) plugin allows you to access your RainBird Controller from HomeKit with [Homebridge](https://homebridge.io).", "footerDisplay": "Your RainBird account has been linked. Please raise any issues on our [project page](https://github.com/homebridge-plugins/homebridge-rainbird/issues).\n\nIf you would like to have other features added to this plugin fill out [Feature Request Form](https://github.com/homebridge-plugins/homebridge-rainbird/issues/new?assignees=&labels=&template=feature_request.md).", "schema": { "type": "object", "properties": { "name": { "type": "string", "title": "Name", "default": "RainBird", "required": true }, "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": "RainBird Controller" }, "ipaddress": { "title": "IP Address", "description": "The device's Static IP address. Recommended to set this device's IP with a Static IP.", "type": "string", "format": "ipv4", "pattern": "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$", "placeholder": "192.168.1.1", "required": true }, "password": { "title": "Password", "type": "string", "required": true, "x-schema-form": { "type": "password" }, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "external": { "title": "External Accessory", "description": "This will make all device under this acessory be displayed as an external accesory and will not be added to cache or be added with child bridge of this plugin. Each device will have to be added seperately.", "type": "boolean", "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "showRainSensor": { "title": "Show Rain Sensor (as Leak Sensor)", "type": "boolean", "required": false, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "showValveSensor": { "title": "Enable Valve Notifications (as Contact Sensors)", "type": "boolean", "required": false, "description": "If enabled, whichever zone runs the contact sensors will go off as detected so you know that it is running.", "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "showProgramASwitch": { "title": "Show Program A Switch", "type": "boolean", "requried": false, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "showProgramBSwitch": { "title": "Show Program B Switch", "type": "boolean", "requried": false, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "showProgramCSwitch": { "title": "Show Program C Switch", "type": "boolean", "requried": false, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "showProgramDSwitch": { "title": "Show Program D Switch (not supported by all models)", "type": "boolean", "requried": false, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "showStopIrrigationSwitch": { "title": "Show Stop Irrigation Switch", "type": "boolean", "requried": false, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "showZoneValve": { "title": "Show Zones as Valve Accessories", "type": "boolean", "required": false, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "includeZones": { "title": "Zones to Include", "type": "string", "requried": false, "description": "comma seperated list of zone numbers to create valve accessories for (leave blank for all)", "pattern": "^[0-9]{1,3}(,[0-9]{1,3})*$", "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "showDelayIrrigationSwitch": { "title": "Show Delay Irrigation Switch", "type": "boolean", "required": false, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "showTestZoneSwitch": { "title": "Show Test Zone Switch", "type": "boolean", "required": false, "description": "Show a switch for each zone to trigger a brief zone test", "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "irrigationDelay": { "title": "Irrigation Delay (days)", "type": "number", "minimum": 1, "maximum": 14, "placeholder": 1, "required": false, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "minValueRemainingDuration": { "title": "Min Value for Ramaining Duration", "type": "number", "placeholder": 0, "required": false, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "maxValueRemainingDuration": { "title": "Max Value for Ramaining Duration", "type": "number", "placeholder": 3600, "required": false, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "syncTime": { "title": "Sync date and time of controller with host", "type": "boolean", "default": false, "required": false, "description": "Useful for automatically changing the controller's time when Daylight Savings starts/ends or fixing the time if the controller's internal clock runs fast or slow", "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "showRequestResponse": { "title": "Show RainBird requests and responses in the log", "type": "boolean", "requried": false, "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "firmware": { "title": "Firmware Override", "type": "string", "placeholder": "1.2.8", "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "refreshRate": { "title": "Device Refresh Rate", "type": "number", "minimum": 120, "placeholder": 900, "description": "Indicates the number of seconds between refreshes of the Rainbird Client.", "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "hide_device": { "title": "Delete Device", "type": "boolean", "description": "DO NOT USE, UNLESS YOU WANT TO DELETE THIS DEVICE FROM CACHE.", "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } }, "logging": { "title": "Device Logging Override Setting", "type": "string", "required": true, "default": "", "oneOf": [ { "title": "Default Logging", "enum": [""] }, { "title": "Standard Logging", "enum": ["standard"] }, { "title": "No Logging", "enum": ["none"] }, { "title": "Debug Logging", "enum": ["debug"] } ], "condition": { "functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);" } } } } }, "options": { "type": "object", "properties": { "refreshRate": { "title": "Refresh Rate", "type": "number", "minimum": 120, "placeholder": 900, "description": "Indicates the number of seconds between refreshes of the Rainbird Client." }, "logging": { "title": "Logging Setting", "type": "string", "required": true, "default": "", "oneOf": [ { "title": "Default Logging", "enum": [""] }, { "title": "Standard Logging", "enum": ["standard"] }, { "title": "No Logging", "enum": ["none"] }, { "title": "Debug Logging", "enum": ["debug"] } ] }, "allowInvalidCharacters": { "title": "Allow Invalid Characters", "type": "boolean", "description": "If true, invalid characters will be allowed in the device name." }, "enableMatter": { "title": "Enable Matter Support", "type": "boolean", "default": true, "description": "Enable Homebridge Matter support. When enabled and Matter is available on your Homebridge instance, RainBird devices will be registered as Matter accessories." }, "preferMatter": { "title": "Prefer Matter over HAP", "type": "boolean", "default": true, "description": "When Matter is available, prioritize Matter over HAP (HomeKit Accessory Protocol). Disable this to always use HAP regardless of Matter availability." } } } } }, "layout": [ { "type": "fieldset", "title": "Devices", "expandable": true, "expanded": true, "items": [ { "key": "devices", "notitle": false, "type": "tabarray", "title": "{{ value.configDeviceName || value.ipaddress || 'New Device' }}", "expandable": true, "expanded": false, "draggable": true, "orderable": true, "items": [ "devices[].configDeviceName", "devices[].ipaddress", "devices[].password", "devices[].hide_device", "devices[].external", "devices[].showRainSensor", "devices[].showValveSensor", "devices[].showProgramASwitch", "devices[].showProgramBSwitch", "devices[].showProgramCSwitch", "devices[].showProgramDSwitch", "devices[].showStopIrrigationSwitch", "devices[].showZoneValve", "devices[].includeZones", "devices[].showDelayIrrigationSwitch", "devices[].irrigationDelay", "devices[].showTestZoneSwitch", "devices[].minValueRemainingDuration", "devices[].maxValueRemainingDuration", "devices[].syncTime", "devices[].showRequestResponse", "devices[].firmware", "devices[].refreshRate", "devices[].logging" ] } ] }, { "type": "fieldset", "title": "Advanced Settings", "expandable": true, "expanded": false, "items": [ { "type": "help", "helpvalue": "<h5>Refresh Rate</h5><em class='primary-text'>Refresh Rate indicates the number of seconds between refreshes of the RainbirdClient.</em>" }, { "key": "options.refreshRate", "notitle": true }, { "type": "help", "helpvalue": "<h5>Push Rate</h5><em class='primary-text'>Push Rate indicates the number of seconds between pushes to Rainbird Client.</em>" }, { "key": "options.pushRate", "notitle": true }, "options.logging", "options.allowInvalidCharacters", "options.enableMatter", "options.preferMatter" ] } ] }