PRESENCE cover version - anderer Ansatz basierend auf aktuellem Code

Begonnen von martinp876, 23 Dezember 2020, 14:38:45

Vorheriges Thema - Nächstes Thema

bmwfan

Danke für die schnellen Reaktionen.

Wenn die Funktion korrekt (Absence) implementiert ist und nur die Doku nicht korrekt war, frage ich mich warum bei ThresholdAbsence == 5 dieses Verhalten auftritt

13:20:12  Pixel-8 abgemeldet (5 GHz) bei FritzRep-1200AX-Garage
13:20:22  Pixel-8 abgemeldet (2,4 GHz) bei FritzRep-1200AX-Garage
13:21:04  Pixel-8 angemeldet (2,4 GHz) bei FritzRep-1200AX-Garage
13:21:24  Pixel-8 abgemeldet bei FritzRep-1200AX-Garage
13:22:42  Pixel-8 abgemeldet (5 GHz) bei FritzRep-1200-Terrasse
13:23:24  Pixel-8 abgemeldet (5 GHz) bei FritzRep-3000-WZ, IP ---

Zeitgleich zeigt das PRESENCE2-Device (lan-ping, IP-basiert) genau in diesem Fenster einen Fehlalarm:

lastAppear:    2026-09-22 12:12:40
lastDisappear:  2026-09-22 13:22:41  <- 1 Sekunde vor der Abmeldung an der Terrasse im FritzBox-Log

34 Sekunden später ist das Device wieder "present", das Handy war die ganze Zeit im Haus.

Oder war zum gestrigen Zeitpunkt bzw. in der verwendeten Version die Implementierung nicht korrekt?
Synology DS720+ mit Docker-Container und Haupt-FHEM, HM-LAN, Jalousienaktoren HmWired, Shelly-Devices; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

JoWiemann

Zitat von: bmwfan am 23 September 2026, 16:11:26Oder war zum gestrigen Zeitpunkt bzw. in der verwendeten Version die Implementierung nicht korrekt?

Ja, da ist noch etwas unschön.

@Robert, in der Version im Post: https://forum.fhem.de/index.php?msg=1369402 hakt es auch noch. Bin dran.

Grüße Jörg
Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

bertl

Zitat von: bmwfan am 23 September 2026, 16:11:26Oder war zum gestrigen Zeitpunkt bzw. in der verwendeten Version die Implementierung nicht korrekt?

Gestern hat sich der ThresholdAbsence-Counter auch dann erhöht, wenn das Device "present" war.
Falls dann der ThresholdAbsence-Counter zufällig auf 4 stand als das einmalige "absent" kam, wurde das "lastDisappear" gesetzt und der "state" ging auf "absent", obwohl das Attribut ThresholdAbsence auf 5 war und nur 1 "absent" kam.

bertl

#333
Zitat von: JoWiemann am 23 September 2026, 16:43:30@Robert, in der Version im Post: https://forum.fhem.de/index.php?msg=1369402 hakt es auch noch. Bin dran.

Ja ich habe es bemerkt, das "presence" toggelt zwischen "present" und "maybe present"

Meine Version (siehe Anhang) hat doch schon funktioniert, warum verschlimmbessern?

JoWiemann

Hallo Robert, hallo bmwfan,

anbei eine neue Version. Jetzt sollte es passen. Die sub wird nur noch aufgerufen, wenn tatsächlich notwendig. Somit sollten die von Euch richtigerweise gemeldeten Erscheinungen nicht mehr auftreten.

Grüße Jörg
Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

JoWiemann

Zitat von: bertl am 23 September 2026, 17:15:37Meine Version (siehe Anhang) hat doch schon funktioniert, warum verschlimmbessern?

Das "verschlimmbessern" war "nur" ein falscher Aufruf von ReadingsVal. Anstatt $name hatte ich $hash übergeben.

Grundsätzlich halte ich es nicht für richtig sub's aufzurufen, wenn ich vorher feststellen kann, dass der Aufruf nicht notwendig ist. Das habe ich jetzt eingebaut.

Grüße Jörg
Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

bertl

Der "appearCnt" passt noch nicht, bleibt immer 0.
Ich denke, dass das jeweilige if beim Erhöhen zuviel ist, nachdem present und absent ja getrennt wurden!

JoWiemann

Zitat von: bertl am 23 September 2026, 17:43:18Der "appearCnt" passt noch nicht, bleibt immer 0.
Ich denke, dass das jeweilige if beim Erhöhen zuviel ist, nachdem present und absent ja getrennt wurden!

Hallo Robert,

ihr zwingt mich wirklich mich da tiefer rein zu wühlen. Dabei habe ich gerade noch zwei "alte" Unschönheiten gefunden.

Zu "appearCnt". Ich würde das jetzt für "absent" auskommentieren. Oder soll ich ein "disappearCnt" hinzufügen?

Grüße Jörg
Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

JoWiemann

Hallo,

anbei eine neue Version. Ein "disappearCnt" habe ich erst einmal nicht eingebaut.

Grüße Jörg
Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

bmwfan

Hab das neue Modul einmal geladen. Mal sehen, ob ie Anwesenheitserkennung bei den Androids nun besser geht.

Danke
Synology DS720+ mit Docker-Container und Haupt-FHEM, HM-LAN, Jalousienaktoren HmWired, Shelly-Devices; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

bertl

Leder funktioniert folgende Situation noch nicht:

Ausgangslage: Die Verbindung funktioniert und state ist somit present.
Wenn die Verbindung für weniger Zyklen verloren geht als der thresholdAbsence Wert ist und dann wieder funktioniert, steht das gesamte State-Prozessing.
Umgekehrt ist es das gleiche!

Der Grund ist die if-Abfrage beim Aufrum vom State-Prozessing, da in diesem Fall beide Werte gleich sind und somit nichts passiert.
PRESENCE2_ProcessState($hash, $state) if ( ReadingsVal($name, "state", "") ne $state );
Gruß, Robert

JoWiemann

Hallo Robert,

danke für den Hinweis. Ich habe eine Idee, wie ich das in den Griff bekomme. Wird aber morgen werden.

Grüße Jörg
Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

JoWiemann

Hallo Robert,

was ich mir überlegt habe funktioniert. Allerdings wird mit dieser Lösung der Status mit dem nächsten Durchlauf gewechselt. Berücksichtig somit nicht ein gesetztes Threshhold. Ist das so ok oder soll ich das noch anpassen?

Grüße Jörg
Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

bertl

Ich denke, dass das nicht gut ist, weil dann kann man das ganze Threshold-Handling vergessen.

Genau darum geht es ja, dass der Status sich erst nach dem abgelaufenen Threshold ändert.