FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: slor am 25 Januar 2021, 15:50:29

Titel: Doif Problem mit der Auswertung von TimeStamps
Beitrag von: slor am 25 Januar 2021, 15:50:29
Hallo zusammen,

ich habe mir eine Fenster-Auf Warnung gebaut, die nach 10 Minuten eine Telegram Nachricht senden und das für 3 mal wiederholt.
In der Nachricht wird auch die Zeit seit dem Setzen des state TimeStamps (Öffnen des Fensters) gesendet.
Es kommt relativ häufig vor, dass der Timestamp sich verändert, bzw. während der Laufzeit aktualisiert wird. Dann bekomme ich nach 20 Minuten eine Meldung "Das Fenster ist seit 3 Minuten offen"

Das sieht so aus und funktioniert bis auf das Time Stamp Problem sehr gut:
di_tg_KG_Z1_FK_Fenster_auf_Zeit DOIF ([KG_Z1_FK:state] eq "open" and [dm_tg_notification:state] eq "on") (set Telegram_Bot message @xxxx Das Fenster in der Waschküche ist seit {(int([KG_Z1_FK:state:sec] / 60))} Minuten offen)
DOELSE ()
attr di_tg_KG_Z1_FK_Fenster_auf_Zeit repeatcmd 600
attr di_tg_KG_Z1_FK_Fenster_auf_Zeit repeatsame 3
attr di_tg_KG_Z1_FK_Fenster_auf_Zeit wait 601


Da ich das nicht abstellen kann, habe ich mir überlegt, beim Starten des Doif ein Reading zu schreiben und diesen Timestamp auszuwerten.
Allerdings scheitere ich damit aktuell.
Auch bin ich mir nicht sicher, ob ich repeatcmd und repeatsame richtig gesetzt habe.

So habe ich es ohne Erfolg umgebaut:

([KG_Z1_FK:state] eq "open" and [dm_tg_notification:state] eq "on")
(setreading $SELF state_timestamp 1)
(set Telegram_Bot message @xxx Das Fenster in der Waschküche ist seit {(int([$self:state_timestamp:sec] / 60))} Minuten offen)

DOELSEIF ([KG_Z1_FK:state] eq "closed")
(setreading $SELF state_timestamp 0)

DOELSE ()

attr di_tg_KG_Z1_FK_Fenster_auf_Zeit_test repeatcmd 0:600
attr di_tg_KG_Z1_FK_Fenster_auf_Zeit_test repeatsame 1:3
attr di_tg_KG_Z1_FK_Fenster_auf_Zeit_test wait 0:601


Ich möchte, dass das der Zeitstempel des Reading state_timestamp einmalig beim Öffnen des Fensters (triggern des doif) gesetzt wird. Dazu schreibe ich einfach eine 1 in das Reading.
Der zweite Befehl soll dann alle 10 Minuten getriggert werden, max 3 mal und immer den Zeitstempel von state_timestamp zur Berechnung hernehmen.

Sobald das Fenster geschlossen wird, soll der DOELSEIF loslegen und das state_timestamp auf 0 setzen und den Timer stoppen.

Aktuell ist es so, dass state_timestamp auf 1 steht, aber kein Timer gestartet wird. Wird das Fenster geschlossen ist state_timestamp 1 wie es sein soll.

Was habe ich übersehen?
Titel: Antw:Doif Problem mit der Auswertung von TimeStamps
Beitrag von: rabehd am 25 Januar 2021, 16:37:55
ZitatEs kommt relativ häufig vor, dass der Timestamp sich verändert, bzw. während der Laufzeit aktualisiert wird.
Wieso?
ist das nicht ein Fall für event-on-update-reading und event-on-change-reading am Fenstersensor?
Titel: Antw:Doif Problem mit der Auswertung von TimeStamps
Beitrag von: Damian am 25 Januar 2021, 17:02:48
Wenn sich ein Timestamp ändert, dann ändert sich normalerweise auch der Inhalt, dieses Ereignis sollte auch ein Event liefern.

Dann brauchst du an deinem DOIF gar nichts ändern, denn dann wechselt das DOIF den Zustand in cmd2 und die Benachrichtigung wird unterbrochen.

Titel: Antw:Doif Problem mit der Auswertung von TimeStamps
Beitrag von: slor am 25 Januar 2021, 20:15:50
EventOnChange Reading ist zu einfach 😉
Scheinbar aktualisiert der Kontakt ab und an den state mit dem gleichen Wert. Das scheint das doif nicht dazu zu bringen den Timer abzubrechen. Habe das Phänomen bei allen 21 Kontakten im Haus.
Titel: Antw:Doif Problem mit der Auswertung von TimeStamps
Beitrag von: Damian am 25 Januar 2021, 20:49:55
Zitat von: slor am 25 Januar 2021, 20:15:50
EventOnChange Reading ist zu einfach 😉
Scheinbar aktualisiert der Kontakt ab und an den state mit dem gleichen Wert. Das scheint das doif nicht dazu zu bringen den Timer abzubrechen. Habe das Phänomen bei allen 21 Kontakten im Haus.

Ich dachte, dass er bei closed abbrechen soll.
Titel: Antw:Doif Problem mit der Auswertung von TimeStamps
Beitrag von: slor am 25 Januar 2021, 21:18:32
Tut er ja auch.
Lediglich die Berechnung der Fenster auf Zeit vom Time Stamp des Kontakt führt zu schrägen Meldungen. Wenn der Time Stamp nur bei Änderungen aktualisiert wird, sollte das passen. Ich teste das mal.
Titel: Antw:Doif Problem mit der Auswertung von TimeStamps
Beitrag von: rallye am 30 Januar 2021, 17:28:06
@slor
bist du an dieser Stelle weitergekommen ? Ich habe ein ähnliches Problem mit der Zeitberechnung. Bei den Shellies aktualisiert sich das auch alle 30 Sekunden, sodass eine Dauer seit power-on nicht wirklich berechnet werden kann.
Titel: Antw:Doif Problem mit der Auswertung von TimeStamps
Beitrag von: slor am 31 Januar 2021, 19:22:03
Noch nicht wirklich. Habe auch nach setzen der event-on-xxx Attribute auf den Geräten das Problem. Scheint nur bei hmccu Geräten aufzutreten.
Titel: Antw:Doif Problem mit der Auswertung von TimeStamps
Beitrag von: slor am 02 Februar 2021, 17:42:08
hier die Lösung: https://forum.fhem.de/index.php?topic=118429 (https://forum.fhem.de/index.php?topic=118429)