Hallo,
ich habe folgendes DOIF:
([[Lichtwecker.di:mybegin,"06:00"]-22:00] and !($we) and [zuHause] eq "Ja" and [AArbeit] ne "present") (
set HarmonyHub1 active,
set MQTT2_DVES_CCBC8D_CH4 on,
set MQTT2_zigbee_HarmonyHub on)
DOELSEIF (
($we) and [07:30-22:00] and [zuHause] eq "Ja" and [AArbeit] ne "present") (
set HarmonyHub1 active,
set MQTT2_DVES_CCBC8D_CH4 on,
set MQTT2_zigbee_HarmonyHub on)
DOELSEIF (
[22:00-07:30] and [Denon:power] eq "on") (
set HarmonyHub1 active,
set MQTT2_DVES_CCBC8D_CH4 on,
set MQTT2_zigbee_HarmonyHub on)
DOELSEIF (
([22:00-06:00] and [Denon:power] eq "off") or [zuHause] eq "Nein" or [UrlauboderFerien] eq "Urlaub" or ([AArbeit] eq "present" and [EchomitHomeofficeAndrea] eq "Nein")) (
set MQTT2_DVES_CCBC8D_CH4 off,
set MQTT2_zigbee_HarmonyHub off)
seit ich das reading Lichtwecker.di:mybegin als Startzeit nutzen will, schaltet das DOIF nicht mehr von selbst, nur wenn ich checkall mache?
Das Reading kommt von hier:
define Lichtwecker.di DOIF ([[$SELF:mybegin,"06:00"]] and !($we)) (\
set MQTT2_DVES_CBD491 on-for-timer 1200,\
set MQTT2_DVES_1DA17C_USB on-for-timer 1200,\
set MQTT2_zigbee_SchlafzimmerschrankLeiste white,\
set MQTT2_zigbee_SchlafzimmerschrankLeiste on-for-timer 1200,\
set $SELF mybegin 06:00)
attr Lichtwecker.di devStateStyle style="text-align:left;;font-weight:bold;;"
attr Lichtwecker.di do always
attr Lichtwecker.di group Schalter-Schalter,Schlafzimmer
attr Lichtwecker.di icon light_on-for-timer
attr Lichtwecker.di readingList mybegin
attr Lichtwecker.di room Schalter,nt+di
attr Lichtwecker.di setList mybegin:time
attr Lichtwecker.di sortby 07
attr Lichtwecker.di stateFormat mybegin
attr Lichtwecker.di webCmd mybegin
# DEF ([[$SELF:mybegin,"06:00"]] and !($we)) (
#set MQTT2_DVES_CBD491 on-for-timer 1200,
#set MQTT2_DVES_1DA17C_USB on-for-timer 1200,
#set MQTT2_zigbee_SchlafzimmerschrankLeiste white,
#set MQTT2_zigbee_SchlafzimmerschrankLeiste on-for-timer 1200,
#set $SELF mybegin 06:00)
# FUUID 645b81c6-f33f-214e-b7f7-dd3eb760ea312ce6
# MODEL FHEM
# NAME Lichtwecker.di
# NOTIFYDEV Lichtwecker.di,global
# NR 514
# NTFY_ORDER 50-Lichtwecker.di
# STATE 06:00
# TYPE DOIF
# VERSION 29460 2024-12-29 20:25:48
# eventCount 5
# READINGS:
# 2025-08-22 07:15:00 cmd 1
# 2025-08-22 07:15:00 cmd_event timer_1
# 2025-08-22 07:15:00 cmd_nr 1
# 2025-08-18 09:58:12 mode enabled
# 2025-08-22 07:15:00 mybegin 06:00
# 2025-08-22 07:15:00 state cmd_1
# 2025-08-22 07:15:00 timer_01_c01 23.08.2025 06:00:00
# Regex:
# accu:
# bar:
# barAvg:
# collect:
# itimer:
# Lichtwecker.di:
# itimer:
# mybegin ^Lichtwecker.di$:^mybegin:
# attr:
# cmdState:
# waitdel:
# condition:
# 0 ::DOIF_time_once($hash,0,$wday) and !($we)
# days:
# do:
# 0:
# 0 set MQTT2_DVES_CBD491 on-for-timer 1200, set MQTT2_DVES_1DA17C_USB on-for-timer 1200, set MQTT2_zigbee_SchlafzimmerschrankLeiste white, set MQTT2_zigbee_SchlafzimmerschrankLeiste on-for-timer 1200, set Lichtwecker.di mybegin 06:00
# 1:
# helper:
# NOTIFYDEV Lichtwecker.di,global
# event timer_1
# globalinit 1
# last_timer 1
# sleeptimer -1
# timerdev
# timerevent timer_1
# triggerDev
# timerevents:
# timer_1
# timereventsState:
# timer_1
# triggerEvents:
# timer_1
# triggerEventsState:
# timer_1
# interval:
# intervalfunc:
# intervaltimer:
# localtime:
# 0 1755921600
# perlblock:
# realtime:
# 0 06:00:00
# time:
# 0 [Lichtwecker.di:mybegin,"06:00"]
# timeCond:
# 0 0
# timer:
# 0 0
# timers:
# 0 0
# triggertime:
# 1755921600:
# localtime 1755921600
# hash:
# uiState:
# uiTable:
#
setstate Lichtwecker.di 06:00
setstate Lichtwecker.di 2025-08-22 07:15:00 cmd 1
setstate Lichtwecker.di 2025-08-22 07:15:00 cmd_event timer_1
setstate Lichtwecker.di 2025-08-22 07:15:00 cmd_nr 1
setstate Lichtwecker.di 2025-08-18 09:58:12 mode enabled
setstate Lichtwecker.di 2025-08-22 07:15:00 mybegin 06:00
setstate Lichtwecker.di 2025-08-22 07:15:00 state cmd_1
setstate Lichtwecker.di 2025-08-22 07:15:00 timer_01_c01 23.08.2025 06:00:00
Wo ist mein Fehler?
matze1999
Wird denn der Timer für mybegin für das Intervall in deinem DOIF-Device gesetzt?
Hallo,
ja, Lichtwecker.di funtkioniert ohen Probleme, das andere nur wenn ich checkall mache.
matze
Zitat von: matze1999 am 22 August 2025, 11:42:16Hallo,
ja, Lichtwecker.di funtkioniert ohen Probleme, das andere nur wenn ich checkall mache.
matze
Daher die Frage, ob der Timer vom DOIF bei dem DOIF-Device gesetzt wurde. Das siehst du in den Readings des Devices.
Hallo,
alles klar, ja da gibt es das reading:
Bildschirmfoto vom 2025-08-23 11-09-59.png
define Lichtwecker.di DOIF ([[$SELF:mybegin,"06:00"]] and !($we)) (\
set MQTT2_DVES_CBD491 on-for-timer 1200,\
set MQTT2_DVES_1DA17C_USB on-for-timer 1200,\
set MQTT2_zigbee_SchlafzimmerschrankLeiste white,\
set MQTT2_zigbee_SchlafzimmerschrankLeiste on-for-timer 1200,\
set $SELF mybegin 06:00)
attr Lichtwecker.di devStateStyle style="text-align:left;;font-weight:bold;;"
attr Lichtwecker.di do always
attr Lichtwecker.di group Schalter-Schalter,Schlafzimmer
attr Lichtwecker.di icon light_on-for-timer
attr Lichtwecker.di readingList mybegin
attr Lichtwecker.di room Schalter,nt+di
attr Lichtwecker.di setList mybegin:time
attr Lichtwecker.di sortby 07
attr Lichtwecker.di stateFormat mybegin
attr Lichtwecker.di webCmd mybegin
# DEF ([[$SELF:mybegin,"06:00"]] and !($we)) (
#set MQTT2_DVES_CBD491 on-for-timer 1200,
#set MQTT2_DVES_1DA17C_USB on-for-timer 1200,
#set MQTT2_zigbee_SchlafzimmerschrankLeiste white,
#set MQTT2_zigbee_SchlafzimmerschrankLeiste on-for-timer 1200,
#set $SELF mybegin 06:00)
# FUUID 645b81c6-f33f-214e-b7f7-dd3eb760ea312ce6
# MODEL FHEM
# NAME Lichtwecker.di
# NOTIFYDEV global,Lichtwecker.di
# NR 514
# NTFY_ORDER 50-Lichtwecker.di
# STATE 06:00
# TYPE DOIF
# VERSION 29460 2024-12-29 20:25:48
# READINGS:
# 2025-08-22 07:15:00 cmd 1
# 2025-08-22 07:15:00 cmd_event timer_1
# 2025-08-22 07:15:00 cmd_nr 1
# 2025-08-18 09:58:12 mode enabled
# 2025-08-22 07:15:00 mybegin 06:00
# 2025-08-22 07:15:00 state cmd_1
# 2025-08-23 06:00:00 timer_01_c01 24.08.2025 06:00:00
# Regex:
# accu:
# bar:
# barAvg:
# collect:
# itimer:
# Lichtwecker.di:
# itimer:
# mybegin ^Lichtwecker.di$:^mybegin:
# condition:
# 0 ::DOIF_time_once($hash,0,$wday) and !($we)
# days:
# do:
# 0:
# 0 set MQTT2_DVES_CBD491 on-for-timer 1200, set MQTT2_DVES_1DA17C_USB on-for-timer 1200, set MQTT2_zigbee_SchlafzimmerschrankLeiste white, set MQTT2_zigbee_SchlafzimmerschrankLeiste on-for-timer 1200, set Lichtwecker.di mybegin 06:00
# 1:
# helper:
# NOTIFYDEV global,Lichtwecker.di
# event timer_1
# globalinit 1
# last_timer 1
# sleeptimer -1
# triggerDev
# triggerEvents:
# timer_1
# triggerEventsState:
# timer_1
# interval:
# intervalfunc:
# localtime:
# 0 1756008000
# perlblock:
# realtime:
# 0 06:00:00
# time:
# 0 [Lichtwecker.di:mybegin,"06:00"]
# timeCond:
# 0 0
# timer:
# 0 0
# timers:
# 0 0
# triggertime:
# 1756008000:
# localtime 1756008000
# hash:
# uiState:
# uiTable:
#
setstate Lichtwecker.di 06:00
setstate Lichtwecker.di 2025-08-22 07:15:00 cmd 1
setstate Lichtwecker.di 2025-08-22 07:15:00 cmd_event timer_1
setstate Lichtwecker.di 2025-08-22 07:15:00 cmd_nr 1
setstate Lichtwecker.di 2025-08-18 09:58:12 mode enabled
setstate Lichtwecker.di 2025-08-22 07:15:00 mybegin 06:00
setstate Lichtwecker.di 2025-08-22 07:15:00 state cmd_1
setstate Lichtwecker.di 2025-08-23 06:00:00 timer_01_c01 24.08.2025 06:00:00
matze
Nein, gemeint war ein list vom DOIF-Device, wo es nicht funktioniert.
Siehe erster Beitrag:
define WohnzimmerEin DOIF ([[Lichtwecker.di:mybegin,"06:00"]-22:00] and !($we) and [zuHause] eq "Ja" and [AArbeit] ne "present") (\
set HarmonyHub1 active,\
set MQTT2_DVES_CCBC8D_CH4 on,\
set MQTT2_zigbee_HarmonyHub on)\
DOELSEIF (\
($we) and [07:30-22:00] and [zuHause] eq "Ja" and [AArbeit] ne "present") (\
set HarmonyHub1 active,\
set MQTT2_DVES_CCBC8D_CH4 on,\
set MQTT2_zigbee_HarmonyHub on) \
DOELSEIF (\
[22:00-07:30] and [Denon:power] eq "on") (\
set HarmonyHub1 active,\
set MQTT2_DVES_CCBC8D_CH4 on,\
set MQTT2_zigbee_HarmonyHub on)\
DOELSEIF (\
([22:00-06:00] and [Denon:power] eq "off") or [zuHause] eq "Nein" or [UrlauboderFerien] eq "Urlaub" or ([AArbeit] eq "present" and [EchomitHomeofficeAndrea] eq "Nein")) (\
set MQTT2_DVES_CCBC8D_CH4 off,\
set MQTT2_zigbee_HarmonyHub off)\
\
attr WohnzimmerEin alias WohnzimmerEin
attr WohnzimmerEin devStateStyle style="text-align:left;;font-weight:bold;;"
attr WohnzimmerEin do always
attr WohnzimmerEin group Wohnzimmer
attr WohnzimmerEin room nt+di
attr WohnzimmerEin wait 0:0:0:60
# DEF ([[Lichtwecker.di:mybegin,"06:00"]-22:00] and !($we) and [zuHause] eq "Ja" and [AArbeit] ne "present") (
#set HarmonyHub1 active,
#set MQTT2_DVES_CCBC8D_CH4 on,
#set MQTT2_zigbee_HarmonyHub on)
#DOELSEIF (
#($we) and [07:30-22:00] and [zuHause] eq "Ja" and [AArbeit] ne "present") (
#set HarmonyHub1 active,
#set MQTT2_DVES_CCBC8D_CH4 on,
#set MQTT2_zigbee_HarmonyHub on)
#DOELSEIF (
#[22:00-07:30] and [Denon:power] eq "on") (
#set HarmonyHub1 active,
#set MQTT2_DVES_CCBC8D_CH4 on,
#set MQTT2_zigbee_HarmonyHub on)
#DOELSEIF (
#([22:00-06:00] and [Denon:power] eq "off") or [zuHause] eq "Nein" or [UrlauboderFerien] eq "Urlaub" or ([AArbeit] eq "present" and [EchomitHomeofficeAndrea] eq "Nein")) (
#set MQTT2_DVES_CCBC8D_CH4 off,
#set MQTT2_zigbee_HarmonyHub off)
#
#
# FUUID 619e3ac5-f33f-214e-9a11-fc62c28c971b30f1
# MODEL FHEM
# NAME WohnzimmerEin
# NOTIFYDEV AArbeit,Denon,zuHause,UrlauboderFerien,global,Lichtwecker.di,EchomitHomeofficeAndrea
# NR 180
# NTFY_ORDER 50-WohnzimmerEin
# STATE cmd_2
# TYPE DOIF
# VERSION 29460 2024-12-29 20:25:48
# eventCount 1
# READINGS:
# 2025-08-22 23:10:21 Device Denon
# 2025-08-23 07:30:03 cmd 2
# 2025-08-23 07:30:03 cmd_event timer_3
# 2025-08-23 07:30:03 cmd_nr 2
# 2025-08-22 23:10:21 e_Denon_power off
# 2025-08-22 17:01:35 e_zuHause_STATE Ja
# 2025-08-20 07:32:04 mode enabled
# 2025-08-23 07:30:03 state cmd_2
# 2025-08-23 11:12:05 timer_01_c01 24.08.2025 07:00:00
# 2025-08-23 02:00:57 timer_02_c01 23.08.2025 22:00:00
# 2025-08-23 02:00:57 timer_03_c02 23.08.2025 07:30:00
# 2025-08-23 02:00:57 timer_04_c02 23.08.2025 22:00:00
# 2025-08-23 07:30:03 timer_05_c03 23.08.2025 22:00:00
# 2025-08-23 07:30:03 timer_06_c03 24.08.2025 07:30:00
# 2025-08-23 06:00:00 timer_07_c04 23.08.2025 22:00:00
# 2025-08-23 06:00:00 timer_08_c04 24.08.2025 06:00:00
# Regex:
# accu:
# bar:
# barAvg:
# collect:
# cond:
# AArbeit:
# 0:
# &STATE ^AArbeit$
# 1:
# &STATE ^AArbeit$
# 3:
# &STATE ^AArbeit$
# Denon:
# 2:
# power ^Denon$:^power:
# 3:
# power ^Denon$:^power:
# EchomitHomeofficeAndrea:
# 3:
# &STATE ^EchomitHomeofficeAndrea$
# UrlauboderFerien:
# 3:
# &STATE ^UrlauboderFerien$
# zuHause:
# 0:
# &STATE ^zuHause$
# 1:
# &STATE ^zuHause$
# 3:
# &STATE ^zuHause$
# itimer:
# Lichtwecker.di:
# itimer:
# mybegin ^Lichtwecker.di$:^mybegin:
# attr:
# cmdState:
# wait:
# 0:
# 0
# 1:
# 0
# 2:
# 0
# 3:
# 60
# waitdel:
# condition:
# 0 ::DOIF_time($hash,0,1,$wday,$hms) and !($we) and ::InternalDoIf($hash,'zuHause','STATE') eq "Ja" and ::InternalDoIf($hash,'AArbeit','STATE') ne "present"
# 1 ($we) and ::DOIF_time($hash,2,3,$wday,$hms) and ::InternalDoIf($hash,'zuHause','STATE') eq "Ja" and ::InternalDoIf($hash,'AArbeit','STATE') ne "present"
# 2 ::DOIF_time($hash,4,5,$wday,$hms) and ::ReadingValDoIf($hash,'Denon','power') eq "on"
# 3 (::DOIF_time($hash,6,7,$wday,$hms) and ::ReadingValDoIf($hash,'Denon','power') eq "off") or ::InternalDoIf($hash,'zuHause','STATE') eq "Nein" or ::InternalDoIf($hash,'UrlauboderFerien','STATE') eq "Urlaub" or (::InternalDoIf($hash,'AArbeit','STATE') eq "present" and ::InternalDoIf($hash,'EchomitHomeofficeAndrea','STATE') eq "Nein")
# days:
# do:
# 0:
# 0 set HarmonyHub1 active, set MQTT2_DVES_CCBC8D_CH4 on, set MQTT2_zigbee_HarmonyHub on
# 1:
# 0 set HarmonyHub1 active, set MQTT2_DVES_CCBC8D_CH4 on, set MQTT2_zigbee_HarmonyHub on
# 2:
# 0 set HarmonyHub1 active, set MQTT2_DVES_CCBC8D_CH4 on, set MQTT2_zigbee_HarmonyHub on
# 3:
# 0 set MQTT2_DVES_CCBC8D_CH4 off, set MQTT2_zigbee_HarmonyHub off
# 4:
# helper:
# NOTIFYDEV AArbeit,Denon,zuHause,UrlauboderFerien,global,Lichtwecker.di,EchomitHomeofficeAndrea
# event timer_3
# globalinit 1
# last_timer 8
# sleeptimer -1
# timerdev
# timerevent timer_3
# triggerDev
# timerevents:
# timer_3
# timereventsState:
# timer_3
# triggerEvents:
# timer_3
# triggerEventsState:
# timer_3
# internals:
# all zuHause:STATE AArbeit:STATE UrlauboderFerien:STATE EchomitHomeofficeAndrea:STATE
# interval:
# 0 -1
# 1 0
# 2 -1
# 3 2
# 4 -1
# 5 4
# 6 -1
# 7 6
# intervalfunc:
# intervaltimer:
# localtime:
# 0 1756011600
# 1 1755979200
# 2 1755927000
# 3 1755979200
# 4 1755979200
# 5 1756013400
# 6 1755979200
# 7 1756008000
# perlblock:
# readings:
# all Denon:power
# realtime:
# 0 07:00:00
# 1 22:00:00
# 2 07:30:00
# 3 22:00:00
# 4 22:00:00
# 5 07:30:00
# 6 22:00:00
# 7 06:00:00
# time:
# 0 [Lichtwecker.di:mybegin,"06:00"]
# 1 22:00:00
# 2 07:30:00
# 3 22:00:00
# 4 22:00:00
# 5 07:30:00
# 6 22:00:00
# 7 06:00:00
# timeCond:
# 0 0
# 1 0
# 2 1
# 3 1
# 4 2
# 5 2
# 6 3
# 7 3
# timer:
# 0 0
# 1 0
# 2 0
# 3 0
# 4 0
# 5 0
# 6 0
# 7 0
# timers:
# 0 0 1
# 1 2 3
# 2 4 5
# 3 6 7
# triggertime:
# 1755979200:
# localtime 1755979200
# hash:
# 1756008000:
# localtime 1756008000
# hash:
# 1756011600:
# localtime 1756011600
# hash:
# 1756013400:
# localtime 1756013400
# hash:
# uiState:
# uiTable:
#
setstate WohnzimmerEin cmd_2
setstate WohnzimmerEin 2025-08-22 23:10:21 Device Denon
setstate WohnzimmerEin 2025-08-23 07:30:03 cmd 2
setstate WohnzimmerEin 2025-08-23 07:30:03 cmd_event timer_3
setstate WohnzimmerEin 2025-08-23 07:30:03 cmd_nr 2
setstate WohnzimmerEin 2025-08-22 23:10:21 e_Denon_power off
setstate WohnzimmerEin 2025-08-22 17:01:35 e_zuHause_STATE Ja
setstate WohnzimmerEin 2025-08-20 07:32:04 mode enabled
setstate WohnzimmerEin 2025-08-23 07:30:03 state cmd_2
setstate WohnzimmerEin 2025-08-23 [color=yellow]11:12:05 timer_01_c01 24.08.2025 07:00:00[/color]
setstate WohnzimmerEin 2025-08-23 02:00:57 timer_02_c01 23.08.2025 22:00:00
setstate WohnzimmerEin 2025-08-23 02:00:57 timer_03_c02 23.08.2025 07:30:00
setstate WohnzimmerEin 2025-08-23 02:00:57 timer_04_c02 23.08.2025 22:00:00
setstate WohnzimmerEin 2025-08-23 07:30:03 timer_05_c03 23.08.2025 22:00:00
setstate WohnzimmerEin 2025-08-23 07:30:03 timer_06_c03 24.08.2025 07:30:00
setstate WohnzimmerEin 2025-08-23 06:00:00 timer_07_c04 23.08.2025 22:00:00
setstate WohnzimmerEin 2025-08-23 06:00:00 timer_08_c04 24.08.2025 06:00:00
Das Zeitintervall ist sauber gesetzt. Ob es geschaltet hat oder nicht, kann ich hier nicht sehen, denn um 7:30 hat ja bereits deine zweite Bedingung zugeschlagen.
oh man, das andere DOIF habe ich ja gar nicht hier gezeigt:
DEF
([[$SELF:jubegin,"06:00"]|Mo-Mi] and !($we))
(set ECHO_G090XG1001070DPB volume 50,
set ECHO_G090XG1001070DPB textcommand spiele meine playlist morgen in zufälliger Reihenfolge,
set $SELF jubegin 06:00)
DOELSEIF
([07:00|Do] and !($we))
(set ECHO_G090XG1001070DPB volume 50,
set ECHO_G090XG1001070DPB textcommand spiele meine playlist morgen in zufälliger Reihenfolge,
set $SELF jubegin 06:00)
DOELSEIF
([08:00|Fr] and (strftime("%V", localtime) % 2) == 1 and !($we))
(set ECHO_G090XG1001070DPB volume 50,
set ECHO_G090XG1001070DPB textcommand spiele meine playlist morgen in zufälliger Reihenfolge,
set $SELF jubegin 06:00)
DOELSEIF
([[$SELF:jubegin,"06:00"]|Fr] and (strftime("%V", localtime) % 2) != 1 and !($we))
(set ECHO_G090XG1001070DPB volume 60,
set ECHO_G090XG1001070DPB textcommand spiele meine playlist morgen in zufälliger Reihenfolge,
set $SELF jubegin 06:00)
...und ich hab den Fehler gefunden, hier stand überall
!$we
statt
!($we)
jetzt geht es.
matze
Also, es macht in Perl keinen Unterschied ob du !$we angibst oder !($we) - beides funktioniert gleich.
Aber es sind mir andere Sachen aufgefallen:
([[$SELF:jubegin,"06:00"]|Mo-Mi]
Mo-Mi ist in der Syntax nicht vorgesehen, daher wird hier nur Montag oder Mittwoch akzeptiert, Dienstag aber nicht. Das hat bestimmt die KI dazu gedichtet ;)
Ebenfalls ist die Kombination mit
Zitatand !($we)
wirkungslos, da Montag oder Mittwoch ohnehin nicht Wochenende bzw. nicht Feiertag sind.
Aha, das war des Pudels Kern, denn heute hat es wieder nicht funktioniert, ich hoffe mit
([[$SELF:jubegin,"06:00"]|Mo Di Mi] and !($we))
wird es funktionieren.
Da ich $we mit der Holiday Datei "verheiratet" habe (holiday2we), soll !($we) drin bleiben
matze