Folgendes Problem:
Ich habe in einem dummy du_Rollo_Zeit_ho_WE eine Zeit stehen, zu der die Rollläden hochgefahren werden sollen.
Ein anderer dummy du_Feiertag_morgen soll mit diesem Zeitpunkt gefüllt werden, wenn am nächsten Tag Feiertag ist.
Bisher rufe ich dieses DOIF kurz nach Mitternacht auf und es trägt die Zeit korrekt ein.
Nun möchte ich zusätzlich (DOELSEIF), dass bei einer manuellen Änderung des dummy du_Rollo_Zeit_ho_WE SOFORT eine Aktualisierung des dummy du_Feiertag_morgen erfolgt, und nicht erst bis kurz nach Mitternacht gewartet wird. Das DOIF soll also bei einer Änderung des dummys triggern. Irgendwie bekomme ich das aber nicht hin.
Mein (im DOELSEIF-Zweig leider nicht funktionierendes) DOIF:
([00:03] and (fhem("get Feiertage tomorrow") ne "none")) (set du_Feiertag_morgen [du_Rollo_Zeit_ho_WE])
DOELSEIF
([du_Rollo_Zeit_ho_WE:""] ) and (fhem("get Feiertage tomorrow") ne "none")) (set du_Feiertag_morgen [du_Rollo_Zeit_ho_WE])
DOELSE
([00:03]) (set du_Feiertag_morgen [du_Rollo_Zeit_ho])
Wie ist die Syntax korrekt?
Dein Konstrukt scheint etwas umständlich, indirekte Zeitangaben werden hier erklärt http://fhem.de/commandref_DE.html#DOIF_Indirekten_Zeitangaben
Einfacher geht es mit holiday2we und holiday http://fhem.de/commandref_DE.html#holiday , wenn Du Feiertage und freie Tage in der holiday-Datei pflegst
direkte Zeit
([rollo_auf_Werktags|8] or [rolo_auf_WE_Feiertag|7])
indirekte Zeit
([[rollo_auf_Werktags]|8] or [[rolo_auf_WE_Feiertag]|7])
In Deiner Definition ist ein Klammerfehler:
Zitat([du_Rollo_Zeit_ho_WE:""] ) and (fhem("get Feiertage tomorrow") ne "none"))
Danke Ellert,
aber das löst mein Problem nicht. Die schließende Klammer die zu viel war, kam beim Copy und Paste ins Forum mit, in meiner Installation ist die Klammersetzung korrekt.
Ich habe holiday2we im Einsatz und pflege über die Datei Feiertage.holiday meine Feiertage. Die Rollläden fahren auch wie gewünscht an den Werktagen und Feiertagen hoch und runter.
Ich möchte eine Anzeige realisieren, die mir (und vor allem anderen Hausbewohnern :-) ) anzeigt, wann morgen die Rollläden hochfahren werden (Prüfung ob FHEM weiß, dass morgen Feiertag ist). Dafür soll in den dummy du_Feiertag_morgen entweder die Hochfahrzeit für werktags oder die Hochfahrzeit für Feiertag/Wochenende eingetragen werden (vielleicht ist die Bezeichnung des Dummys blöd gewählt). Auch das funktioniert bereits. Nur eben derzeit nur gegen Mitternacht einmalig. Wenn jetzt aber jemand im dummy du_Rollo_Zeit_ho_WE die Zeit ändert (sagen wir mal von 8:00 auf 8:30), dann steht im dummy du_Feiertag_morgen immer noch 8:00 Uhr, weil mein DOIF gegen Mitternacht den Wert ausgelesen und dort eingetragen hat. Nun soll das DOIF mitbekommen, dass da jemand "gedreht" hat und den dummy sofort aktualisieren und nicht bis Mitternacht warten (denn da schläft derjenige, der "gedreht" hat wahrscheinlich schon und kann nicht sicher sein, wann er/sie morgen geweckt wird ;) )
hi,
ich bin mir nicht sicher, ob das funktioniert, aber probier mal anstatt
[du_Rollo_Zeit_ho_WE:""]
folgendes:
[du_Rollo_Zeit_ho_WE:?state.*]
EIDT: Wobei wie ich gerade im CommandRef gelesen habe, du schon die neuere Syntax verwendest und ich noch die alte. Ergebnis sollte aber das gleiche nicht funktionieren sein...
hast du bei dem Dummy evlt ein event-on-change* attribut gesetzt und schließt so versehentlich Events aus?
Zitat von: l2r am 02 Februar 2016, 13:26:52
ich bin mir nicht sicher, ob das funktioniert, aber probier mal
[du_Rollo_Zeit_ho_WE:?state.*]
Genau das war es. Damit funktioniert es. Danke!
Aber genau genommen hast du Recht, das ist die Syntax, die man laut CommandRef nicht mehr verwenden soll :o
Zitat von: l2r am 02 Februar 2016, 13:26:52
hast du bei dem Dummy evlt ein event-on-change* attribut gesetzt und schließt so versehentlich Events aus?
Nein, event-on-change ist hier nicht im Einsatz.
so sollte es auch laufen:
[du_Rollo_Zeit_ho_WE:"state.*"]
warum dann dein [du_Rollo_Zeit_ho_WE:""]
nicht funktioniert erschließt sich mir allerdings nicht, da der Trigger ja noch größer gefasst ist.
und denke ggf an ein "do always" da sonst nur eine einmalige Aktualisierung durchgeführt wird.
Zitat von: l2r am 02 Februar 2016, 13:56:42
so sollte es auch laufen:
[du_Rollo_Zeit_ho_WE:"state.*"]
warum dann dein [du_Rollo_Zeit_ho_WE:""]
nicht funktioniert erschließt sich mir allerdings nicht, da der Trigger ja noch größer gefasst ist.
und denke ggf an ein "do always" da sonst nur eine einmalige Aktualisierung durchgeführt wird.
1. "state.*" wäre das Gleiche wie "state", da kein $ angehängt wird, wie beim notify
2. "state" abzufragen ist vermutlich keine gute Wahl, da normalerweise state bei Events nicht vorkommt
Gruß
Damian
nur damit ich das richtig verstehe
[du_Rollo_Zeit_ho_WE:?state.*]
= [du_Rollo_Zeit_ho_WE:"state.*"]
= [du_Rollo_Zeit_ho_WE:"state"]
ist das richtig?
nur das ?state.* alte Syntax ist?
Zitat von: l2r am 02 Februar 2016, 17:58:33
nur damit ich das richtig verstehe
[du_Rollo_Zeit_ho_WE:?state.*]
= [du_Rollo_Zeit_ho_WE:"state.*"]
= [du_Rollo_Zeit_ho_WE:"state"]
ist das richtig?
nur das ?state.* alte Syntax ist?
ja und vollständigkeitshalber: ?state.* = ?state
Gruß
Damian
okay, danke
Dann versteh ich immer noch nicht, warum [du_Rollo_Zeit_ho_WE:""]
das nicht funktioniert. Weil "" triggert ja auf alle Events, einschließlich der, die state enthalten...
Zitat von: l2r am 02 Februar 2016, 18:03:50
okay, danke
Dann versteh ich immer noch nicht, warum [du_Rollo_Zeit_ho_WE:""]
das nicht funktioniert. Weil "" triggert ja auf alle Events, einschließlich der, die state enthalten...
Bei mir schon, es sei denn man arbeitet nicht mit der aktuellsten Version.
okay, dann schieb ich das mal auf die Version von @der_da
Somit hätte ein Update von DOIF bei ihm auch gereicht.
Alle Unklarheiten beseitigt. Danke
OKOKOK,
nach einem Update
und einem
shutdown restart
funktioniert nun auch die erste Variante ;D
DANKE! ;)