[gelöst] Wochentagsabhängigkeit funzt seit geraumer Zeit nicht mehr

Begonnen von locodriver, 07 September 2019, 17:37:03

Vorheriges Thema - Nächstes Thema

locodriver

Hallo Miteinander!

Ich habe in DOIF, welches verschiedene, periodisch wiederkehrende Dinge erledigt. Bis vor einigen Monaten hat auch alles funktioniert.
Doch nun schlagen die wochentagsabhängigen Bedingungen nicht mehr zu. Ich habe dann mal einen Ausdruck mit der Perl-Variante ausprobiert, das funzt leider auch nicht.
Wenn ich mit "set cmd..." teste, so wird der jeweilige Ausführungsteil ausgeführt. Bei einer Anpassung der Zeit zum Testen auf die folgenden Minuten und speichern, springt der Ausführungsteil auch an. Wenn ich wieder die gewünschten Tage und Zeiten (Mittwoch bzw. Donnerstag 18 Uhr) eingebe, warte ich vergebens auf die Telegrammmeldungen.

Hier das DOIF:

Internals:
   CFGFN      ./FHEM/85_System.cfg
   DEF        ([08:05])(
setreading KU_Sensor Batteriewechsel {([KU_Sensor:Batteriewechsel]+1)},
setreading WZ_Sensor Batteriewechsel {([WZ_Sensor:Batteriewechsel]+1)},
setreading AZ_Sensor Batteriewechsel {([AZ_Sensor:Batteriewechsel]+1)},
setreading WZ_Fenster Batteriewechsel {([WZ_Sensor:Batteriewechsel]+1)},
setreading KU_Fenster Batteriewechsel {([KU_Fenster:Batteriewechsel]+1)},
setreading SZ_Fenster Batteriewechsel {([SZ_Fenster:Batteriewechsel]+1)},
setreading AZ_Fenster Batteriewechsel {([AZ_Fenster:Batteriewechsel]+1)},
setreading BD_Fenster Batteriewechsel {([BD_Fenster:Batteriewechsel]+1)},
setreading BD_Hk4 Batteriewechsel {([BD_Hk4:Batteriewechsel]+1)},
setreading BD_Regler Batteriewechsel {([BD_Regler:Batteriewechsel]+1)},
setreading BD_T6 Batteriewechsel {([BD_T6:Batteriewechsel]+1)},
setreading FL_Tuer Batteriewechsel {([FL_Tuer:Batteriewechsel]+1)},
setreading FL_T6 Batteriewechsel {([FL_T6:Batteriewechsel]+1)},
setreading WZ_Balkon Batteriewechsel {([WZ_Balkon:Batteriewechsel]+1)},
setreading WZ_Hk0 Batteriewechsel {([WZ_Hk0:Batteriewechsel]+1)},
setreading WZ_Hk1 Batteriewechsel {([WZ_Hk1:Batteriewechsel]+1)}
)
DOELSEIF
([07:00] or [08:00] or [10:00] or [12:00] or [16:00] or [18:00] or [{sunset(0,"17:00","22:00")}])({Log 1, "Min ist ".ReadingsVal("Wetter_Pro","fc0_tempMin",0). "°C Max ist ".ReadingsVal("Wetter_Pro","fc0_tempMax",0)."°C Himmel ist zu ".ReadingsVal("Wetter_Borsdorf","cloudCover",0)."% bedeckt und Bedingung: ".ReadingsVal("Wetter_Borsdorf","condition",0)})
DOELSEIF
([23:59] or [00:01])(trigger addLog)
DOELSEIF
([21:35])({fhem("set BAjetzt " . (ReadingsVal("BAmorgen","state","frei"))),Log 1, "Betriebsart ist jetzt: ".ReadingsVal("BAmorgen","state","frei")})
DOELSEIF
([23:45])(set Nachrichten cmdSendSilent {plotAsPng('weblink_001WZ')},set Nachrichten cmdSendSilent {plotAsPng('weblink_004BD')})
DOELSEIF
([03:55]) (set Sonnenaufgang {(sunrise())}, set Sonnenuntergang {(sunset())})
DOELSEIF
([18:00|3] and ($yday/2 ne int($yday/2)))(set Nachrichten message Bitte Mülltonne zur Leerung bereitstellen!)(IF ([androidandrea] eq "present")(set Nachrichten message @Andrea Bitte Mülltonne zur Leerung bereitstellen!))
DOELSEIF
([18:00] and ($wday= 4))(set Nachrichten message Bitte Abtreter herein holen!)(IF ([androidandrea] eq "present")(set Nachrichten message @Andrea Bitte Abtreter herein holen!))
DOELSEIF
([08:05|6] and [Heizung] eq "Aus")(set WZ_Hk0_Clima controlManu on,set WZ_Hk1_Clima controlManu on,set BD_Hk4_Clima controlManu on)
DOELSEIF
([01:00] and ($mday= 1))(setreading BD_Luefter_Sw_01 Schwelle {(80-abs($month-7)*2)})
DOELSEIF
([19:00|1] and [Heizung] eq "Ein")(set WZ_Hk0_Clima regSet decalcWeekday Sun,set WZ_Hk1_Clima regSet decalcWeekday Sun, setBD_Hk4_Clima regSet decalcWeekday Sun) ## (set Nachrichten message INFO Entkalkung jetzt Sonntags)
DOELSEIF
([19:00|3] and [Heizung] eq "Ein")(set WZ_Hk0_Clima regSet decalcWeekday Tue,set WZ_Hk1_Clima regSet decalcWeekday Tue, setBD_Hk4_Clima regSet decalcWeekday Tue) ## (set Nachrichten message INFO Entkalkung jetzt Dienstags)
DOELSEIF
([19:00|5] and [Heizung] eq "Ein")(set WZ_Hk0_Clima regSet decalcWeekday Thu,set WZ_Hk1_Clima regSet decalcWeekday Thu,set BD_Hk4_Clima regSet decalcWeekday Thu) ## (set Nachrichten message INFO Entkalkung jetzt Donnerstags)
   FUUID      5c443db1-f33f-b425-e4d1-244d8dfc23a6e705
   MODEL      FHEM
   NAME       Daily_Events
   NR         622
   NTFY_ORDER 50-Daily_Events
   STATE      cmd_2
   TYPE       DOIF
   VERSION    19786 2019-07-05 21:47:08
   READINGS:
     2019-09-07 16:00:00   cmd             2
     2019-09-07 16:00:00   cmd_event       timer_6
     2019-09-07 16:00:00   cmd_nr          2
     2019-09-01 17:05:34   mode            enabled
     2019-09-07 16:00:00   state           cmd_2
     2019-09-07 08:05:00   timer_01_c01    08.09.2019 08:05:00
     2019-09-07 07:00:00   timer_02_c02    08.09.2019 07:00:00
     2019-09-07 08:00:00   timer_03_c02    08.09.2019 08:00:00
     2019-09-07 10:00:00   timer_04_c02    08.09.2019 10:00:00
     2019-09-07 12:00:00   timer_05_c02    08.09.2019 12:00:00
     2019-09-07 16:00:00   timer_06_c02    08.09.2019 16:00:00
     2019-09-06 18:00:00   timer_07_c02    07.09.2019 18:00:00
     2019-09-06 20:21:14   timer_08_c02    07.09.2019 20:18:54
     2019-09-06 23:59:00   timer_09_c03    07.09.2019 23:59:00
     2019-09-07 00:01:00   timer_10_c03    08.09.2019 00:01:00
     2019-09-06 21:35:00   timer_11_c04    07.09.2019 21:35:00
     2019-09-06 23:45:00   timer_12_c05    07.09.2019 23:45:00
     2019-09-07 03:55:00   timer_13_c06    08.09.2019 03:55:00
     2019-09-06 18:00:00   timer_14_c07    07.09.2019 18:00:00|3
     2019-09-06 18:00:00   timer_15_c08    07.09.2019 18:00:00
     2019-09-07 08:05:00   timer_16_c09    08.09.2019 08:05:00|6
     2019-09-07 01:00:00   timer_17_c10    08.09.2019 01:00:00
     2019-09-06 19:00:00   timer_18_c11    07.09.2019 19:00:00|1
     2019-09-06 19:00:00   timer_19_c12    07.09.2019 19:00:00|3
     2019-09-06 19:00:00   timer_20_c13    07.09.2019 19:00:00|5
   Regex:
     accu:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday)
     1          ::DOIF_time_once($hash,1,$wday) or ::DOIF_time_once($hash,2,$wday) or ::DOIF_time_once($hash,3,$wday) or ::DOIF_time_once($hash,4,$wday) or ::DOIF_time_once($hash,5,$wday) or ::DOIF_time_once($hash,6,$wday) or ::DOIF_time_once($hash,7,$wday)
     10         ::DOIF_time_once($hash,17,$wday,"1") and ::InternalDoIf($hash,'Heizung','STATE') eq "Ein"
     11         ::DOIF_time_once($hash,18,$wday,"3") and ::InternalDoIf($hash,'Heizung','STATE') eq "Ein"
     12         ::DOIF_time_once($hash,19,$wday,"5") and ::InternalDoIf($hash,'Heizung','STATE') eq "Ein"
     2          ::DOIF_time_once($hash,8,$wday) or ::DOIF_time_once($hash,9,$wday)
     3          ::DOIF_time_once($hash,10,$wday)
     4          ::DOIF_time_once($hash,11,$wday)
     5          ::DOIF_time_once($hash,12,$wday)
     6          ::DOIF_time_once($hash,13,$wday,"3") and ($yday/2 ne int($yday/2))
     7          ::DOIF_time_once($hash,14,$wday) and ($wday= 4)
     8          ::DOIF_time_once($hash,15,$wday,"6") and ::InternalDoIf($hash,'Heizung','STATE') eq "Aus"
     9          ::DOIF_time_once($hash,16,$wday) and ($mday= 1)
   days:
     13         3
     15         6
     17         1
     18         3
     19         5
   devices:
     10          Heizung
     11          Heizung
     12          Heizung
     8           Heizung
     all         Heizung
   do:
     0:
       0           setreading KU_Sensor Batteriewechsel {([KU_Sensor:Batteriewechsel]+1)}, setreading WZ_Sensor Batteriewechsel {([WZ_Sensor:Batteriewechsel]+1)}, setreading AZ_Sensor Batteriewechsel {([AZ_Sensor:Batteriewechsel]+1)}, setreading WZ_Fenster Batteriewechsel {([WZ_Sensor:Batteriewechsel]+1)}, setreading KU_Fenster Batteriewechsel {([KU_Fenster:Batteriewechsel]+1)}, setreading SZ_Fenster Batteriewechsel {([SZ_Fenster:Batteriewechsel]+1)}, setreading AZ_Fenster Batteriewechsel {([AZ_Fenster:Batteriewechsel]+1)}, setreading BD_Fenster Batteriewechsel {([BD_Fenster:Batteriewechsel]+1)}, setreading BD_Hk4 Batteriewechsel {([BD_Hk4:Batteriewechsel]+1)}, setreading BD_Regler Batteriewechsel {([BD_Regler:Batteriewechsel]+1)}, setreading BD_T6 Batteriewechsel {([BD_T6:Batteriewechsel]+1)}, setreading FL_Tuer Batteriewechsel {([FL_Tuer:Batteriewechsel]+1)}, setreading FL_T6 Batteriewechsel {([FL_T6:Batteriewechsel]+1)}, setreading WZ_Balkon Batteriewechsel {([WZ_Balkon:Batteriewechsel]+1)}, setreading WZ_Hk0 Batteriewechsel {([WZ_Hk0:Batteriewechsel]+1)}, setreading WZ_Hk1 Batteriewechsel {([WZ_Hk1:Batteriewechsel]+1)}
     1:
       0          {Log 1, "Min ist ".ReadingsVal("Wetter_Pro","fc0_tempMin",0). "°C Max ist ".ReadingsVal("Wetter_Pro","fc0_tempMax",0)."°C Himmel ist zu ".ReadingsVal("Wetter_Borsdorf","cloudCover",0)."% bedeckt und Bedingung: ".ReadingsVal("Wetter_Borsdorf","condition",0)}
     10:
       0          set WZ_Hk0_Clima regSet decalcWeekday Sun,set WZ_Hk1_Clima regSet decalcWeekday Sun, setBD_Hk4_Clima regSet decalcWeekday Sun
     11:
       0          set WZ_Hk0_Clima regSet decalcWeekday Tue,set WZ_Hk1_Clima regSet decalcWeekday Tue, setBD_Hk4_Clima regSet decalcWeekday Tue
     12:
       0          set WZ_Hk0_Clima regSet decalcWeekday Thu,set WZ_Hk1_Clima regSet decalcWeekday Thu,set BD_Hk4_Clima regSet decalcWeekday Thu
     13:
     2:
       0          trigger addLog
     3:
       0          {fhem("set BAjetzt " . (ReadingsVal("BAmorgen","state","frei"))),Log 1, "Betriebsart ist jetzt: ".ReadingsVal("BAmorgen","state","frei")}
     4:
       0          set Nachrichten cmdSendSilent {plotAsPng('weblink_001WZ')},set Nachrichten cmdSendSilent {plotAsPng('weblink_004BD')}
     5:
       0          set Sonnenaufgang {(sunrise())}, set Sonnenuntergang {(sunset())}
     6:
       0          set Nachrichten message Bitte Mülltonne zur Leerung bereitstellen!
       1          IF ([androidandrea] eq "present")(set Nachrichten message @Andrea Bitte Mülltonne zur Leerung bereitstellen!)
     7:
       0          set Nachrichten message Bitte Abtreter herein holen!
       1          IF ([androidandrea] eq "present")(set Nachrichten message @Andrea Bitte Abtreter herein holen!)
     8:
       0          set WZ_Hk0_Clima controlManu on,set WZ_Hk1_Clima controlManu on,set BD_Hk4_Clima controlManu on
     9:
       0          setreading BD_Luefter_Sw_01 Schwelle {(80-abs($month-7)*2)}
   helper:
     event      timer_6
     globalinit 1
     last_timer 20
     sleeptimer -1
     timerdev   
     timerevent timer_6
     timereventsState
     triggerDev
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: timer_6
       state: cmd_2
     timerevents:
       timer_6
     triggerEvents:
       timer_6
   internals:
     10          Heizung:STATE
     11          Heizung:STATE
     12          Heizung:STATE
     8           Heizung:STATE
     all         Heizung:STATE
   interval:
   intervalfunc:
   itimer:
   localtime:
     0          1567922700
     1          1567918800
     10         1567884900
     11         1567892700
     12         1567907700
     13         1567872000
     14         1567872000
     15         1567922700
     16         1567897200
     17         1567875600
     18         1567875600
     19         1567875600
     2          1567922400
     3          1567929600
     4          1567936800
     5          1567951200
     6          1567872000
     7          1567880334
     8          1567893540
     9          1567893660
   readings:
   realtime:
     0          08:05:00
     1          07:00:00
     10         21:35:00
     11         23:45:00
     12         03:55:00
     13         18:00:00
     14         18:00:00
     15         08:05:00
     16         01:00:00
     17         19:00:00
     18         19:00:00
     19         19:00:00
     2          08:00:00
     3          10:00:00
     4          12:00:00
     5          16:00:00
     6          18:00:00
     7          20:18:54
     8          23:59:00
     9          00:01:00
   time:
     0          08:05:00
     1          07:00:00
     10         21:35:00
     11         23:45:00
     12         03:55:00
     13         18:00:00
     14         18:00:00
     15         08:05:00
     16         01:00:00
     17         19:00:00
     18         19:00:00
     19         19:00:00
     2          08:00:00
     3          10:00:00
     4          12:00:00
     5          16:00:00
     6          18:00:00
     7          {sunset(0,"17:00","22:00")}
     8          23:59:00
     9          00:01:00
   timeCond:
     0          0
     1          1
     10         3
     11         4
     12         5
     13         6
     14         7
     15         8
     16         9
     17         10
     18         11
     19         12
     2          1
     3          1
     4          1
     5          1
     6          1
     7          1
     8          2
     9          2
   timer:
     0          0
     1          0
     10         0
     11         0
     12         0
     13         0
     14         0
     15         0
     16         0
     17         0
     18         0
     19         0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
     8          0
     9          0
   timers:
     0           0
     1           1  2  3  4  5  6  7
     10          17
     11          18
     12          19
     2           8  9
     3           10
     4           11
     5           12
     6           13
     7           14
     8           15
     9           16
   triggertime:
     1567872000:
       localtime  1567872000
       hash:
     1567875600:
       localtime  1567875600
       hash:
     1567880334:
       localtime  1567880334
       hash:
     1567884900:
       localtime  1567884900
       hash:
     1567892700:
       localtime  1567892700
       hash:
     1567893540:
       localtime  1567893540
       hash:
     1567893660:
       localtime  1567893660
       hash:
     1567897200:
       localtime  1567897200
       hash:
     1567907700:
       localtime  1567907700
       hash:
     1567918800:
       localtime  1567918800
       hash:
     1567922400:
       localtime  1567922400
       hash:
     1567922700:
       localtime  1567922700
       hash:
     1567929600:
       localtime  1567929600
       hash:
     1567936800:
       localtime  1567936800
       hash:
     1567951200:
       localtime  1567951200
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   room       085System


Es geht um die Timer 14 und 15.
Falls noch Input fehlt, dann bitte fragen.
Habt ihr eine Idee, wo das Problem liegt?

Danke für eure Hilfe und ein schönes WE.
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

locodriver

@Damian: Danke für den Tipp. Komischer Weise funzt aber die nächste Bedingung auch so:

([01:00] and ($mday= 1))(setreading BD_Luefter_Sw_01 Schwelle {(80-abs($month-7)*2)})

Aber das ist nicht das Problem, wie gesagt der Perlausdruck war nur ein Test, um das Problem einzugrenzen. Ich habe es aber angepasst...

Die Fage zielt auf diesen Zweig ab:

([18:00|3] and ($yday/2 ne int($yday/2)))(set Nachrichten message Bitte Mülltonne zur Leerung bereitstellen!)(IF ([androidandrea] eq "present")(set Nachrichten message @Andrea Bitte Mülltonne zur Leerung bereitstellen!))

und die nächste, die original so definirt war:

([18:00|4] )(set Nachrichten message Bitte Abtreter herein holen!)(IF ([androidandrea] eq "present")(set Nachrichten message @Andrea Bitte Abtreter herein holen!))

fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

locodriver

Wie meinst du das?
Ich prüfe, ob es eine gerade/ungerade Tagresnummer ist. So bekomme ich die Meldung nur in jeder zweiten Woche.
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

Damian

Zitat von: locodriver am 08 September 2019, 18:43:52
Wie meinst du das?
Ich prüfe, ob es eine gerade/ungerade Tagresnummer ist. So bekomme ich die Meldung nur in jeder zweiten Woche.

Dann eher:

$yday % 2

ist bei ungerade wahr. Ansonsten kann ich dir mit den bisherigen Informationen nicht sagen, warum es nicht funktioniert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

locodriver

Hmmm... Ich stehe gerade etwas auf dem Schlauch: Wie müsste dann die Abfrage heißen?

fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

locodriver

fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

locodriver

Nach längerer Zeit eine Rückmeldung von mir.
Das Problem saß wieder mal vor dem Rechner... Vor einiger Zeit habe ich ab Timer 3 einige Zeiten ergänzt und dabei nicht bedacht, dass die gleichen Zeitangaben ohne weitere Bedingungen in einem DOIF nur einmal funzen bzw. der erste Zweig der zutrifft.

Also habe ich die Zeitangaben der beiden Timer verändert und alles ist gut. Es dauert manchmal etwas, bis man den Fehler bemerkt...

Schönens Adventswochenende!
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster