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!

betateilchen

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