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!
Titel: Aw: Wieder einmal: at mit perl-timespec fails
Beitrag von: betateilchen am 17 August 2026, 18:24:53
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...