Hallo FHEMisten,
Benutzt man modifyTimeSpec bei einem Zeitgeber (at) zur Berechnung der neuen Triggerzeit, so ist die Zeitspanne doppelt so groß wie gewünscht.
Ich bin in diesem Forum schon an anderer Stelle auf ein ähnliches Problem gestoßen.
Als Lösung wurde das neue Attribut computeAfterInit eingeführt.
Das erweist sich aber im vorliegenden Fall als wirkungslos.
Im gezeigten Beispiel wird die neue Zeit auf +1 Minute (rel.) festgelegt, aber danach steht Next auf 2 Minuten später.
Hier die Internals mit bzw ohne computeAfterInit
Internals:
CFGFN
COMMAND set at_test modifyTimeSpec 00:01:00
DEF +*00:01:00 set at_test modifyTimeSpec 00:01:00
NAME at_test
NR 24630
NTM 18:36:58
PERIODIC yes
RELATIVE yes
REP -1
STATE Next: 18:36:58
TIMESPEC 00:01:00
TRIGGERTIME 1504543018.51374
TRIGGERTIME_FMT 2017-09-04 18:36:58
TYPE at
Readings:
2017-09-04 18:34:58 state Next: 18:36:58
Attributes:
computeAfterInit 1
--------------------------------------------------------------------
Internals:
CFGFN
COMMAND set at_test modifyTimeSpec 00:01:00
DEF +*00:01:00 set at_test modifyTimeSpec 00:01:00
NAME at_test
NR 24630
NTM 18:35:12
PERIODIC yes
RELATIVE yes
REP -1
STATE Next: 18:35:12
TIMESPEC 00:01:00
TRIGGERTIME 1504542912.79035
TRIGGERTIME_FMT 2017-09-04 18:35:12
TYPE at
Readings:
2017-09-04 18:33:12 state Next: 18:35:12
Attributes:
computeAfterInit 0
Mache ich etwas falsch, oder liegt ein Bug vor?
ZitatMache ich etwas falsch, oder liegt ein Bug vor?
Falsch wuerde ich nicht sagen, aber ungewoehnlich, da modifyTimepec nicht dazu gedacht ist, aus dem gleichen at heraus ausgefuehrt zu werden.
Beim Ausfuehren des at Befehls wird zunaechst via modifyTimeSpec die naechste Ausfuehrungszeit mit jetzt+1min berechnet. Danach wird die at-Definition analysiert, und wg +*00:01:00 wird wieder eine Minute draufaddiert, macht in der Summe jetzt+2 Minuten. Ich wuerde sagen, das ist richtig so.
Zitat von: rudolfkoenig am 05 September 2017, 19:32:28
... ungewoehnlich, da modifyTimepec nicht dazu gedacht ist, aus dem gleichen at heraus ausgefuehrt zu werden.
Hallo Rudolf,
Danke für deine Antwort. Jetzt weiß ich wenigstens, warum das Ergebnis so ist.
Ich nutze
modifyTimeSpec in einer komplexen Zufallszeit-Routine.
Wegen des Problems setze ich jetzt nur die Hälfte der beabsichtigten Zeitspanne ein.
Damit funktioniert es jetzt zwar, aber ich bin der Meinung, dass eine in ein Modul eingebaute Funktionalität auch unter ungewöhnlichen Bedingungen funktionieren sollte.
Grüße
Klaus
Zitat von: DocCyber am 04 September 2017, 18:56:07
Benutzt man modifyTimeSpec bei einem Zeitgeber (at) zur Berechnung der neuen Triggerzeit, so ist die Zeitspanne doppelt so groß wie gewünscht.
Zitat von: DocCyber am 05 September 2017, 20:07:38
Wegen des Problems setze ich jetzt nur die Hälfte der beabsichtigten Zeitspanne ein.
sicher das das mit doppelt (bzw. hälfte) immer passt??
wenn ich mir rudis erklärung durchlese, ist das eher die summe aus beiden.
sprich wenn du die werte nicht gleich setzt in modifytimespec und in der at-def, dann kommt da nicht wirklich das doppelte raus.
(bei dir passt es dann wohl, da du vmtl. immer die selben werte verwendest?!)
ob das verhalten richtig oder falsch oder doch zu ungewöhnlich ist, kann ich dir leider nicht beantworten.
Grüße
Nils
Hi Nils,
bei mir passt es mit der Hälfte.
Ob das generell so ist, müsstest du vielleicht einfach mal ausprobieren,
ich glaube ja...