FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: Paul Guijt am 01 Februar 2022, 10:27:54

Titel: PRESENCE - lan-ping mit watchdog?
Beitrag von: Paul Guijt am 01 Februar 2022, 10:27:54
Hallo Alle,

Ich versuche die ständige Abwesenheit meiner Laptop zu überwachen mittels PRESENCE lan-ping.
Leider wacht er vielmahls auf für kurzem, und dass möchte ich herausfiltern.

Das Attribut presenceTimeout ist leider nur im Modus "event" anwendbar, also nicht mit 'lan-ping'. Gibt Modul PRESENCE ein alternativ?
Oder bleibt mir nur WATCHDOG?

Freundliche Grüße,
Paul
Titel: Antw:PRESENCE - lan-ping mit watchdog?
Beitrag von: MadMax-FHEM am 01 Februar 2022, 10:32:00
Äh, ich verstehe nicht genau was das Problem ist:

Zitat
Leider wacht er vielmahls auf für kurzem, und dass möchte ich herausfiltern.
?

Es gibt noch die Attribute: presenceThreshold und absenceThreshold

Aber ohne zu verstehen wo/was das Problem liegt/ist, schwer zu sagen, ob das in eine passende Richtung geht.

Gruß, Joachim
Titel: Antw:PRESENCE - lan-ping mit watchdog?
Beitrag von: Paul Guijt am 01 Februar 2022, 11:20:39
Hallo Joachim,

Deutsch ist nicht meine Muttersprache. Vielleicht ist ein bessere Umschreibung:
Leider wacht der Laptop oft sehr kurz auf, und das möchte ich herausfiltern.

Ich benütze die Abwesendheit in ein DOIF.

Sicher gibt es die andere Attribute, aber sie bieten nicht die Funktionalität, die ich suche.

Kann ich auch einen Watchdog in Perl programmieren im Rahmen der DOIF-Bedingung?

Grüß,
Paul
Titel: Antw:PRESENCE - lan-ping mit watchdog?
Beitrag von: MadMax-FHEM am 01 Februar 2022, 11:27:27
Also ich versuche mal zu verstehen:

der Laptop wacht auf und ist pingbar und soll aber NICHT pingbar sein (eigentlich)?

-> presenceThreshold sollte doch wirken? Es geht erst mal nach mybe-present und erst wenn Threshold-Anzahl auf present

Welche Sprache wäre besser?

Gruß, Joachim
Titel: Antw:PRESENCE - lan-ping mit watchdog?
Beitrag von: Otto123 am 01 Februar 2022, 11:40:34
Hallo Paul,

ich mache das auch mehrstufig, das ist ev. noch aus der Zeit wo Presence allein nicht soviel Möglichkeiten hatte.
Ich habe eine structure von presence Devices die in Summe meinen Status darstellen: ist ein present bin ich da.
Dies structure leite ich über ein DOIF (das wäre der Punkt den Du watchdog nennst). Das DOIF schaltet einen Dummy (würd ich heute anders machen, bin zu faul das zu ändern)
defmod di_Dev_Otto DOIF ([st_Dev_Otto] eq "absent")(set PersonOtto absent) DOELSEIF ([st_Dev_Otto] eq "present")(set PersonOtto present)
attr di_Dev_Otto room Status
attr di_Dev_Otto wait 300

Wenn "ich" da bin wird sofort auf present gesetzt, wenn ich verschwinde wird das 5 min verzögert. Wenn Du die Logik mit present und absent tauschst - ist es doch das was Du willst? 

Gruß Otto
Titel: Antw:PRESENCE - lan-ping mit watchdog?
Beitrag von: Paul Guijt am 01 Februar 2022, 11:47:16
Hallo Joachim,

Die Lampe sollte brennen falls der Laptop wirklich present ist, also wenn der Nützer es bedient.
Die Lampe sollte nicht brennen falls der Laptop nur kurzem present ist, also wenn er selbständig verbindung macht mit einer oder andere Server.
Present ist pingbar.

Mit presenceThreshold wird die Anzahl an Checks gezählt, welche in "present" resultieren müssen, bevor der Status der PRESENCE-Definition auf "present" wechselt. presenceThreshold = 1 ist die Standardwert. Bei presenceThreshold = 2 ist er nur beim zweiten Mal vorhanden. Das kann aber sehr lange dauern, wenn der Nutzer längere Zeit hinter dem Laptop sitzt und der Laptop zweimal hintereinander selbstständig hochfährt (z. B. in der Nacht), ergibt sich ein falsches ,,Present".

Besser wäre Niederländisch.

Gruß,
Paul
Titel: Antw:PRESENCE - lan-ping mit watchdog?
Beitrag von: Paul Guijt am 01 Februar 2022, 11:52:59
Hallo Otto,

Vielen Dank, das könnte die Lösung sein.

Mein zu kontrollierender DOIF basiert eigentlich auf drei PRESENCEs. Vielleicht kann ich die alle auf einen Schlag mitnehmen.

Zitat von: Otto123 am 01 Februar 2022, 11:40:34
Ich habe eine structure von presence Devices die in Summe meinen Status darstellen: ist ein present bin ich da.
Dies structure leite ich über ein DOIF (das wäre der Punkt den Du watchdog nennst). Das DOIF schaltet einen Dummy (würd ich heute anders machen, bin zu faul das zu ändern)
defmod di_Dev_Otto DOIF ([st_Dev_Otto] eq "absent")(set PersonOtto absent) DOELSEIF ([st_Dev_Otto] eq "present")(set PersonOtto present)
attr di_Dev_Otto room Status
attr di_Dev_Otto wait 300

Wenn "ich" da bin wird sofort auf present gesetzt, wenn ich verschwinde wird das 5 min verzögert. Wenn Du die Logik mit present und absent tauschst - ist es doch das was Du willst? 

Ich beabsichtige, meine endgültige Lösung hier zu berichten.

Grüße,
Paul
Titel: Antw:PRESENCE - lan-ping mit watchdog?
Beitrag von: MadMax-FHEM am 01 Februar 2022, 12:12:28
Aber ist das nicht das gleiche wie:

Presence-Check mit Interval auf 1min und Threshold (je nachdem ob man presence oder absence "verzögern" will) auf 5 setzen?

Dann müssen ja 5 presence-/absent kommen (->5min), bevor der Status tatsächlich umschlägt?

Oder verstehe ich da was nicht?

Aber Anwesenheit ist immer nicht ganz einfach...

Ich hatte für meine eigene Anwesenheit zunächst auch LAN-Ping auf's Handy.
Dann kamen irgendwelche "Sleep-Einstellungen" des Handy-WLANs -> hping3 (hat einige Zeit gut funktioniert aber naja)
Dann mal mit Unifi-Presence beschäftigt, mir aber "zu träge"...

Dann hatte ich einen BT-Dongle: lief gut, bis Raspberry irgendwie Probleme mit BT hatte
Dann kam ein "Clone" der auch BT am Handy kann :)

Aktuell habe ich eine Structure (verm. ähnlich zu Otto ;)  ) aus BT-Dongle und BT-Handy

Absent: beides muss weg sein (zuverlässig, das tatsächlich weg)
Present: eines muss WIEDER da sein (schnelle erkennung, dass wieder da)

Funktioniert aktuell seit ca. 2 Jahren prima :)

Gruß, Joachim
Titel: Antw:PRESENCE - lan-ping mit watchdog?
Beitrag von: Otto123 am 01 Februar 2022, 13:15:44
Zitat von: Paul Guijt am 01 Februar 2022, 11:47:16
Besser wäre Niederländisch.
Ich habe zwar seit 35 Jahren Freunde in Hengelo, die sind auch der Meinung ich verstehe etwas Niederländisch - aberganz ehrlich ich habe es nicht geschafft :) Und meine Freunde sprechen so gut deutsch ;D

Eigentlich wäre die Lösung: Zu erkennen wenn Du den PC aufgeweckt hast, angemeldet bist, Bildschirm hell, oder Maus aktiv. Die Systeme erkennen das zwar, liefern aber nirgendwo den Status, habe ich zumindest nicht gefunden.

Verstehe ich richtig: Du willst eigentlich erkennen: der PC war nur kurz an -> tu nichts, ich war es nicht ... ?
Titel: Antw:PRESENCE - lan-ping mit watchdog?
Beitrag von: Paul Guijt am 01 Februar 2022, 13:28:40
Hallo Otto,

Zitat von: Otto123 am 01 Februar 2022, 13:15:44
Eigentlich wäre die Lösung: Zu erkennen wenn Du den PC aufgeweckt hast, angemeldet bist, Bildschirm hell, oder Maus aktiv. Die Systeme erkennen das zwar, liefern aber nirgendwo den Status, habe ich zumindest nicht gefunden.

Verstehe ich richtig: Du willst eigentlich erkennen: der PC war nur kurz an -> tu nichts, ich war es nicht ... ?

Genau. Ich habe WINCONNECT versucht, aber ich darf WINCONNECT nicht installieren auf dem Laptop und auf mein Desktop startet winconnect nicht richtig nach ein hibernate.

Grüße,
Paul
Titel: Antw:PRESENCE - lan-ping mit watchdog?
Beitrag von: MadMax-FHEM am 01 Februar 2022, 13:46:45
Naja aber für nur kurz "da" oder "nicht [mehr] da" sind doch genau die Threshold-Attribute...

Weil die ja dafür sorgen, dass eben "da" (also ping "erfolgreich") erst kommt, wenn die "kompltte Ping-Abfrage" x-mal geklappt hat (also frühestens nach x-mal Intervall). Sollte der ping vorher nicht mehr klappen -> kein "anwesend"...

(abwesend entsprechend)

Allerdings ist das dann halt immer so "träge" (aber das wäre ja auch mit der DOIF-Lösung so?)...

Gruß, Joachim
Titel: Antw:PRESENCE - lan-ping mit watchdog?
Beitrag von: Otto123 am 01 Februar 2022, 14:19:07
Paul, da Du denkst presenceTimeout hilft Dir (ich habe da wenig Erfahrung mit) Du kannst natürlich experimentieren auch mit zwei devices:
"Schräge" Idee ;)
define notebook PRESENCE lan-ping 192.168.178.99 10 30
attr notebook event-on-change-reading state
define notebook2 PRESENCE event notebook:absent notebook:present
attr notebook2 presenceTimeout 5:00


Aber eigentlich macht presenceThreshold das Gleiche?