Das habe ich probiert - nix hat funktioniert
CommandRef:
<timespec> is either HH:MM, HH:MM:SS or {perlfunc()}. perlfunc must return a string in timedet format. Note: {perlfunc()} may not contain any spaces or tabs.
Fhem-Forum:
(https://forum.fhem.de/index.php?topic=91625.msg841269#msg841269)
GetTimeSpec akzeptiert nur die HH:MM:SS Variante, dafuer unterstuetzt es auch Perl.
PerlCode:
{strftime("%T",localtime(time_str2num($today."T".$hms)+30*60));;}
gives eg.:
13:06:02
defmod PumpStop at {strftime("%T",localtime(time_str2num($today."T".$hms)+30*60));;}
gives (short answer):
Usage: define at [timespec or datespec]
(long answer)
Wrong timespec {strftime("%T",localtime(time_str2num($today."T".$hms)+30*60));: either HH:MM:SS or {perlcode}
Mach das ;; weg oder erstelle erst das at Device und modifizierende dann
Ich sag mal: Dein Code liefert bei mir:
ZitatUsage: define <name> at [timespec or datespec] <command>
Eine entsprechnde Abwandlung
defmod PumpStop at {strftime("%T",localtime(time_str2num($today."T".$hms)+30*60))} {}läuft ohne Fehler - es tut nur erstmal nix.
Ein späteres
defmod PumpStop at {strftime("%T",localtime(time_str2num($today."T".$hms)+30*60));;}läuft sogar, das ";" wird ignoriert. Es ist aber total überflüssig.
Ich sag mal so...
Das hier:
localtime(time_str2num($today."T".$hms)+30*60)
ist doch Quatsch, wenn es nur darum geht, 30 Minuten draufzurechnen.
defmod PumpStop at +00:30:00 {mache irgendwas}
Und wenn man es doch - aus welchen Gründen auch immer - "ausrechnen" will, dann kann man das so machen:
defmod PumpStop at {strftime("%T",localtime(time()+30*60))} {mache irgendwas}
Danke @Betateilchen!
Das habe ich nicht gewusst/gecheckt, dass man zu
localtime(time())einfach so addieren kann.
Die ganzen Rumrechnereien mit
localtime(time_str2num($today."T".$hms))funktionieren jedenfalls (bei mir) nicht.
Und - das das eigtl. Quatsch ist - stimmt zwar, aber in meinem Garten ist es ausnahmsweise nötig... - warum auch immer!