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
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.
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.
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
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.
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. ;)
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.
Zitat von: rabehd am 27 November 2025, 20:16:49Zitat 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.
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
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?
... 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_....)
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: pressedAlso kein Eintrag vom DOIF.
Hat jemand eine Idee?
Matthias
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?
Zitat von: matkoh am 29 November 2025, 14:34:53Hat jemand eine Idee?
ja, endlich mal ein LIST posten.
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 alwaysDas 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
[+0:15] bedeutet, dass er alle 15 Minuten triggert, ab dem Definitionszeitpunkt - das willst du nicht.
Du braucht nur wait 0:0:0:0:900 setzen, dann wird der fünfte Zweig 900 Sekunden später ausgeführt
und [Matthias.Status_2:"SHORT"] in der Bedingung scheiben.
Zitat von: Damian am 29 November 2025, 19:30:44[+0:15] bedeutet, dass er alle 15 Minuten triggert, ab dem Definitionszeitpunkt - das willst du nicht.
Du braucht nur wait 0:0:0:0:900 setzen, dann wird der fünfte Zweig 900 Sekunden später ausgeführt
und [Matthias.Status_2:"SHORT"] in der Bedingung scheiben.
Habe ich gerade getestet, funktioniert leider nicht. Hier der Auszug aus dem Filelog:
2025-11-29_21:28:52 Matthias.Status_2 INSTALL_TEST: 1
2025-11-29_21:28:52 Matthias.Status_2 devstate: ok
2025-11-29_21:28:52 Matthias.Status_2 hmstate: pressed
2025-11-29_21:28:53 D_Sonos wait_timer: 29.11.2025 21:43:53 cmd_5 Matthias.Status_2
2025-11-29_21:28:53 Matthias.Status_2 control: pressed
2025-11-29_21:28:53 Matthias.Status_2 pressed
2025-11-29_21:28:53 Matthias.Status_2 PRESS_SHORT: pressed
2025-11-29_21:28:53 Matthias.Status_2 pressed: pressed
2025-11-29_21:28:53 Matthias.Status_2 devstate: ok
2025-11-29_21:28:53 Matthias.Status_2 hmstate: pressed
2025-11-29_21:28:53 D_Sonos wait_timer: no timerIch habe mal gelesen, dass die Aktion ausgeführt wird, wenn nach der wait-Zeit die Bedingung noch gültig ist. Ist die Bedingung bei einem Event = Tastendruck nach 15 Minuten noch gültig?
Zitat von: matkoh am 29 November 2025, 21:52:54Ich habe mal gelesen, dass die Aktion ausgeführt wird, wenn nach der wait-Zeit die Bedingung noch gültig ist.
Stimmt nicht. Richtig ist, wenn bis dahin nicht ein anderer Zweig gültig wird.
2025-11-29_21:28:53 D_Sonos wait_timer: 29.11.2025 21:43:53 cmd_5 Matthias.Status_2
2025-11-29_21:28:53 Matthias.Status_2 control: pressed
2025-11-29_21:28:53 Matthias.Status_2 pressed
2025-11-29_21:28:53 Matthias.Status_2 PRESS_SHORT: pressed
2025-11-29_21:28:53 Matthias.Status_2 pressed: pressed
2025-11-29_21:28:53 Matthias.Status_2 devstate: ok
2025-11-29_21:28:53 Matthias.Status_2 hmstate: pressed
2025-11-29_21:28:53 D_Sonos wait_timer: no timer
Der Wait-Timer wird gesetzt und 32 Sekunden später aufgrund eines Zustandswechsels wieder zurückgesetzt, weil ein anderer Zweig ausgeführt wurde. Funktioniert wie programmiert. Mein Vorschlag basierte auf dem ersten Auszug von dir, wo man nur den fünften Zweig sehen konnte.
Danke, es funktioniert jetzt trotzdem:
Ich habe die letzten 3 Zweige des DOIF, bei denen es um die Verbindung zum Sonos geht, in ein separates DOIF ausgelagert. Und ich habe das Attribut
do always
im DOIF D_Sonos gesetzt, damit der Zweig auch mehrfach getriggert wird.