Zeitberechnung im Bedingungsteil aus einem Reading

Begonnen von rabehd, 09 März 2019, 14:40:12

Vorheriges Thema - Nächstes Thema

rabehd

Hallo zusammen,

ich habe einen Dummy (WeckerRT), der mehrere Usereadings (u.a. aWeckTime) enthält in denen jeweils eine Unixzeit steht. Eine normale Uhrzeit als Reading habe ich verworfen, da ich im DOF mit den Zeiten rechnen will und so auch Zeiten am Vortag entstehen.
Im Dummy sind Wecker-Zeiten (incl. Tage) hinterlegt, die Heizung, Licht... zu bestimmten Zeiten schalten sollen.

Wenn ich das DOIF anlege, dann wird der Zeitpunkt richtig berechnet.
Setzte ich das Reading neu, dann wird das DOIF nicht berechnet. Auch nicht mit checkall.
Im Event-Monitor erscheint aber der Dummy mit seinen Readings.
Editiere ich das DOIF, dann erfolgt eine korrekte Neuberechnung.

Ich habe das DOIF mal reduziert auf das Minimum. Keine Änderung.

Zitat([({strftime("%H:%M",localtime([WeckerRT:aWeckTime]))})])({Log 3, "Testwecker"})

Wo ist mein Fehler?
Auch funktionierende Lösungen kann man hinterfragen.

Ellert

Ich kann das Verhalten nicht nachvollziehen, alles funktioniert korrekt mit
defmod tber DOIF ([({strftime("%H:%M",localtime([du1:aWeckTime]))})])({Log 3, "Testwecker"})
attr tber do always

defmod du1 dummy


und setzen des Dummy mit
setreading du1 aWeckTime {(time+100)}

rabehd

So funktionert es auch bei mir.  :-\ Mit setreading über die Kommandozeile, aber ich setze die Readings über ein notify.  >:(
Mit Deinem Beitrag konnte ich das eingrenzen und neu im Forum suchen. Die Lösung habe ich hier gefunden: https://forum.fhem.de/index.php?topic=53099.0

Aus fhem("setreading " . $NAME . " aWeckTime " . $WZ); im notify wurde fhem("sleep 3;setreading " . $NAME . " aWeckTime " . $WZ);
So scheint es zu funktionieren.
Auch funktionierende Lösungen kann man hinterfragen.