Hallo,
habe folgendes Problem:
ein at Internals:
CFGFN
COMMAND {
fhem 'set sz_rolladen off';
}
DEF *{ReadingsVal("dSZRolladenAuf","state","00:01:00")} {
fhem 'set sz_rolladen off';
}
NAME at_SZ_RolladenAuf
NR 949
NTM 05:00:00
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 05:00:00
TIMESPEC {ReadingsVal("dSZRolladenAuf","state","00:01:00")}
TRIGGERTIME 1454385600
TRIGGERTIME_FMT 2016-02-02 05:00:00
TYPE at
Readings:
2016-02-01 09:30:00 state Next: 05:00:00
Attributes:
room Rolladen,SZ
Wird über einen Dummy dSZRolladenAuf getriggert. Dieser Dummy wird täglich aufgrund von verschiedenen Dingen (Urlaubs-Kalender etc) um 00:10:00 aktualisiert:
Internals:
CFGFN
COMMAND { if((ReadingsVal("dUrlaub","state","0") eq "1") or ($we)) { fhem("set dSZRolladenAuf 09:30:00") } else { fhem("set dSZRolladenAuf 05:00:00") }}
DEF *00:10:00 { if((ReadingsVal("dUrlaub","state","0") eq "1") or ($we)) { fhem("set dSZRolladenAuf 09:30:00") } else { fhem("set dSZRolladenAuf 05:00:00") }}
NAME at_UrlaubZeit
NR 775
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 00:10:00
TIMESPEC 00:10:00
TRIGGERTIME 1454368200
TRIGGERTIME_FMT 2016-02-02 00:10:00
TYPE at
Readings:
2016-02-01 20:30:41 state Next: 00:10:00
Attributes:
room Kalender
Allerdings führt sich das at an dem Tag, an dem der Dummy geändert wird noch mit der alten Uhrzeit aus. Nach der Ausführung wird dann das at für den folgenden Tag auf den aktuellen Wert des Dummies gesetzt.
Weiß jemand, wie ich at dazu bekomme, sich nach Änderung des Dummys zu aktualisieren? Aligntime scheint es ja nicht zu sein, da das at nicht als relativ definiert ist - oder verstehe ich diese Mechanik falsch?
Danke im Voraus!
Pula
Zitat von: pula am 01 Februar 2016, 21:06:49
Hallo,
habe folgendes Problem:
ein at Internals:
CFGFN
COMMAND {
fhem 'set sz_rolladen off';
}
DEF *{ReadingsVal("dSZRolladenAuf","state","00:01:00")} {
fhem 'set sz_rolladen off';
}
NAME at_SZ_RolladenAuf
NR 949
NTM 05:00:00
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 05:00:00
TIMESPEC {ReadingsVal("dSZRolladenAuf","state","00:01:00")}
TRIGGERTIME 1454385600
TRIGGERTIME_FMT 2016-02-02 05:00:00
TYPE at
Readings:
2016-02-01 09:30:00 state Next: 05:00:00
Attributes:
room Rolladen,SZ
Wird über einen Dummy dSZRolladenAuf getriggert. Dieser Dummy wird täglich aufgrund von verschiedenen Dingen (Urlaubs-Kalender etc) um 00:10:00 aktualisiert:
Internals:
CFGFN
COMMAND { if((ReadingsVal("dUrlaub","state","0") eq "1") or ($we)) { fhem("set dSZRolladenAuf 09:30:00") } else { fhem("set dSZRolladenAuf 05:00:00") }}
DEF *00:10:00 { if((ReadingsVal("dUrlaub","state","0") eq "1") or ($we)) { fhem("set dSZRolladenAuf 09:30:00") } else { fhem("set dSZRolladenAuf 05:00:00") }}
NAME at_UrlaubZeit
NR 775
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 00:10:00
TIMESPEC 00:10:00
TRIGGERTIME 1454368200
TRIGGERTIME_FMT 2016-02-02 00:10:00
TYPE at
Readings:
2016-02-01 20:30:41 state Next: 00:10:00
Attributes:
room Kalender
Allerdings führt sich das at an dem Tag, an dem der Dummy geändert wird noch mit der alten Uhrzeit aus. Nach der Ausführung wird dann das at für den folgenden Tag auf den aktuellen Wert des Dummies gesetzt.
Weiß jemand, wie ich at dazu bekomme, sich nach Änderung des Dummys zu aktualisieren? Aligntime scheint es ja nicht zu sein, da das at nicht als relativ definiert ist - oder verstehe ich diese Mechanik falsch?
Danke im Voraus!
Pula
Du könntest mit einem notify auf die Änderung des Dummys reagieren und mit defmod die Definition des at´s ändern.
Beim DOIF-Modul wird dagegen die angegebene Zeit automatisch sofort bei Änderung des Dummys aktualisiert, da muss man gar nichts machen. siehe: http://fhem.de/commandref_DE.html#DOIF_Indirekten_Zeitangaben
Gruß
Damina
Ich wuerde statt den dummy direkt das at modifizieren:
define at_SZ_RolladenAuf at *05:00 set sz_rolladen off
define at_UrlaubZeit at *00:10 { fhem("modify at_SZ_RolladenAuf ".((ReadingsVal("dUrlaub","state","0") or $we) ? "*09:30": "*05:00") }
Hallo,
super, vielen Dank für die hilfreichen Antworten!
Ich werde es mal so machen, wie der Chef (Rudi) es vorschlägt ;-)
Bei der Gelegenheit: An dieser Stelle mal VIELEN DANK für das tolle Projekt fhem und die unermüdliche Weiterentwicklung!
Zum Verständnis hätte ich aber trotzdem noch eine Frage:
Wie funktioniert das mit der Aktualisierung von at eigentlich? Wird das immer nur bei Ausführung auf den nächsten Termin aktualisiert oder beim fhem-start, oder gibt es da auch zb einmal am Tag einen Zeitpunkt?
ZitatWird das immer nur bei Ausführung auf den nächsten Termin aktualisiert
ja, und by define/modify.
Alles, klar, danke für die Aufklärung! :)