[Gelöst] - Wie komme ich an das Tagesdatum

Begonnen von Superklaus, 14 Februar 2024, 12:18:28

Vorheriges Thema - Nächstes Thema

Superklaus

Hallo,
ich habe folgendes Device definiert:
defmod doif_Heizung_Urlaub DOIF (([doif_Anwesenheit_Handy_Caro:state] eq "present") or \
([doif_Anwesenheit_Handy_Leo:state] eq "present") or \
([doif_Anwesenheit_Handy_Petra:state] eq "present") or \
([doif_Anwesenheit_Handy_Klaus:state] eq "present"))\
   (set vitoconnect Urlaub_unschedule)\
DOELSEIF (([doif_Anwesenheit_Handy_Caro:state] eq "absent") and \
([doif_Anwesenheit_Handy_Leo:state] eq "absent") and \
([doif_Anwesenheit_Handy_Petra:state] eq "absent") and \
([doif_Anwesenheit_Handy_Klaus:state] eq "absent"))\
   ((set vitoconnect Urlaub_Start 2024-02-12)\
    (set vitoconnect Urlaub_Ende 2024-12-01))
attr doif_Heizung_Urlaub cmdState normal|urlaub
attr doif_Heizung_Urlaub room Heizungskeller

setstate doif_Heizung_Urlaub normal
setstate doif_Heizung_Urlaub 2024-02-14 11:08:27 Device doif_Anwesenheit_Handy_Caro
setstate doif_Heizung_Urlaub 2024-02-13 19:35:45 cmd 1
setstate doif_Heizung_Urlaub 2024-02-13 19:35:45 cmd_event doif_Heizung_Urlaub
setstate doif_Heizung_Urlaub 2024-02-13 19:35:45 cmd_nr 1
setstate doif_Heizung_Urlaub 2024-02-14 11:08:27 e_doif_Anwesenheit_Handy_Caro_state present
setstate doif_Heizung_Urlaub 2024-02-14 07:08:27 e_doif_Anwesenheit_Handy_Klaus_state present
setstate doif_Heizung_Urlaub 2024-02-14 11:03:27 e_doif_Anwesenheit_Handy_Leo_state present
setstate doif_Heizung_Urlaub 2024-02-14 08:08:27 e_doif_Anwesenheit_Handy_Petra_state absent
setstate doif_Heizung_Urlaub 2024-02-13 19:35:37 mode enabled
setstate doif_Heizung_Urlaub 2024-02-13 19:35:45 state normal
Funktioniert auch soweit. Aber:
statt
(set vitoconnect Urlaub_Ende 2024-12-01)möchte ich so etwas wie
(set vitoconnect Urlaub_Ende $today)haben, sprich dass das aktuelle Tagesdatum statt dem konstanten Text verwendet wird.
Klappt aber leider nicht, bei allen Versuchen, die ich unternommen habe, wird der Wert nicht verwendet, sondern der Programmtext.
Eigentlich sollte das doch sehr einfach sein, daher sorry schon einmal, wenn es wirklich eine blöde Frage ist.
Danke schon einmal für eure Hilfe
Klaus


rabehd

Auch funktionierende Lösungen kann man hinterfragen.

Superklaus

Hallo rabehd,
Danke erstmal für die schnelle Antwort.
Ich hatte schon lange gesucht, aber diese beiden Beiträge nicht gefunden.
Geholfen haben sie leider nicht: Wenn ich den Code so übernehme
(set vitoconnect Urlaub_Start {(localtime)})dann stürzt das Webinterface von FHEM ab, im Logfile finde ich nur die Zeile
Error parsing time at /usr/lib/x86_64-linux-gnu/perl/5.32/Time/Piece.pm line 598.Nach einem Neustart des Docker-Containers läuft dann alles wieder, natürlich ohne die Änderung.
Diese Fehler hatte ich gestern auch bei meinen Versuchen, habe also doch nicht alles falsch gemacht.
Ich nehme mal an, dass die Zeichenkette, die localtime ergibt, nicht sauber verarbeitet wird.

rabehd

Also {(localtime)} liefert schon mal nicht das Format welches Du oben angezeigt hast.
Hast Du absichtlich die Formatierung weggelassen?

Hast Du (set vitoconnect Urlaub_Start {(localtime)})in der Befehlszeile eingegeben oder im DOIF?

Wie wäre das?
https://forum.fhem.de/index.php?msg=735064
(set vitoconnect Urlaub_Start {(TimeNow)})ungetestet


Ich glaube Du musst an Deinen Suchen noch arbeiten. ;-)
Auch funktionierende Lösungen kann man hinterfragen.

Superklaus

Ich habs  :)
Es muss heissen
(set vitoconnect Urlaub_Start {(substr(TimeNow,0,10))})Dann wird das Tagesdatum passend generiert.
Vielen Dank für die Hilfe
Klaus

Otto123

Zitat von: Superklaus am 14 Februar 2024, 15:16:22Geholfen haben sie leider nicht: Wenn ich den Code so übernehme
Du musst weiter lesen und nicht den ersten Satz stumpf kopieren :)
Kurzform heute:
{(strftime("%F",localtime))}Oder in 14 Tagen
{(strftime("%F",localtime(time+60*60*24*14)))}
@rabehd er woll doch nur die Datumskette und nicht die gesamte Ausgabe von TimeNow!?

Zitat von: Superklaus am 14 Februar 2024, 18:09:27Dann wird das Tagesdatum passend generiert.
Viele Wege ... ;D
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Zitat von: Otto123 am 14 Februar 2024, 18:11:50{(strftime("%F",localtime(time+60*60*24*14)))}

{strftime("%F",localtime(time+DAYSECONDS*14))}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

@betateilchen Meine "Formel" war hier als "Erklärbär" gedacht ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Und meine "Formel" sollte lediglich eine perfomantere Variante Deines Vorschlags zeigen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!