mirror of
https://github.com/oznu/homebridge-unifi-occupancy-sensor.git
synced 2025-01-22 11:18:56 +00:00
208 lines
4.9 KiB
JSON
208 lines
4.9 KiB
JSON
{
|
|
"pluginAlias": "UniFi Occupancy Sensor",
|
|
"pluginType": "accessory",
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"title": "Sensor Name",
|
|
"type": "string",
|
|
"default": "Occupancy Sensor",
|
|
"minLength": 1,
|
|
"required": true
|
|
},
|
|
"unifi": {
|
|
"title": "UniFi Controller Settings",
|
|
"type": "object",
|
|
"properties": {
|
|
"controller": {
|
|
"title": "Controller URL",
|
|
"type": "string",
|
|
"required": true
|
|
},
|
|
"username": {
|
|
"title": "Username",
|
|
"type": "string",
|
|
"required": true
|
|
},
|
|
"password": {
|
|
"title": "Password",
|
|
"type": "string",
|
|
"required": true
|
|
},
|
|
"site": {
|
|
"title": "Site",
|
|
"type": "string",
|
|
"default": "default",
|
|
"required": true
|
|
},
|
|
"secure": {
|
|
"title": "Validate the Controller SSL Certificate?",
|
|
"type": "boolean"
|
|
},
|
|
"unifios": {
|
|
"title": "Does your controller run on UnifiOS?",
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"watch": {
|
|
"title": "Watched Devices",
|
|
"type": "array",
|
|
"items": {
|
|
"title": "Device MAC Address",
|
|
"type": "string",
|
|
"pattern": "^([a-f0-9]{2}:){5}[a-f0-9]{2}$"
|
|
}
|
|
},
|
|
"monitor": {
|
|
"title": "Watched Devices",
|
|
"type": "array",
|
|
"items": {
|
|
"title": "Device / AP",
|
|
"type": "object",
|
|
"properties": {
|
|
"device": {
|
|
"title": "Device MAC Address",
|
|
"type": "string",
|
|
"pattern": "^([a-f0-9]{2}:){5}[a-f0-9]{2}$",
|
|
"required": true
|
|
},
|
|
"ap": {
|
|
"title": "AP MAC Address",
|
|
"type": "string",
|
|
"pattern": "^([a-f0-9]{2}:){5}[a-f0-9]{2}$"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"mode": {
|
|
"title": "Watch Mode",
|
|
"type": "string",
|
|
"default": "any",
|
|
"oneOf": [
|
|
{
|
|
"title": "Any - only trigger occupancy when at least one watched device is connected",
|
|
"enum": [
|
|
"any"
|
|
]
|
|
},
|
|
{
|
|
"title": "All - only trigger occupancy when all watched devices are connected",
|
|
"enum": [
|
|
"all"
|
|
]
|
|
},
|
|
{
|
|
"title": "None - only trigger occupancy when none of the watched devices are connected",
|
|
"enum": [
|
|
"none"
|
|
]
|
|
}
|
|
],
|
|
"required": true
|
|
},
|
|
"watchGuests": {
|
|
"title": "Watch Guest Networks?",
|
|
"type": "boolean"
|
|
},
|
|
"interval": {
|
|
"title": "Interval in seconds to query Unifi Controller (fallback if events are not working)",
|
|
"type": "integer",
|
|
"required": false,
|
|
"default": 1800
|
|
}
|
|
}
|
|
},
|
|
"layout": [
|
|
{
|
|
"type": "flex",
|
|
"flex-flow": "row wrap",
|
|
"items": [
|
|
{
|
|
"type": "flex",
|
|
"flex-flow": "column",
|
|
"items": [
|
|
"name",
|
|
"unifi.username"
|
|
]
|
|
},
|
|
{
|
|
"type": "flex",
|
|
"flex-flow": "column",
|
|
"items": [
|
|
"unifi.controller",
|
|
"unifi.password"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"unifi.unifios",
|
|
"unifi.secure",
|
|
"watchGuests",
|
|
"unifi.site",
|
|
"mode",
|
|
"interval",
|
|
{
|
|
"type": "help",
|
|
"helpvalue": "<h4>Monitored Devices</h4><em class='primary-text'>Leave the AP field blank to watch for the device on all APs.</em>"
|
|
},
|
|
{
|
|
"nodescription": true,
|
|
"notitle": true,
|
|
"key": "monitor",
|
|
"type": "array",
|
|
"items": [
|
|
{
|
|
"type": "flex",
|
|
"flex-flow": "row wrap",
|
|
"items": [
|
|
{
|
|
"type": "flex",
|
|
"flex-flow": "column",
|
|
"items": [
|
|
"monitor[].device"
|
|
]
|
|
},
|
|
{
|
|
"type": "flex",
|
|
"flex-flow": "column",
|
|
"items": [
|
|
"monitor[].ap"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "help",
|
|
"helpvalue": "<h4>Watched Devices</h4>",
|
|
"condition": {
|
|
"functionBody": "return (model.watch && model.watch.length)"
|
|
}
|
|
},
|
|
{
|
|
"nodescription": true,
|
|
"notitle": true,
|
|
"key": "watch",
|
|
"type": "array",
|
|
"items": [
|
|
{
|
|
"type": "div",
|
|
"displayFlex": true,
|
|
"flex-direction": "row",
|
|
"items": [
|
|
{
|
|
"key": "watch[]"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"condition": {
|
|
"functionBody": "return (model.watch && model.watch.length)"
|
|
}
|
|
}
|
|
]
|
|
}
|