Wieder einmal: at mit perl-timespec fails

Begonnen von robw, 17 August 2026, 13:01:25

Vorheriges Thema - Nächstes Thema

robw

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}

Guybrush

Mach das ;; weg oder erstelle erst das at Device und modifizierende dann

Otto123

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.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle

aktives Mitglied des FHEM e.V. (Technik)

betateilchen

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}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

robw

#4
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!