UNPKG

@elshaer/homebridge-hdl-buspro-enhanced

Version:

Linking the HDL bus into the Homebridge widget

364 lines 22.4 kB
{ "pluginAlias": "HDLBusproHomebridge", "pluginType": "platform", "singular": true, "schema": { "type": "object", "properties": { "name": { "title": "Name", "type": "string", "default": "HDLBusproHomebridge", "description": "The name for this HDL Buspro platform instance (appears in Homebridge Logs).", "required": true }, "buses": { "title": "Buses", "type": "array", "items": { "type": "object", "properties": { "bus_name": { "title": "Bus name", "description": "The name of your bus.", "type": "string", "default": "New bus", "minLength": 1, "required": true }, "bus_IP": { "title": "Bus IP address", "description": "The IP address of your bus.", "type": "string", "format": "ipv4", "placeholder": "10.0.0.1", "required": true, "style": { "color": "#FFFFFF" } }, "bus_port": { "title": "Bus port", "description": "The port of your bus.", "type": "integer", "default": 6000, "required": true }, "subnets": { "title": "Subnets", "type": "array", "required": true, "items": { "type": "object", "properties": { "subnet_number": { "title": "Subnet number", "type": "number", "minimum": 0, "maximum": 254 }, "cd_number": { "title": "Control device number", "type": "number", "minimum": 0, "maximum": 254 }, "devices": { "title": "Devices", "type": "array", "required": true, "items": { "type": "object", "properties": { "device_name": { "title": "Device Name", "type": "string" }, "device_address": { "title": "Device Address", "type": "number", "minimum": 0, "maximum": 254 }, "device_type": { "title": "Device type", "type": "string", "oneOf": [ { "title": "Relay Lightbulb", "enum": ["relaylightbulb"] }, { "title": "Relay Dimmable Lightbulb", "enum": ["relaydimmablelightbulb"] }, { "title": "Relay Lock", "enum": ["relaylock"] }, { "title": "Dry Contact", "enum": ["drycontact"] }, { "title": "Sensor", "enum": ["sensor8in1"] }, { "title": "Relay Curtains", "enum": ["relaycurtains"] }, { "title": "Relay Curtain Valve", "enum": ["relaycurtainvalve"] }, { "title": "Relay RGB", "enum": ["relayrgb"] }, { "title": "Relay Fan", "enum": ["relayfan"] } ] }, "area": { "title": "Area", "type": "number", "minimum": 0, "maximum": 254, "default": 1, "description": "Change it in case your relay supports areas" }, "channel": { "title": "Device Channel", "type": "number", "minimum": 0, "maximum": 254 }, "red_channel": { "title": "Red Channel", "type": "number", "minimum": 0, "maximum": 254 }, "green_channel": { "title": "Green Channel", "type": "number", "minimum": 0, "maximum": 254 }, "blue_channel": { "title": "Blue Channel", "type": "number", "minimum": 0, "maximum": 254 }, "lock_timeout": { "title": "Lock timeout", "type": "number", "minimum": 0 }, "nc": { "title": "Circuit type", "type": "boolean", "description": "Allows to flip logic for which state of contact is active", "default": true }, "duration": { "title": "Duration", "type": "number", "description": "How long does it take for curtain to fully open. Should coincide with value from HDL.", "minimum": 0 }, "curtains_precision": { "title": "Curtains position precision (%)", "type": "number", "description": "Due to the fact HDL can only measure percentage of curtains open by timer and the fact that HDL relay and your HB server have a lag, precise condition in current/target levels may leave curtain status bugged as 'opening'. Increase this value if this happens.", "minimum": 0, "default": 5 }, "drycontact_type": { "title": "Dry contact purpose", "type": "string", "description": "Select dry contact purpose", "oneOf": [ { "title": "Leak Sensor", "enum": ["leaksensor"] }, { "title": "Contact Sensor", "enum": ["contactsensor"] }, { "title": "Smoke Sensor", "enum": ["smokesensor"] }, { "title": "Occupancy Sensor", "enum": ["occupancysensor"] } ] }, "valve_type": { "title": "Valve type", "type": "string", "description": "Select 1 of four valve types", "oneOf": [ { "title": "General Valve", "enum": [0] }, { "title": "Irrigation", "enum": [1] }, { "title": "Shower Head", "enum": [2] }, { "title": "Water Faucet", "enum": [3] } ] } } } } } } } } } } }, "required": ["name", "buses"] }, "layout": [ { "key": "name", "type": "string", "placeholder": "My HDL Buspro System" }, { "key": "buses", "type": "tabarray", "title": "{{ value.bus_name || 'bus' }}", "items": [ "buses[].bus_name", "buses[].bus_IP", "buses[].bus_port", { "key": "buses[]", "type": "array", "title": "{{ value.title }}", "items": [ { "key": "buses[].subnets", "title": "Subnets", "buttonText": "Add Bus subnets", "type": "array", "expandable": true, "expanded": true, "items": [ "buses[].subnets[].subnet_number", "buses[].subnets[].cd_number", { "key": "buses[].subnets[].devices", "buttonText": "Add device", "type": "array", "expandable": true, "expanded": false, "items": [ "buses[].subnets[].devices[].device_name", "buses[].subnets[].devices[].device_address", "buses[].subnets[].devices[].device_type", { "key": "buses[].subnets[].devices[].area", "condition": { "functionBody": "return (['drycontact'].includes(model.buses[arrayIndices[0]].subnets[arrayIndices[1]].devices[arrayIndices[2]].device_type))" } }, { "key": "buses[].subnets[].devices[].channel", "condition": { "functionBody": "return (['relaylightbulb', 'relaydimmablelightbulb', 'drycontact', 'relaylock', 'relaycurtains', 'relayfan'].includes(model.buses[arrayIndices[0]].subnets[arrayIndices[1]].devices[arrayIndices[2]].device_type))" } }, { "key": "buses[].subnets[].devices[].red_channel", "condition": { "functionBody": "return (['relayrgb'].includes(model.buses[arrayIndices[0]].subnets[arrayIndices[1]].devices[arrayIndices[2]].device_type))" } }, { "key": "buses[].subnets[].devices[].green_channel", "condition": { "functionBody": "return (['relayrgb'].includes(model.buses[arrayIndices[0]].subnets[arrayIndices[1]].devices[arrayIndices[2]].device_type))" } }, { "key": "buses[].subnets[].devices[].blue_channel", "condition": { "functionBody": "return (['relayrgb'].includes(model.buses[arrayIndices[0]].subnets[arrayIndices[1]].devices[arrayIndices[2]].device_type))" } }, { "key": "buses[].subnets[].devices[].drycontact_type", "condition": { "functionBody": "return (['drycontact'].includes(model.buses[arrayIndices[0]].subnets[arrayIndices[1]].devices[arrayIndices[2]].device_type))" } }, { "key": "buses[].subnets[].devices[].lock_timeout", "condition": { "functionBody": "return (['relaylock'].includes(model.buses[arrayIndices[0]].subnets[arrayIndices[1]].devices[arrayIndices[2]].device_type))" } }, { "key": "buses[].subnets[].devices[].duration", "condition": { "functionBody": "return (['relaycurtains'].includes(model.buses[arrayIndices[0]].subnets[arrayIndices[1]].devices[arrayIndices[2]].device_type))" } }, { "key": "buses[].subnets[].devices[].nc", "type": "radios-inline", "titleMap": [ { "name": "Normally closed", "value": true }, { "name": "Normally open", "value": false } ], "condition": { "functionBody": "return (['relaylock', 'drycontact'].includes(model.buses[arrayIndices[0]].subnets[arrayIndices[1]].devices[arrayIndices[2]].device_type))" } }, { "key": "buses[].subnets[].devices[].valve_type", "condition": { "functionBody": "return (['relaycurtainvalve'].includes(model.buses[arrayIndices[0]].subnets[arrayIndices[1]].devices[arrayIndices[2]].device_type))" } }, { "key": "buses[].subnets[].devices[].curtains_precision", "condition": { "functionBody": "return (['relaycurtains'].includes(model.buses[arrayIndices[0]].subnets[arrayIndices[1]].devices[arrayIndices[2]].device_type))" } } ] } ] } ] } ] } ] }