wird ja intensiv NODE-RED diskutiert.
Ich habe am Wochenende als absoluter NR-Neuling in <2 Std den ersten Schritt zur Anwesenheitserkennung über die WLAN-Aktivität gemacht.
installiert.
Code: Alles auswählen
[{"id":"6bd81e53.19e98","type":"debug","z":"322d96a8.9dbf4a","name":"debug presence person1","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","x":1151.5142097473145,"y":443.9999828338623,"wires":[]},{"id":"58669ee6.db467","type":"Unifi","z":"322d96a8.9dbf4a","name":"Ubiquiti","ip":"192.168.1.X","port":8443,"site":"default","command":"20","x":603.0142211914062,"y":265.99998474121094,"wires":[["a924941c.125ce8"]]},{"id":"4f474d61.2113b4","type":"inject","z":"322d96a8.9dbf4a","name":"Check alle 5 min","topic":"Presence detection","payload":"","payloadType":"date","repeat":"300","crontab":"","once":false,"onceDelay":0.1,"x":532.514217376709,"y":179.99999237060547,"wires":[["58669ee6.db467"]]},{"id":"ebbe4bf9.5369a8","type":"comment","z":"322d96a8.9dbf4a","name":"Check Unifi for presence of phones","info":"","x":466.514217376709,"y":130.99999237060547,"wires":[]},{"id":"a924941c.125ce8","type":"function","z":"322d96a8.9dbf4a","name":"check presence","func":"const lastSeenSeconds = 20;\nlet presenceCutoff = (new Date() - (lastSeenSeconds * 1000)) / 1000; \nconst people = {\n \"presence/person1\":\"Hostname1\",\n \"presence/person2\":\"Hostname2\"\n};\n\nreturn Object.keys(people).map(function(topic) {\n let devices = msg.payload[0].filter(device => device.hostname === people[topic] && device.last_seen > presenceCutoff);\n return {\n topic: topic,\n retain: true,\n payload: devices.length > 0\n };\n});\n\n\n\n","outputs":2,"noerr":0,"x":707.0142211914062,"y":347.9999828338623,"wires":[["5c196872.07f668"],["53ddd202.1bc2bc"]],"outputLabels":["person1 presence","person2 presence"]},{"id":"f73439c.0fde1c8","type":"debug","z":"322d96a8.9dbf4a","name":"debug presence person2","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1149.5141372680664,"y":542.9999465942383,"wires":[]},{"id":"5c196872.07f668","type":"function","z":"322d96a8.9dbf4a","name":"presence_person1","func":"flow.set('presence_person1',msg.payload);\n\n\nreturn msg;","outputs":1,"noerr":0,"x":943.5141754150391,"y":400.99998474121094,"wires":[["6bd81e53.19e98"]]},{"id":"53ddd202.1bc2bc","type":"function","z":"322d96a8.9dbf4a","name":"presence_person2","func":"flow.set('presence_person2',msg.payload);\n\n\nreturn msg;","outputs":1,"noerr":0,"x":915.0142097473145,"y":498.9999809265137,"wires":[["f73439c.0fde1c8"]]}]
Aktuell scheitere ich noch daran, die unterschiedlichen Flow-Enden wieder zu einer globalen Variable "globalPresence" zusammenzuführen.
Diese globale Variable könnte dann z.B, an eine KNX-GA oder in einem weiteren NR-Flow verwendet werden.
Vielleicht hat hier ja jemand einen Ansatz oder kann diesen Flow bereits so verwenden.