FHEM Forum

FHEM => Automatisierung => Thema gestartet von: robw am 17 August 2026, 13:01:25

Titel: Wieder einmal: at mit perl-timespec fails
Beitrag von: robw am 17 August 2026, 13:01:25
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}
Titel: Aw: Wieder einmal: at mit perl-timespec fails
Beitrag von: Guybrush am 17 August 2026, 13:08:04
Mach das ;; weg oder erstelle erst das at Device und modifizierende dann
Titel: Aw: Wieder einmal: at mit perl-timespec fails
Beitrag von: Otto123 am 17 August 2026, 13:38:51
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.
Titel: Aw: Wieder einmal: at mit perl-timespec fails
Beitrag von: betateilchen am 17 August 2026, 14:02:50
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}
Titel: Aw: Wieder einmal: at mit perl-timespec fails
Beitrag von: robw am 17 August 2026, 16:20:54
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!