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!
Zitat von: robw am 17 August 2026, 16:20:54aber in meinem Garten ist es ausnahmsweise nötig... - warum auch immer!
Da wette ich dagegen.
Hättest Du mal die konkrete Anforderung beschrieben anstatt eine nicht funktionierende Lösung, hätte man Dich vielleicht auf einen einfachen Lösungsweg schubsen können.
Denn
Zitat von: robw am 17 August 2026, 16:20:54Das habe ich nicht gewusst/gecheckt, dass man zu
localtime(time())einfach so addieren kann.
deutet darauf hin, dass Du noch ein paar andere Dinge nicht kennen könntest, die Dir das Leben erleichtern.
Beispiel: Man kann nicht zu "localtime(time())" addieren, sondern nur zu "time()". Und dann wird "time()+x" an localtime() übergeben...