aktuelle Zeit in dummy schreiben und in anderem DOIF auswerten

Begonnen von matkoh, 27 November 2025, 15:39:07

Vorheriges Thema - Nächstes Thema

matkoh

Hallo,

ich möchte (mit einem Homematic-Taster) die aktuelle Zeit in ein Dummy schreiben und das Reading des Dummy in einem anderen DOIF auswerten, das gelingt mir aber nicht. Der Sinn ist, nach einer festgelegten Zeit nach Drücken des Tasters eine Aktion (Radio einschalten) auszuführen.

Hier ein Ausschnitt des ersten DOIF, das den Dummy setzen soll mit verschiedenen Versuchen:
## 3
 DOELSEIF ([Matthias.Status_2:?SHORT])
  (set RolloStatus on, set Matthias_Aufgestanden {(TimeNow)}, setreading Matthias_Aufgestanden timestamp {(time)}, setreading Matthias_Aufgestanden time {(hms)}
set Matthias_Aufgestanden {(TimeNow)} ergibt eine formatierte Zeichenkette, z. B. 2025-11-27 14:38:46, das ist aber nicht als Zeit auswertbar.
setreading Matthias_Aufgestanden timestamp {(time)} ergibt einen Unix-Zeitstempel, der aber auch nicht als Zeit auswertbar ist.
setreading Matthias_Aufgestanden time {(hms)} ergibt den Fehler "Bareword "hms" not allowed while "strict subs" in use at..."

Hier ein Ausschnitt des 2. DOIF, der das vorher gesetzte Dummy auswerten soll:
## 5
 DOELSEIF ([Fruehstueck] eq "Kueche" and [([Matthias_Aufgestanden:timestamp] + 900)])
  (set Sonos_Kueche Volume 13, set Sonos_Kueche PlayURI ...)
Das ergibt den Fehler
error: Wrong timespec 1764250726.70788: either HH:MM:SS or {perlcode}
Das gleiche passiert bei [([Matthias_Aufgestanden] + 900)].

Im 1. DOIF habe ich auch versucht,
setreading Matthias_Aufgestanden time {$hms}zu setzen, dann wird einfach "{$hms}" in das Reading geschrieben.

Wie kann ich also mit Drücken des Tasters eine aktuelle Zeit in ein Dummy schreiben, in einem 2. DOIF eine Zeit addieren und dann eine Aktion ausführen?

Vielen Dank für Eure Hinweise

Matthias

rabehd

Zitat von: matkoh am 27 November 2025, 15:39:07nach einer festgelegten Zeit nach Drücken des Tasters eine Aktion (Radio einschalten) auszuführen.
Wenn das die eigentliche Aufgabe ist, dann erscheint mir die Lösung etwas zu groß. Außer Du willst Rechenzeit verbrauchen.  ;)
Warum reagierst Du nicht mit einem notify (von mir aus auch DOIF) auf den Schalter? Sleep (und wait) verzögern das einfach.
Auch funktionierende Lösungen kann man hinterfragen.

matkoh

Ich habe nur einen Ausschnitt meiner DOIFs und Konfigurationen gepostet. Z. B. steuert das Drücken des Tasters auch Rolladeneinstellungen. Dann gibt es mehrere Räume und je nach Einstellung des Dummy Fruehstueck soll ein anderes Radio eingeschaltet werden.

Mir erschien die Steuerung über ein Dummy als sinnvollste Lösung.

RalfRog

#3
und hier sogar mit Beispiel:
https://wiki.fhem.de/wiki/Notify (dort nach "Zeitverzögert schalten" suchen)


ok, die Anforderung war umfangreicher als nur verzögert das Radio einschalten

FHEM VM Debian13 (trixie) auf Proxmox VE9  (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

Damian

Du kannst einfach per Event dein zweites DOIF triggern, bei dem das Wait-Attribut auf 900 Sekunden zur Verzögerung der Ausführung gesetzt ist. Dazu brauchst nicht mit Zeiten rechnen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rabehd

Zitat von: matkoh am 27 November 2025, 15:56:08Ich habe nur einen Ausschnitt meiner DOIFs und Konfigurationen gepostet. Z. B. steuert das Drücken des Tasters auch Rolladeneinstellungen. Dann gibt es mehrere Räume und je nach Einstellung des Dummy Fruehstueck soll ein anderes Radio eingeschaltet werden.

Mir erschien die Steuerung über ein Dummy als sinnvollste Lösung.
Statt Dummy geht auch gut ein Userreading.
Ich würde auch davon abraten das ganze Haus mit einem DOIF zu steuern. Man kann das auch mit mehreren at, notify und DOIF tun. Ist am Ende übersichtlicher.
Außerdem auf ein Event kann man mit mehreren Devices reagieren.  ;)
Auch funktionierende Lösungen kann man hinterfragen.

matkoh

Zitat von: Damian am 27 November 2025, 17:17:52Du kannst einfach per Event dein zweites DOIF triggern, bei dem das Wait-Attribut auf 900 Sekunden zur Verzögerung der Ausführung gesetzt ist. Dazu brauchst nicht mit Zeiten rechnen.
Welches DOIF? Das Drücken des Tasters legt nur die Zeit fest, nicht das Radio, das geschaltet werden soll. Dazu gibt es weitere Bedingungen.

matkoh

Zitat von: rabehd am 27 November 2025, 20:16:49
Zitat von: matkoh am 27 November 2025, 15:56:08Ich habe nur einen Ausschnitt meiner DOIFs und Konfigurationen gepostet. Z. B. steuert das Drücken des Tasters auch Rolladeneinstellungen. Dann gibt es mehrere Räume und je nach Einstellung des Dummy Fruehstueck soll ein anderes Radio eingeschaltet werden.

Mir erschien die Steuerung über ein Dummy als sinnvollste Lösung.
Statt Dummy geht auch gut ein Userreading.
Ich würde auch davon abraten das ganze Haus mit einem DOIF zu steuern. Man kann das auch mit mehreren at, notify und DOIF tun. Ist am Ende übersichtlicher.
Außerdem auf ein Event kann man mit mehreren Devices reagieren.  ;)

Ich habe über 80 DOIFs und auch ein paar Notifys und ats. Ich halte es aber nicht für zielführend, meine komplette Konfiguration hier darzustellen.

Und ja, auch ich bin durchaus dafür, Lösungen zu hinterfragen.

matkoh

Zitat von: rabehd am 27 November 2025, 20:16:49Außerdem auf ein Event kann man mit mehreren Devices reagieren.

Das habe ich jetzt in Kombination mit zeitverzögerter Ausführung versucht. Im 2. DOIF, in dem eines der Radios eingeschaltet wird, habe ich folgende Bedingung formuliert:
## 5
 DOELSEIF ([Fruehstueck] eq "Kueche" and [Matthias.Status_2:?SHORT] and [+0:15])
  (set Sonos_Kueche Volume 13, set Sonos_Kueche PlayURI ...)

Es kommt kein Fehler, aber Sonos wird auch nicht eingeschaltet. Habe ich das falsch verstanden?

Matthias

rabehd

Zitat von: matkoh am 28 November 2025, 09:33:57Ich halte es aber nicht für zielführend, meine .... Konfiguration hier darzustellen.
Und deshalb ist es schwer Dir auf Deine letzte Frage zu antworten. Meine Glaskugel ist schon im Weihnachtsurlaub.

Ganz konkret, wenn Du nicht mal das ganze DOIF offen legst und dessen Zustand in der Situation, wie soll dann Hilfe aussehen?
Auch funktionierende Lösungen kann man hinterfragen.

RalfRog

#10
... und man müsste in den Readings des DOIF ablesen können ob der Zweig ##5 wie erwartet auch getriggert hat (cmd bzw. cmd_nr und event bzw. e_....)
FHEM VM Debian13 (trixie) auf Proxmox VE9  (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

matkoh

Ich hatte erwartet, dass jemand aufschreit: Die Bedingung kann so nicht funktionieren, weil...
Aber scheinbar ist sie nicht so offensichtlich falsch.

Ich habe versucht, meine Beschreibung auf die relevanten Fakten zu beschränken, vielleicht war ich da zu restriktiv. Meine FHEM-Installation ist wirklich sehr umfangreich und für Aussenstehende sicherlich verwirrend.

Dann werde ich mal ausführlicher:

Hier ist ein List meines 2. DOIFs, dass das Sonos-Radio steuert:
Internals:
   DEF        ## 1
 (([StatusAnwesenheitRuth] eq "Buero" or [StatusAnwesenheitRuth] eq "Buero7") and [StatusAnwesenheitNiclas] eq "nein" and [Fruehstueck] eq "Kueche" and [([du_RolloZeit_hoch_Buero7] -600)])
  (set Sonos_Kueche Volume 13, set Sonos_Kueche PlayURI https://wdr-wdr2-aachenundregion.icecastssl.wdr.de/wdr/wdr2/aachenundregion/mp3/128/stream.mp3)
## 2
 DOELSEIF ([StatusAnwesenheitRuth] eq "Buero8" and [StatusAnwesenheitNiclas] eq "nein" and [Fruehstueck] eq "Kueche" and [([du_RolloZeit_hoch_Buero8] - 600)])
  (set Sonos_Kueche Volume 13, set Sonos_Kueche PlayURI https://wdr-wdr2-aachenundregion.icecastssl.wdr.de/wdr/wdr2/aachenundregion/mp3/128/stream.mp3)
## 3
 DOELSEIF ([StatusAnwesenheitRuth] eq "Buero9" and [StatusAnwesenheitNiclas] eq "nein" and [Fruehstueck] eq "Kueche" and [([du_RolloZeit_hoch_Buero9] - 600)])
  (set Sonos_Kueche Volume 13, set Sonos_Kueche PlayURI https://wdr-wdr2-aachenundregion.icecastssl.wdr.de/wdr/wdr2/aachenundregion/mp3/128/stream.mp3)
## 4
 DOELSEIF ([StatusAnwesenheitRuth] eq "Heimarbeit" and [StatusAnwesenheitNiclas] eq "nein" and [Fruehstueck] eq "Kueche" and [([du_RolloZeit_hoch_Heimarbeit] - 600)])
  (set Sonos_Kueche Volume 13, set Sonos_Kueche PlayURI https://wdr-wdr2-aachenundregion.icecastssl.wdr.de/wdr/wdr2/aachenundregion/mp3/128/stream.mp3)
## 5
 DOELSEIF ([StatusAnwesenheitRuth] eq "ZuHause" and [StatusAnwesenheitNiclas] eq "nein" and [Fruehstueck] eq "Kueche" and [Matthias.Status_2:?SHORT] and [+0:15])
  (set Sonos_Kueche Volume 13, set Sonos_Kueche PlayURI https://wdr-wdr2-aachenundregion.icecastssl.wdr.de/wdr/wdr2/aachenundregion/mp3/128/stream.mp3)
## 6
 DOELSEIF ([10:00])
  ()
## 7
 DOELSEIF ([Sonos] eq "disconnected" and [Sonos:set_disabled] ne "1")
  (attr Sonos disable 1, setreading Sonos set_disabled 1, msg FHEM - Sonos im Status disconnected - disabled)
## 8
 DOELSEIF ([Sonos] eq "disconnected" and [Sonos:set_disabled] eq "1")
  (attr Sonos disable 0, setreading Sonos set_disabled 0, msg FHEM - Sonos im Status disconnected - enabled)
## 9
 DOELSEIF ([Sonos] eq "opened")
  (msg FHEM - Sonos wieder im Status opened)
   FUUID      5c4f14f8-f33f-dbcf-2a19-30745839adc7c140
   MODEL      FHEM
   NAME       D_Sonos
   NOTIFYDEV  StatusAnwesenheitRuth,Matthias.Status_2,StatusAnwesenheitNiclas,du_RolloZeit_hoch_Heimarbeit,du_RolloZeit_hoch_Buero8,Sonos,global,Fruehstueck,du_RolloZeit_hoch_Buero9,du_RolloZeit_hoch_Buero7
   NR         192
   NTFY_ORDER 50-D_Sonos
   STATE      cmd_9
   TYPE       DOIF
   VERSION    30377 2025-10-12 09:46:59
   eventCount 7
   .attraggr:
   .attrminint:
   READINGS:
     2025-11-29 14:23:45   Device          Sonos
     2025-11-29 10:00:15   cmd             9
     2025-11-29 10:00:15   cmd_event       Sonos
     2025-11-29 10:00:15   cmd_nr          9
     2025-11-29 14:15:47   e_Matthias.Status_2_events control: pressed,pressed,PRESS_SHORT: pressed,pressed: pressed,INSTALL_TEST: 1,devstate: ok,hmstate: pressed
     2025-11-29 14:23:45   e_Sonos_STATE   opened
     2025-11-29 11:00:57   e_StatusAnwesenheitNiclas_STATE nein
     2025-11-28 11:44:46   mode            enabled
     2025-11-29 10:00:15   state           cmd_9
     2025-11-29 06:20:00   timer_01_c01    30.11.2025 06:20:00
     2025-11-29 06:50:00   timer_02_c02    30.11.2025 06:50:00
     2025-11-29 08:00:00   timer_03_c03    30.11.2025 08:00:00
     2025-11-29 06:20:00   timer_04_c04    30.11.2025 06:20:00
     2025-11-29 14:14:59   timer_05_c05    29.11.2025 14:29:59
     2025-11-29 10:00:00   timer_06_c06    30.11.2025 10:00:00
     2025-11-28 15:52:27   wait_timer      no timer
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     cond:
       Fruehstueck:
         0:
           &STATE     ^Fruehstueck$
         1:
           &STATE     ^Fruehstueck$
         2:
           &STATE     ^Fruehstueck$
         3:
           &STATE     ^Fruehstueck$
         4:
           &STATE     ^Fruehstueck$
       Matthias.Status_2:
         0:
         1:
         2:
         3:
         4:
           &STATE     ^Matthias.Status_2$
         5:
         6:
         7:
         8:
       Sonos:
         0:
         1:
         2:
         3:
         4:
         5:
         6:
           &STATE     ^Sonos$
           set_disabled ^Sonos$:^set_disabled:
         7:
           &STATE     ^Sonos$
           set_disabled ^Sonos$:^set_disabled:
         8:
           &STATE     ^Sonos$
       StatusAnwesenheitNiclas:
         0:
           &STATE     ^StatusAnwesenheitNiclas$
         1:
           &STATE     ^StatusAnwesenheitNiclas$
         2:
           &STATE     ^StatusAnwesenheitNiclas$
         3:
           &STATE     ^StatusAnwesenheitNiclas$
         4:
           &STATE     ^StatusAnwesenheitNiclas$
         5:
         6:
         7:
         8:
       StatusAnwesenheitRuth:
         0:
           &STATE     ^StatusAnwesenheitRuth$
         1:
           &STATE     ^StatusAnwesenheitRuth$
         2:
           &STATE     ^StatusAnwesenheitRuth$
         3:
           &STATE     ^StatusAnwesenheitRuth$
         4:
           &STATE     ^StatusAnwesenheitRuth$
     itimer:
       du_RolloZeit_hoch_Buero7:
         itimer:
           &STATE     ^du_RolloZeit_hoch_Buero7$
       du_RolloZeit_hoch_Buero8:
         itimer:
           &STATE     ^du_RolloZeit_hoch_Buero8$
       du_RolloZeit_hoch_Buero9:
         itimer:
           &STATE     ^du_RolloZeit_hoch_Buero9$
       du_RolloZeit_hoch_Heimarbeit:
         itimer:
           &STATE     ^du_RolloZeit_hoch_Heimarbeit$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          (::InternalDoIf($hash,'StatusAnwesenheitRuth','STATE') eq "Buero" or ::InternalDoIf($hash,'StatusAnwesenheitRuth','STATE') eq "Buero7") and ::InternalDoIf($hash,'StatusAnwesenheitNiclas','STATE') eq "nein" and ::InternalDoIf($hash,'Fruehstueck','STATE') eq "Kueche" and ::DOIF_time_once($hash,0,$wday)
     1          ::InternalDoIf($hash,'StatusAnwesenheitRuth','STATE') eq "Buero8" and ::InternalDoIf($hash,'StatusAnwesenheitNiclas','STATE') eq "nein" and ::InternalDoIf($hash,'Fruehstueck','STATE') eq "Kueche" and ::DOIF_time_once($hash,1,$wday)
     2          ::InternalDoIf($hash,'StatusAnwesenheitRuth','STATE') eq "Buero9" and ::InternalDoIf($hash,'StatusAnwesenheitNiclas','STATE') eq "nein" and ::InternalDoIf($hash,'Fruehstueck','STATE') eq "Kueche" and ::DOIF_time_once($hash,2,$wday)
     3          ::InternalDoIf($hash,'StatusAnwesenheitRuth','STATE') eq "Heimarbeit" and ::InternalDoIf($hash,'StatusAnwesenheitNiclas','STATE') eq "nein" and ::InternalDoIf($hash,'Fruehstueck','STATE') eq "Kueche" and ::DOIF_time_once($hash,3,$wday)
     4          ::InternalDoIf($hash,'StatusAnwesenheitRuth','STATE') eq "ZuHause" and ::InternalDoIf($hash,'StatusAnwesenheitNiclas','STATE') eq "nein" and ::InternalDoIf($hash,'Fruehstueck','STATE') eq "Kueche" and ::EventDoIf('Matthias.Status_2',$hash,'SHORT',1) and ::DOIF_time_once($hash,4,$wday)
     5          ::DOIF_time_once($hash,5,$wday)
     6          ::InternalDoIf($hash,'Sonos','STATE') eq "disconnected" and ::ReadingValDoIf($hash,'Sonos','set_disabled') ne "1"
     7          ::InternalDoIf($hash,'Sonos','STATE') eq "disconnected" and ::ReadingValDoIf($hash,'Sonos','set_disabled') eq "1"
     8          ::InternalDoIf($hash,'Sonos','STATE') eq "opened"
   days:
   do:
     0:
       0          set Sonos_Kueche Volume 13, set Sonos_Kueche PlayURI https://wdr-wdr2-aachenundregion.icecastssl.wdr.de/wdr/wdr2/aachenundregion/mp3/128/stream.mp3
     1:
       0          set Sonos_Kueche Volume 13, set Sonos_Kueche PlayURI https://wdr-wdr2-aachenundregion.icecastssl.wdr.de/wdr/wdr2/aachenundregion/mp3/128/stream.mp3
     2:
       0          set Sonos_Kueche Volume 13, set Sonos_Kueche PlayURI https://wdr-wdr2-aachenundregion.icecastssl.wdr.de/wdr/wdr2/aachenundregion/mp3/128/stream.mp3
     3:
       0          set Sonos_Kueche Volume 13, set Sonos_Kueche PlayURI https://wdr-wdr2-aachenundregion.icecastssl.wdr.de/wdr/wdr2/aachenundregion/mp3/128/stream.mp3
     4:
       0          set Sonos_Kueche Volume 13, set Sonos_Kueche PlayURI https://wdr-wdr2-aachenundregion.icecastssl.wdr.de/wdr/wdr2/aachenundregion/mp3/128/stream.mp3
     5:
       0         
     6:
       0          attr Sonos disable 1, setreading Sonos set_disabled 1, msg FHEM - Sonos im Status disconnected - disabled
     7:
       0          attr Sonos disable 0, setreading Sonos set_disabled 0, msg FHEM - Sonos im Status disconnected - enabled
     8:
       0          msg FHEM - Sonos wieder im Status opened
     9:
   helper:
     NOTIFYDEV  StatusAnwesenheitRuth,Matthias.Status_2,StatusAnwesenheitNiclas,du_RolloZeit_hoch_Heimarbeit,du_RolloZeit_hoch_Buero8,Sonos,global,Fruehstueck,du_RolloZeit_hoch_Buero9,du_RolloZeit_hoch_Buero7
     event      LastProcessAnswer: 1764422625.23922
     globalinit 1
     last_timer 6
     sleeptimer -1
     timerdev   Sonos
     timerevent LastProcessAnswer: 1764422625.23922
     triggerDev Sonos
     timerevents:
       LastProcessAnswer: 1764422625.23922
     timereventsState:
       LastProcessAnswer: 1764422625.23922
     triggerEvents:
       LastProcessAnswer: 1764422625.23922
     triggerEventsState:
       LastProcessAnswer: 1764422625.23922
   hmccu:
   internals:
     all         StatusAnwesenheitRuth:STATE StatusAnwesenheitNiclas:STATE Fruehstueck:STATE Sonos:STATE
   interval:
   intervalfunc:
   localtime:
     0          1764480000
     1          1764481800
     2          1764486000
     3          1764480000
     4          1764422999
     5          1764493200
   readings:
     all         Sonos:set_disabled
   realtime:
     0          06:20:00
     1          06:50:00
     2          08:00:00
     3          06:20:00
     4          14:29:59
     5          10:00:00
   time:
     0          ([du_RolloZeit_hoch_Buero7]-600)
     1          ([du_RolloZeit_hoch_Buero8]-600)
     2          ([du_RolloZeit_hoch_Buero9]-600)
     3          ([du_RolloZeit_hoch_Heimarbeit]-600)
     4          +0:15
     5          10:00:00
   timeCond:
     0          0
     1          1
     2          2
     3          3
     4          4
     5          5
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
   timers:
     0           0
     1           1
     2           2
     3           3
     4           4
     5           5
   trigger:
     all         Matthias.Status_2
   triggertime:
     1764422999:
       localtime  1764422999
       hash:
     1764480000:
       localtime  1764480000
       hash:
     1764481800:
       localtime  1764481800
       hash:
     1764486000:
       localtime  1764486000
       hash:
     1764493200:
       localtime  1764493200
       hash:
   uiState:
   uiTable:
Attributes:
   room       Zentral
   verbose    5

Ich habe den Taster zuletzt testweise heute um 14:15 Uhr betätigt. Das sieht man auch an diesem Reading:
2025-11-29 14:15:47   e_Matthias.Status_2_events control: pressed,pressed,PRESS_SHORT: pressed,pressed: pressed,INSTALL_TEST: 1,devstate: ok,hmstate: pressedTrotzdem wird nicht der Zweig 5 getriggert. Das DOIF bleibt beim Zweig 9 stehen, der heute morgen aktiviert wurde.

Ich habe auch mal ein Filelog erstellt, dass das DOIF und alle beteiligten Dummys beinhaltet und Verbose für das DOIF D_Sonos auf 5 gesetzt. Das Filelog sieht beim Auslösen des Tasters dann so aus:
2025-11-29_14:15:47 Matthias.Status_2 control: pressed
2025-11-29_14:15:47 Matthias.Status_2 pressed
2025-11-29_14:15:47 Matthias.Status_2 PRESS_SHORT: pressed
2025-11-29_14:15:47 Matthias.Status_2 pressed: pressed
2025-11-29_14:15:47 Matthias.Status_2 INSTALL_TEST: 1
2025-11-29_14:15:47 Matthias.Status_2 devstate: ok
2025-11-29_14:15:47 Matthias.Status_2 hmstate: pressed
Also kein Eintrag vom DOIF.

Hat jemand eine Idee?

Matthias

Damian

Wo soll denn im 5. Zweig eine Verzögerung sein. Von einem Wait-Attribut sehe ich nichts. Wie kommst du auf [+0:15]? Ist das evtl. ein KI-Vorschlag?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rabehd

Auch funktionierende Lösungen kann man hinterfragen.

matkoh

Zitat von: Damian am 29 November 2025, 14:45:38Wo soll denn im 5. Zweig eine Verzögerung sein. Von einem Wait-Attribut sehe ich nichts. Wie kommst du auf [+0:15]? Ist das evtl. ein KI-Vorschlag?

Keine KI, das stammt aus der commandref zu DOIF Relative Zeitangaben:
Zeitangaben, die mit Pluszeichen beginnen, werden relativ behandelt, d. h. die angegebene Zeit wird zum aktuellen Zeitpunkt hinzuaddiert.

Anwendungsbeispiel: Automatisches Speichern der Konfiguration im Stundentakt:

define di_save DOIF ([+01:00]) (save)
attr di_save do always

Das habe ich wohl falsch verstanden. Ich habe diese Bedingung entfernt und
wait = 0,0,0,0,900,0,60,60,0
gesetzt, wodurch der Zweig 5 erst nach 15 Minuten ausgeführt werden sollte. Das funktioniert aber auch nicht, jetzt wird das Radio sofort eingeschaltet, wenn der Taster gedrückt wird. Hier der Auszug aus dem Filelog:
2025-11-29_16:52:28 D_Sonos cmd: 0
2025-11-29_16:52:28 D_Sonos initialized
2025-11-29_16:52:28 D_Sonos mode: enabled
2025-11-29_16:52:29 D_Sonos cmd_nr: 9
2025-11-29_16:52:29 D_Sonos cmd: 9
2025-11-29_16:52:29 D_Sonos cmd_event: Sonos
2025-11-29_16:52:29 D_Sonos cmd_9
2025-11-29_16:55:09 D_Sonos cmd_nr: 5
2025-11-29_16:55:09 D_Sonos cmd: 5
2025-11-29_16:55:09 D_Sonos cmd_event: Matthias.Status_2
2025-11-29_16:55:09 D_Sonos cmd_5
2025-11-29_16:55:09 Matthias.Status_2 control: pressed
2025-11-29_16:55:09 Matthias.Status_2 pressed
2025-11-29_16:55:09 Matthias.Status_2 PRESS_SHORT: pressed
2025-11-29_16:55:09 Matthias.Status_2 pressed: pressed
2025-11-29_16:55:09 Matthias.Status_2 INSTALL_TEST: 1
2025-11-29_16:55:09 Matthias.Status_2 devstate: ok
2025-11-29_16:55:09 Matthias.Status_2 hmstate: pressed
2025-11-29_16:55:09 D_Sonos cmd_nr: 9
2025-11-29_16:55:09 D_Sonos cmd: 9
2025-11-29_16:55:09 D_Sonos cmd_event: Sonos
2025-11-29_16:55:09 D_Sonos cmd_9