FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: OliWee am 21 Juli 2018, 10:22:26

Titel: Zeitstempel eines Events
Beitrag von: OliWee am 21 Juli 2018, 10:22:26
Hi!

Ich überprüfe den state meines HM-SEC-SCo. Alle 15 Minuten soll per Telegram ausgegeben werden, wenn das Fenster noch offen ist:

defmod OG.Bad.Fenster CUL_HM 5F5D8D
attr OG.Bad.Fenster IODev CUL_0
attr OG.Bad.Fenster actCycle 002:50
attr OG.Bad.Fenster actStatus alive
attr OG.Bad.Fenster alias Fenster Bad oben
attr OG.Bad.Fenster autoReadReg 4_reqStatus
attr OG.Bad.Fenster devStateIcon closed:fts_window_1w@green open:fts_window_1w_open@red
attr OG.Bad.Fenster event-on-change-reading state, battery, alive
attr OG.Bad.Fenster event-on-update-reading alive
attr OG.Bad.Fenster expert 2_raw
attr OG.Bad.Fenster firmware 1.0
attr OG.Bad.Fenster model HM-SEC-SCo
attr OG.Bad.Fenster mqttName Fenster
attr OG.Bad.Fenster mqttRoom BadOben
attr OG.Bad.Fenster room 30_Bad,93_Homematic
attr OG.Bad.Fenster serialNr OEQ1430688
attr OG.Bad.Fenster subType threeStateSensor



defmod OG.Bad.Fenster.Msg DOIF ([OG.Bad.Fenster] eq "open") (set telebot message Das Fenster im oberen Bad ist seit mehr als {(int([OG.Bad.Fenster:state:sec] / 60))} Minuten offen)
attr OG.Bad.Fenster.Msg repeatcmd 900
attr OG.Bad.Fenster.Msg wait 900


Das Funktioniert auch soweit prächtig. Aber die Zeit, die per EG.Bad.Fenster:state:sec zurückgegeben wird, stimmt nicht.
Das Problem dürfte was mit dem zu tun haben:

attr OG.Bad.Fenster event-on-update-reading alive

Denn jedesmal, wenn ein "alive"-Event kommt, dann wird auch beim state eine neue Uhrzeit geschrieben, obwohl hier nichts passiert. In meinem Log ist folgendes zu sehen:
2018-07-21_09:52:41 OG.Bad.Fenster open
2018-07-21_10:04:52 OG.Bad.Fenster alive: yes


Und trotzdem steht in den rawDefinitions:
setstate OG.Bad.Fenster 2018-07-21 10:04:52 state open

Offensichtlich wird einfach das letzte Event des Geräts genommen und der Zeitstempel überall reingeschrieben. Ich kann mir nicht vorstellen, dass das so gewollt ist, oder??

Oli
Titel: Antw:Zeitstempel eines Events
Beitrag von: CoolTux am 21 Juli 2018, 10:28:01
Doch das ist es. Du kannst aber für state gerne
timestamp-on-change-reading setzen.
Titel: Antw:Zeitstempel eines Events
Beitrag von: OliWee am 21 Juli 2018, 10:30:45
Oh, das kannte ich noch gar nicht. Ist das neu?

Vielen Dank  :)
Titel: Antw:Zeitstempel eines Events
Beitrag von: CoolTux am 21 Juli 2018, 10:33:27
Ein bisschen, so 2 Jahre alt  ;D
Titel: Antw:Zeitstempel eines Events
Beitrag von: betateilchen am 21 Juli 2018, 13:05:01
Ich würde sowas vielleicht ohnehin eher über ReadingsAge() lösen.

Aber das gesamte Vorhaben ist für mich ohnehin unlogisch.

Angenommen:

10:10 Prüfung mit Ergebnis: Fenster ist offen = Meldung wird verschickt
10:15 Irgendjemand macht das Fenster zu
10:20 Irgendjemand macht das Fenster wieder auf
10:25 Prüfung mit Ergebnis: Fenster ist offen = Meldung wird verschickt

In diesem Fall ist es aber so, dass das Fenster nicht "immer noch" offen ist, sondern "wieder". Und das kann ja durchaus gewollt sein.