Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Anwesenheit, Präsenz über NodeRed und Ping
#1
Hallo zusammen,

da ich ein paar Dinge gerne automatisch bei Abwesenheit, also "außer Haus" steuern möchte, habe ich mich mit diesem Thema beschäftigt.
Die normalen Lösungen über Bluetooth und RFID-Chips habe ich verworfen. Bei Bluetooth müssen zusätzliche Geräte und evtl. Repeater eingesetzt werden, RFID-Chips werden bei uns nicht konsequent immer am Schlüsselbrett abgelegt.
Ausserdem könnte man ja gemeinsam das Haus verlassen und ein Schlüssel bleibt zu Hause.

Die beste Lösung über Ping auf die Handys funktioniert anscheinend nicht bei allen Geräten, da die neueren Android-Versionen die WLAN-Verbindung in einen PowerSaveMode legen und das Gerät dann nicht mehr auf Pings antwortet.

Nachdem ich es mit normalen Pings versucht habe, hatte ich nur eine 50% Quote, bei 1 Gerät funktionierts, bei meinem Gerät leider nicht.

Ich habe nun versucht diesen PowerSaveMode irgendwie auszutricksen und nach den Ergebnissen der letzten Tage bin ich damit ganz zufrieden.
Ich verliere zwar zeitweise mal 1 Ping, allerdings liegt das eher daran, wenn ich mich durchs Haus bewege und das Handy zwischen den AccessPoints wechselt. Der nächste Ping geht dann wieder durch.

Im Node-Red-Flow habe ich das so gelöst, dass vor dem eigentlichen Ping ein UDP-Paket an das Handy gesendet wird, nach einer einstellbaren Zeit (ping_delay) in Millisekunden, wird dann der eigentliche Ping ausgeführt.
Meine Theorie dazu: Das UDP-Paket wird vom AccessPoint "gepuffert", alle 100ms(oder je nach Hersteller 150, 200, usw) prüft das Handy im PowerSaveMode am AccessPoint ob Daten vorliegen, es stellt fest es gibt Daten. Das Handy stellt die WLAN-Verbindung wieder her und holt die Daten ab (UDP-Paket). Mit dem UDP-Paket kann das Handy nichts anfangen, ist aber auch egal, da die WLAN-Verbindung nun wieder steht, ist der anschliessende Ping erfolgreich.

Bei mir funktionierts und ich habe zumindest in unserer Konstellation eine sehr verlässliche Anwesenheitskontrolle über die Handys, ob das wirklich bei anderen Modellen, bzw. beim IPhone auch funktioniert, kann ich leider nicht testen, da ich keines besitze.

Könnte man jetzt noch erweitern mit anderen Logiken oder einen entsprechenden KNX-Wert auf den Bus senden, bzw. einen HTTP-Endpoint bereitstellen, damit sich der Gekko den Präsenzwert abholen kann.

Wäre aber schön wenn mir dazu jemand Rückmeldung geben könnte.

Nun zum Flow:

Im Function-Node "Config - alle Geraete" sind die zu pingenden Geräte hinterlegt. Ich habe hier auch noch mein TV-Gerät mit aufgenommen, da die LG-Geräte nur eine WLAN-Verbindung haben, wenn Sie an sind.
Folgende Konfigurationskeys:

name = Der Klartextname des Geräts
type = die Kategorie des Geräts
host = der zu pingende Host als DNS-Name oder IP
udp_packet = true|false (soll ein UDP-Paket verschickt werden?)
udp_port = zu welchem Zielport soll das UDP-Paket geschickt werden? ich verwende einfach 1234 -> die Daten werden eh nicht verarbeitet
ping_delay = Zeit in Millisekunden bis zum Ping nach dem UDP-Paket

Sollte eigentlich fast selbsterklärend sein.

Das ganze Ergebnis wird dann im globalen Kontext abgespeichert, in einem Objekt "presence" und gegliedert nach den Typen und Namen der Geräte.
Mit dem aktuellen Status (state), wobei true=anwesend, false=abwesend
dem Zeitstempel des letzten Tests (lastStored)
und dem Zeitstempel des letzten Statuswechsels (lastChanged)

Ausserdem gibts dazu eine kleine Übersicht im Node-Red-Dashboard mit einer Tabelle und ein paar Status-LEDs, der Bereich "Ausgabe im Dashboard" kann aber einfach weggelassen werden.

Damit werde ich mir jetzt eine Gesamt-An-Abwesenheit bauen nach dem Motto:

Hat sich der Status der Handys zuletzt vor mehr als 30 Minuten auf "false" geändert, sind die Lichter alle aus und ist der TV ebenfalls seit mindestens 30 Minuten aus, dann Abwesenheit=true.
Lass den Staubsauber fahren.
Ist irgendein Präsenzstatus == true dann Abwesenheit=false, Staubsauger zurück auf die Ladestation.

Irgendwie so nach dem Motto, es könnte ja mal sein, dass man gemütlich TV schaut und die Handys sind aus, dann würde auch das mit einfließen.

Vielleicht könnte das mal jemand probeweise bei sich laufen lassen, ob es auch bei anderen Modellen und Geräten funktioniert.

Flow findet ihr im Anhang in der Flow.txt


Angehängte Dateien Thumbnail(s)
       

.jpg   NR3.JPG (Größe: 27,4 KB / Downloads: 160)
.txt   Flow.txt (Größe: 14,05 KB / Downloads: 22)


Nachrichten in diesem Thema
Anwesenheit, Präsenz über NodeRed und Ping - von Bluescreen - 08.10.2021, 11:24

Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Zisternenfüllstand über Nodered an MyGekko Matthias 12 12.210 01.05.2023, 19:55
Letzter Beitrag: Matthias

Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste