[GELÖST] at mit dummy in Zeit - Aktualisierungszeitpunkt

Begonnen von pula, 01 Februar 2016, 21:06:49

Vorheriges Thema - Nächstes Thema

pula

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
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

Damian

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

 
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rudolfkoenig

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") }

pula

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?
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

rudolfkoenig

ZitatWird das immer nur bei Ausführung auf den nächsten Termin aktualisiert
ja, und by define/modify.

pula

fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram