nomos system nomos system

Geräteprofil · Gateways

UniFi Controller

Voraussetzungen

  1. Ein UniFi Controller (Cloud Key, Dream Machine oder Software-Controller), erreichbar im lokalen Netz.
  2. Ein eigener Admin-Benutzer für nomos im Controller.
  3. Node-RED auf dem nomos Controller und ein MQTT-Broker, den nomos nutzt.

Einrichtung

  1. Im UniFi Controller einen eigenen Admin-Benutzer für nomos anlegen
  2. In nomos das Node-RED-Panel öffnen
  3. Die Palette node-red-contrib-unifi installieren
  4. Den folgenden Flow importieren:
    JSON zum Einfügen
    [{"id":"256964ab.cfd84c","type":"tab","label":"UniFi Interface","disabled":false,"info":"https://github.com/Isaksson/node-red-contrib-unifi\n\nhttps://flows.nodered.org/node/node-red-contrib-unifi\n\nhttps://www.npmjs.com/package/node-red-contrib-unifi"},{"id":"e8d3dd1e.593df","type":"Unifi","z":"256964ab.cfd84c","name":"UniFi","ip":"192.168.0.1","port":"8443","site":"default","command":1,"unifios":true,"x":570,"y":160,"wires":[["cedb14e.3e8a3e8","ba40ac37.10ada"]]},{"id":"cedb14e.3e8a3e8","type":"debug","z":"256964ab.cfd84c","name":"UNIFI","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":530,"y":220,"wires":[]},{"id":"b8f048b9.e3bd98","type":"function","z":"256964ab.cfd84c","name":"GET Health","func":"msg.topic = 'stat/unifi/health';\nmsg.payload = { command: \"Health\"};\nreturn msg;","outputs":1,"noerr":0,"x":390,"y":80,"wires":[["6fcc74cc.802a4c"]]},{"id":"d5d7b2c3.be4a7","type":"inject","z":"256964ab.cfd84c","name":"TEST","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":80,"wires":[["b8f048b9.e3bd98"]]},{"id":"4cb54a43.d857e4","type":"mqtt out","z":"256964ab.cfd84c","name":"","topic":"","qos":"","retain":"","broker":"429b82b6.49b00c","x":1270,"y":160,"wires":[]},{"id":"b0f64253.78f6a","type":"inject","z":"256964ab.cfd84c","name":"1 minute interval","topic":"","payload":"","payloadType":"date","repeat":"60","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":120,"wires":[["b8f048b9.e3bd98"]]},{"id":"11d3c9dc.0fabb6","type":"function","z":"256964ab.cfd84c","name":"PREPARE Health","func":"function recursive(obj) {\n    if (Array.isArray(obj)) {\n        for(var i = 0; i < obj.length; i++) {\n            recursive(obj[i]);\n        }\n    } else if (typeof obj === 'object') {\n        node.send({\n            whitelist: ['num_user', 'num_guest', 'num_iot', 'status', 'num_ap', 'num_adopted', 'num_disabled', 'num_disconnected', 'num_pending', 'speedtest_status', 'speedtest_ping', 'drops'],\n            topic: 'stat/unifi/health/' + obj.subsystem,\n            payload: obj\n        });\n    }\n}\n\nrecursive(msg.payload);\nreturn null;","outputs":1,"noerr":0,"x":890,"y":80,"wires":[["64de39ca.17e478"]]},{"id":"ba40ac37.10ada","type":"switch","z":"256964ab.cfd84c","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"stat/unifi/health","vt":"str"},{"t":"eq","v":"stat/unifi/sitesysinfo","vt":"str"},{"t":"eq","v":"AccessDevices","vt":"str"},{"t":"eq","v":"RogueAccessPoints","vt":"str"},{"t":"eq","v":"ClientDevices","vt":"str"},{"t":"eq","v":"WLanSettings","vt":"str"}],"checkall":"true","repair":false,"outputs":6,"x":710,"y":160,"wires":[["11d3c9dc.0fabb6"],["d45c3b32.c844c8"],["ee7ad331.9a162"],["bdcdc654.0fa558"],["956d17ed.9c1b28"],["a4d0ee3b.5a0c4"]]},{"id":"4681afda.debdf","type":"mqtt in","z":"256964ab.cfd84c","name":"stat/unifi/health/#","topic":"stat/unifi/#","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":860,"y":560,"wires":[["dfbc7e3.677928"]]},{"id":"dfbc7e3.677928","type":"debug","z":"256964ab.cfd84c","name":"MQTT DEBUG","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1100,"y":560,"wires":[]},{"id":"e0f77157.39823","type":"function","z":"256964ab.cfd84c","name":"setAPLed","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"setAPLed\", \n    device_id: msg.payload,\n    mode: 'on'\n};\nreturn msg;","outputs":1,"noerr":0,"x":400,"y":560,"wires":[["6fcc74cc.802a4c"]]},{"id":"ccf5aa44.25dee8","type":"function","z":"256964ab.cfd84c","name":"GET SiteSysinfo","func":"msg.topic = 'stat/unifi/sitesysinfo';\nmsg.payload = {command: \"SiteSysinfo\"};\nreturn msg;","outputs":1,"noerr":0,"x":400,"y":300,"wires":[["6fcc74cc.802a4c"]]},{"id":"81e7e75c.486d08","type":"inject","z":"256964ab.cfd84c","name":"EXEC","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":300,"wires":[["ccf5aa44.25dee8"]]},{"id":"d45c3b32.c844c8","type":"function","z":"256964ab.cfd84c","name":"PREPARE SiteSysinfo","func":"function recursive(obj) {\n    if (Array.isArray(obj)) {\n        for(var i = 0; i < obj.length; i++) {\n            recursive(obj[i]);\n        }\n    } else if (typeof obj === 'object') {\n        node.send({\n            whitelist: ['version', 'name', 'ubnt_device_type', 'udm_version'],\n            topic: 'stat/unifi/sitesysinfo/' + obj.ubnt_device_type,\n            payload: obj\n        });\n    }\n}\n\nrecursive(msg.payload);\nreturn null;","outputs":1,"noerr":0,"x":900,"y":300,"wires":[["64de39ca.17e478"]]},{"id":"ee50ab77.e86b38","type":"inject","z":"256964ab.cfd84c","name":"EXEC","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":340,"wires":[["98ee0b46.2c1e68"]]},{"id":"98ee0b46.2c1e68","type":"function","z":"256964ab.cfd84c","name":"GET AccessDevices","func":"msg.topic = 'AccessDevices';\nmsg.payload = {command: \"AccessDevices\"};\nreturn msg;","outputs":1,"noerr":0,"x":420,"y":340,"wires":[["6fcc74cc.802a4c"]]},{"id":"ee7ad331.9a162","type":"function","z":"256964ab.cfd84c","name":"PREPARE AccessDevices","func":"function recursive(obj) {\n    if (Array.isArray(obj)) {\n        for(var i = 0; i < obj.length; i++) {\n            recursive(obj[i]);\n        }\n    } else if (typeof obj === 'object') {\n        node.send({\n            output: 'debug',\n            whitelist: ['name', 'ip', 'mac', 'model', 'version', 'serial', 'device_id'],\n            topic: 'stat/unifi/accessdevices/' + obj.type,\n            payload: obj\n        });\n    }\n}\n\nrecursive(msg.payload);\nreturn null;","outputs":1,"noerr":0,"x":910,"y":340,"wires":[["64de39ca.17e478"]]},{"id":"50d0364d.38da58","type":"debug","z":"256964ab.cfd84c","name":"DEBUG","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1280,"y":220,"wires":[]},{"id":"d0b02edc.64799","type":"comment","z":"256964ab.cfd84c","name":"GET DATA AND ID'S","info":"","x":240,"y":260,"wires":[]},{"id":"64de39ca.17e478","type":"function","z":"256964ab.cfd84c","name":"Whitelisting","func":"if (msg.whitelist) {\n    const keys = Object.keys(msg.payload);\n    for(var i = 0; i < keys.length; i++) {\n        if (!msg.whitelist.includes(keys[i])) {\n            delete msg.payload[keys[i]];\n        }\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"x":1110,"y":160,"wires":[["84716a.d3f42e98"]]},{"id":"84716a.d3f42e98","type":"switch","z":"256964ab.cfd84c","name":"","property":"output","propertyType":"msg","rules":[{"t":"eq","v":"debug","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1270,"y":100,"wires":[["50d0364d.38da58"],["4cb54a43.d857e4"]]},{"id":"5270ac3.f5b9854","type":"comment","z":"256964ab.cfd84c","name":"AUTOMATIC POLLING","info":"","x":260,"y":40,"wires":[]},{"id":"61fc8ac9.5dead4","type":"inject","z":"256964ab.cfd84c","name":"EXEC","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":380,"wires":[["f5d7bf22.2242f"]]},{"id":"f5d7bf22.2242f","type":"function","z":"256964ab.cfd84c","name":"GET RogueAccessPoints","func":"msg.topic = 'RogueAccessPoints';\nmsg.payload = {command: \"RogueAccessPoints\"};\nreturn msg;","outputs":1,"noerr":0,"x":430,"y":380,"wires":[["6fcc74cc.802a4c"]]},{"id":"bdcdc654.0fa558","type":"function","z":"256964ab.cfd84c","name":"PREPARE RogueAccessPoints","func":"function recursive(obj) {\n    if (Array.isArray(obj)) {\n        for(var i = 0; i < obj.length; i++) {\n            recursive(obj[i]);\n        }\n    } else if (typeof obj === 'object') {\n        node.send({\n            output: 'debug',\n            whitelist: ['ap_mac', 'age', 'band', 'bw', 'channel', 'noise', 'rssi', 'security', 'last_seen'],\n            topic: 'stat/unifi/rogueaccesspoints/' + obj.essid,\n            payload: obj\n        });\n    }\n}\n\nrecursive(msg.payload);\nreturn null;","outputs":1,"noerr":0,"x":930,"y":380,"wires":[["64de39ca.17e478"]]},{"id":"93d905b7.f2d8b8","type":"function","z":"256964ab.cfd84c","name":"GET ClientDevices","func":"msg.topic = 'ClientDevices';\nmsg.payload = {command: \"ClientDevices\"};\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":420,"wires":[["6fcc74cc.802a4c"]]},{"id":"f02ce7bc.8039f8","type":"inject","z":"256964ab.cfd84c","name":"EXEC","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":420,"wires":[["93d905b7.f2d8b8"]]},{"id":"956d17ed.9c1b28","type":"function","z":"256964ab.cfd84c","name":"PREPARE ClientDevices","func":"function recursive(obj) {\n    if (Array.isArray(obj)) {\n        for(var i = 0; i < obj.length; i++) {\n            recursive(obj[i]);\n        }\n    } else if (typeof obj === 'object') {\n        node.send({\n            output: 'debug',\n            whitelist: ['name', 'oui', 'mac', 'is_guest', 'first_seen', 'last_seen', 'hostname', 'score', 'network', 'ip', 'uptime'],\n            topic: 'stat/unifi/clientdevices/' + obj.essid,\n            payload: obj\n        });\n    }\n}\n\nrecursive(msg.payload);\nreturn null;","outputs":1,"noerr":0,"x":910,"y":420,"wires":[["64de39ca.17e478"]]},{"id":"45d62241.e9eafc","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/ledon","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":180,"y":560,"wires":[["e0f77157.39823"]]},{"id":"4695c52d.169bcc","type":"comment","z":"256964ab.cfd84c","name":"MQTT API'S","info":"","x":221,"y":520,"wires":[]},{"id":"b72f9169.21bfd","type":"function","z":"256964ab.cfd84c","name":"setAPLed","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"setAPLed\", \n    device_id: msg.payload,\n    mode: 'off'\n};\nreturn msg;","outputs":1,"noerr":0,"x":400,"y":620,"wires":[["6fcc74cc.802a4c"]]},{"id":"8aa59cf6.b4bae","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/ledoff","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":180,"y":620,"wires":[["b72f9169.21bfd"]]},{"id":"9d6d7942.3166f8","type":"comment","z":"256964ab.cfd84c","name":"MQTT DEBUG","info":"","x":860,"y":520,"wires":[]},{"id":"1f778612.5f593a","type":"inject","z":"256964ab.cfd84c","name":"EXEC","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":460,"wires":[["a6d85a49.deefc8"]]},{"id":"a6d85a49.deefc8","type":"function","z":"256964ab.cfd84c","name":"GET WLanSettings","func":"msg.topic = 'WLanSettings';\nmsg.payload = {command: \"WLanSettings\"};\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":460,"wires":[["6fcc74cc.802a4c"]]},{"id":"a4d0ee3b.5a0c4","type":"function","z":"256964ab.cfd84c","name":"PREPARE WLanSettings","func":"function recursive(obj) {\n    if (Array.isArray(obj)) {\n        for(var i = 0; i < obj.length; i++) {\n            recursive(obj[i]);\n        }\n    } else if (typeof obj === 'object') {\n        node.send({\n            output: 'debug',\n            whitelist: ['_id', 'name', 'is_guest', 'hide_ssid', 'wlangroup_id', 'wpa_mode', 'security', 'enabled', 'vlan_enabled'],\n            topic: 'stat/unifi/wlansettings/' + obj.name,\n            payload: obj\n        });\n    }\n}\n\nrecursive(msg.payload);\nreturn null;","outputs":1,"noerr":0,"x":910,"y":460,"wires":[["64de39ca.17e478"]]},{"id":"cbfff594.228198","type":"function","z":"256964ab.cfd84c","name":"DisableWLan","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"DisableWLan\", \n    wlan_id: msg.payload,\n    disable: false\n};\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":680,"wires":[["6fcc74cc.802a4c"]]},{"id":"97ddbff2.4d4a3","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/wlanon","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":180,"y":680,"wires":[["cbfff594.228198"]]},{"id":"c9b4d52b.63ae18","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/wlanoff","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":180,"y":740,"wires":[["22140af9.d88a36"]]},{"id":"22140af9.d88a36","type":"function","z":"256964ab.cfd84c","name":"DisableWLan","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"DisableWLan\", \n    wlan_id: msg.payload,\n    disable: true\n};\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":740,"wires":[["6fcc74cc.802a4c"]]},{"id":"9cf90d93.10bb1","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/blockclient","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":200,"y":800,"wires":[["3d278cfc.529ed4"]]},{"id":"3d278cfc.529ed4","type":"function","z":"256964ab.cfd84c","name":"blockClient","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"blockClient\", \n    mac: msg.payload\n};\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":800,"wires":[["6fcc74cc.802a4c"]]},{"id":"1b8a3b75.8e4bb5","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/unblockclient","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":200,"y":860,"wires":[["fbf0ddba.bf01e"]]},{"id":"fbf0ddba.bf01e","type":"function","z":"256964ab.cfd84c","name":"unblockClient","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"unblockClient\", \n    mac: msg.payload\n};\nreturn msg;","outputs":1,"noerr":0,"x":420,"y":860,"wires":[["6fcc74cc.802a4c"]]},{"id":"258ead8c.c2e7d2","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/reconnectclient","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":210,"y":920,"wires":[["737a495a.953268"]]},{"id":"737a495a.953268","type":"function","z":"256964ab.cfd84c","name":"reconnectClient","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"reconnectClient\", \n    mac: msg.payload\n};\nreturn msg;","outputs":1,"noerr":0,"x":420,"y":920,"wires":[["6fcc74cc.802a4c"]]},{"id":"7e77c651.879bf8","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/authorizeguest60","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":220,"y":980,"wires":[["36720a77.c895b6"]]},{"id":"36720a77.c895b6","type":"function","z":"256964ab.cfd84c","name":"authorizeGuest (60min)","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"authorizeGuest\", \n    mac: msg.payload,\n    minutes: 60\n};\nreturn msg;","outputs":1,"noerr":0,"x":450,"y":980,"wires":[["6fcc74cc.802a4c"]]},{"id":"e8692940.f119a8","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/authorizeguest30","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":220,"y":1040,"wires":[["3ff22bc4.92dd54"]]},{"id":"3ff22bc4.92dd54","type":"function","z":"256964ab.cfd84c","name":"authorizeGuest (30min)","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"authorizeGuest\", \n    mac: msg.payload,\n    minutes: 30\n};\nreturn msg;","outputs":1,"noerr":0,"x":450,"y":1040,"wires":[["6fcc74cc.802a4c"]]},{"id":"b66b1ac4.2a7be8","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/authorizeguest120","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":220,"y":1100,"wires":[["d7187abd.2b0638"]]},{"id":"d7187abd.2b0638","type":"function","z":"256964ab.cfd84c","name":"authorizeGuest (120min)","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"authorizeGuest\", \n    mac: msg.payload,\n    minutes: 120\n};\nreturn msg;","outputs":1,"noerr":0,"x":450,"y":1100,"wires":[["6fcc74cc.802a4c"]]},{"id":"8d2f1fd9.2b6f3","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/restartap","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":190,"y":1160,"wires":[["18a97c86.23c033"]]},{"id":"18a97c86.23c033","type":"function","z":"256964ab.cfd84c","name":"restartAP","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"restartAP\", \n    mac: msg.payload\n};\nreturn msg;","outputs":1,"noerr":0,"x":400,"y":1160,"wires":[["6fcc74cc.802a4c"]]},{"id":"7feadbd5.59f9b4","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/enableap","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":190,"y":1220,"wires":[["1d4872f4.fa83bd"]]},{"id":"1d4872f4.fa83bd","type":"function","z":"256964ab.cfd84c","name":"enableAP","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"enableAP\", \n    device_id: msg.payload\n};\nreturn msg;","outputs":1,"noerr":0,"x":400,"y":1220,"wires":[["6fcc74cc.802a4c"]]},{"id":"875a9fcc.68b4d","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/disableap","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":190,"y":1280,"wires":[["52419791.542d68"]]},{"id":"52419791.542d68","type":"function","z":"256964ab.cfd84c","name":"disableAP","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"disableAP\", \n    device_id: msg.payload\n};\nreturn msg;","outputs":1,"noerr":0,"x":400,"y":1280,"wires":[["6fcc74cc.802a4c"]]},{"id":"9eb59097.bf2f1","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/setlocate","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":190,"y":1340,"wires":[["cd0c0004.23b6b"]]},{"id":"cd0c0004.23b6b","type":"function","z":"256964ab.cfd84c","name":"setLocate","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"setLocate\", \n    mac: msg.payload\n};\nreturn msg;","outputs":1,"noerr":0,"x":400,"y":1340,"wires":[["6fcc74cc.802a4c"]]},{"id":"e12b4bc.4808cb8","type":"mqtt in","z":"256964ab.cfd84c","name":"","topic":"cmd/unifi/unsetlocate","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":200,"y":1400,"wires":[["d76b2229.14831"]]},{"id":"d76b2229.14831","type":"function","z":"256964ab.cfd84c","name":"unsetLocate","func":"msg.topic = 'none';\nmsg.payload = { \n    command: \"unsetLocate\", \n    mac: msg.payload\n};\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":1400,"wires":[["6fcc74cc.802a4c"]]},{"id":"cb9fa226.0110d","type":"mqtt in","z":"256964ab.cfd84c","name":"cmd/unifi/#","topic":"stat/unifi/#","qos":"2","datatype":"auto","broker":"429b82b6.49b00c","x":850,"y":620,"wires":[["dfbc7e3.677928"]]},{"id":"3d63c443.f1303c","type":"comment","z":"256964ab.cfd84c","name":"YOUR UNIFI CONTROLLER","info":"","x":600,"y":120,"wires":[]},{"id":"6fcc74cc.802a4c","type":"delay","z":"256964ab.cfd84c","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"2","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":400,"y":160,"wires":[["e8d3dd1e.593df"]]},{"id":"429b82b6.49b00c","type":"mqtt-broker","z":"","name":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","closeTopic":"","closeQos":"0","closeRetain":"false","closePayload":"","willTopic":"","willQos":"0","willRetain":"false","willPayload":""}]
    
  5. Den UniFi-Knoten (direkt unter „YOUR UNIFI CONTROLLER”) mit den Zugangsdaten aus Schritt 1 einrichten
  6. In der nomos Konfiguration unter Skills → Add-ons das UniFi Controller-Profil importieren
  7. Gerät anlegen
  8. Einen Namen vergeben und unifi als MQTT-Topic eintragen

Datenbereich

Der Flow fragt den Controller zyklisch ab und veröffentlicht die Werte; nomos liest mit.

Auslösbar sind: LED am Access Point ein/aus, Access Point neu starten, Access Point aktivieren/deaktivieren, Locate ein/aus, WLAN ein/aus, einen Client sperren, entsperren oder neu verbinden sowie einen Gast für 30, 60 oder 120 Minuten freischalten.

Hinweise