[vermutlich Doppelmeldung] WeekdayTimer schaltet nicht aus

Begonnen von butsify, 20 November 2019, 18:30:25

Vorheriges Thema - Nächstes Thema

butsify

Hallo,

ich versuche seit einiger Zeit den WeekdayTimer korrekt für meine Heizungssteuerung einzuricht. Leider habe ich das Problem, dass er zwar spannenderweise sehr zuverlässig einschaltet, aber nicht ausschaltet.

Grundsätzlich habe ich 5 verschiedene Heizkreisläufe, welche ich einzeln ansteuere. Das Problem existiert bei allen 5 - ich gehe aber nur auf einen näher ein.

Definition

defmod liv_wdt_heating WeekdayTimer sys_http_alpha2_changes de Mo-Mi|15:00|liv_set_mode:1 Do-Fr|07:00|liv_set_mode:1 Mo-Fr|23:00|liv_set_mode:2 $we|08:00|liv_set_mode:1 $we|23:55|liv_set_mode:2
attr liv_wdt_heating commandTemplate set $NAME  $EVENT
attr liv_wdt_heating disable 0
attr liv_wdt_heating room Heizung,Wohnzimmer
attr liv_wdt_heating switchInThePast 1
attr liv_wdt_heating verbose 5


liv_set_mode ist ein set von einem HTTPMOD. 1 ist hierbei "Ein" und 2 ist "Aus".

switchInThePast ist aktiviert, weil HTTPMOD nicht als Heizung erkannt wird, ich aber meinen Raspberry immer um 01:30 reboote (nicht wegen FHEM) und ich aufgrund meiner schwerfälligen Heizung hier sonst falsche Werte hätte, wenn der WeekdayTimer nicht die richtigen Werte nochmals setzt. Daher wird im Startup Notify der Befehl ausgeführt: set bat_wdt_heating WDT_Params all. Dadurch wird auch immer der richtige Status der Heizung gesetzt (2). Ohne switchInThePast würde das ja meines Verständins nach (und auch laut meinen Tests) nicht klappen.

Internals

Internals:
   COMMAND   
   CONDITION 
   DEF        sys_http_alpha2_changes de Mo-Mi|15:00|liv_set_mode:1 Do-Fr|07:00|liv_set_mode:1 Mo-Fr|23:00|liv_set_mode:2 $we|08:00|liv_set_mode:1 $we|23:55|liv_set_mode:2
   DEVICE     sys_http_alpha2_changes
   FUUID      5dadfe35-f33f-393b-b6d7-affb65a9bf44b5db
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       liv_wdt_heating
   NR         317
   Profil 0: Sonntag 08:00:00 liv_set_mode:1, 23:55:00 liv_set_mode:2
   Profil 1: Montag 15:00:00 liv_set_mode:1, 23:00:00 liv_set_mode:2
   Profil 2: Dienstag 15:00:00 liv_set_mode:1, 23:00:00 liv_set_mode:2
   Profil 3: Mittwoch 15:00:00 liv_set_mode:1, 23:00:00 liv_set_mode:2
   Profil 4: Donnerstag 07:00:00 liv_set_mode:1, 23:00:00 liv_set_mode:2
   Profil 5: Freitag 07:00:00 liv_set_mode:1, 23:00:00 liv_set_mode:2
   Profil 6: Samstag 08:00:00 liv_set_mode:1, 23:55:00 liv_set_mode:2
   Profil 7: Wochenende 08:00:00 liv_set_mode:1, 23:55:00 liv_set_mode:2
   STATE      liv_set_mode:1
   STILLDONETIME 0
   TYPE       WeekdayTimer
   READINGS:
     2019-11-20 17:57:20   currValue       liv_set_mode:1
     2019-11-20 17:56:03   disabled        0
     2019-11-20 17:57:20   nextUpdate      2019-11-20 23:00:00
     2019-11-20 17:57:20   nextValue       liv_set_mode:2
     2019-11-20 17:57:20   state           liv_set_mode:1
   SWITCHINGTIMES:
     Mo-Mi|15:00|liv_set_mode:1
     Do-Fr|07:00|liv_set_mode:1
     Mo-Fr|23:00|liv_set_mode:2
     $we|08:00|liv_set_mode:1
     $we|23:55|liv_set_mode:2
   TIMER:
     liv_wdt_heating_1:
       HASH       liv_wdt_heating
       MODIFIER   1
       NAME       liv_wdt_heating_1
       immerSchalten 1
     liv_wdt_heating_3:
       HASH       liv_wdt_heating
       MODIFIER   3
       NAME       liv_wdt_heating_3
     liv_wdt_heating_SetTimerOfDay:
       HASH       liv_wdt_heating
       MODIFIER   SetTimerOfDay
       NAME       liv_wdt_heating_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
     liv_wdt_heating_delayed:
       HASH       liv_wdt_heating
       MODIFIER   delayed
       NAME       liv_wdt_heating_delayed
   dayNumber:
     !$we       8
     $we        7
     di         2
     do         4
     fr         5
     mi         3
     mo         1
     sa         6
     so         0
   helper:
     daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
     daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
     SWITCHINGTIME:
       0:
         08:00:00   liv_set_mode:1
         23:55:00   liv_set_mode:2
       1:
         15:00:00   liv_set_mode:1
         23:00:00   liv_set_mode:2
       2:
         15:00:00   liv_set_mode:1
         23:00:00   liv_set_mode:2
       3:
         15:00:00   liv_set_mode:1
         23:00:00   liv_set_mode:2
       4:
         07:00:00   liv_set_mode:1
         23:00:00   liv_set_mode:2
       5:
         07:00:00   liv_set_mode:1
         23:00:00   liv_set_mode:2
       6:
         08:00:00   liv_set_mode:1
         23:55:00   liv_set_mode:2
       7:
         08:00:00   liv_set_mode:1
         23:55:00   liv_set_mode:2
     WEDAYS:
       3          1
       4          1
   longDays:
     de:
       Sonntag
       Montag
       Dienstag
       Mittwoch
       Donnerstag
       Freitag
       Samstag
       Wochenende
       Werktags
     en:
       Sunday
       Monday
       Tuesday
       Wednesday
       Thursday
       Friday
       Saturday
       weekend
       weekdays
     fr:
       Dimanche
       Lundi
       Mardi
       Mercredi
       Jeudi
       Vendredi
       Samedi
       weekend
       jours de la semaine
   profil:
     1:
       EPOCH      1574258400
       PARA       liv_set_mode:1
       TIME       15:00
       TAGE:
         1
         2
         3
     2:
       EPOCH      1574229600
       PARA       liv_set_mode:1
       TIME       07:00
       TAGE:
         4
         5
     3:
       EPOCH      1574287200
       PARA       liv_set_mode:2
       TIME       23:00
       TAGE:
         1
         2
         3
         4
         5
     4:
       EPOCH      1574233200
       PARA       liv_set_mode:1
       TIME       08:00
       TAGE:
         7
     5:
       EPOCH      1574290500
       PARA       liv_set_mode:2
       TIME       23:55
       TAGE:
         7
   profile_IDX:
     0:
       08:00:00   4
       23:55:00   5
     1:
       15:00:00   1
       23:00:00   3
     2:
       15:00:00   1
       23:00:00   3
     3:
       15:00:00   1
       23:00:00   3
     4:
       07:00:00   2
       23:00:00   3
     5:
       07:00:00   2
       23:00:00   3
     6:
       08:00:00   4
       23:55:00   5
     7:
       08:00:00   4
       23:55:00   5
   shortDays:
     de:
       so
       mo
       di
       mi
       do
       fr
       sa
       $we
       !$we
     en:
       su
       mo
       tu
       we
       th
       fr
       sa
       $we
       !$we
     fr:
       di
       lu
       ma
       me
       je
       ve
       sa
       $we
       !$we
Attributes:
   commandTemplate set $NAME  $EVENT
   disable    0
   room       Heizung,Wohnzimmer
   switchInThePast 1
   verbose    5


Im Gegensatz zu einem anderen Thread den ich gelesen habe, werden bei mir Log Einträge zum Zeitpunkt der Abschaltung generiert (verbose 5). Was mir jedoch aufgefallen ist: "result of condition:0"


2019.11.19 23:55:00 4: [bat_wdt_heating] time=23:55/1574204100 delay=0, nextDelay=60, nextRetry=1574204160
2019.11.19 23:55:00 4: [bat_wdt_heating] delayedExecutionCond:0
2019.11.19 23:55:00 4: [bat_wdt_heating] result of delayedExecutionCond: 0
2019.11.19 23:55:00 4: [bat_wdt_heating] list of window sensors found: 'bat_wdt_heating'
2019.11.19 23:55:00 4: [bat_wdt_heating] condition: - Tage:7
2019.11.19 23:55:00 5: [bat_wdt_heating] condition: {my $days={};;map{$days->{$_}=1}();;;;( 1 && (defined $days->{$wday} ||  $we))}
2019.11.19 23:55:00 5: [bat_wdt_heating] result of condition:0
2019.11.19 23:55:00 4: [kit_wdt_heating] time=23:55/1574204100 delay=0, nextDelay=60, nextRetry=1574204160
2019.11.19 23:55:00 4: [kit_wdt_heating] delayedExecutionCond:0
2019.11.19 23:55:00 4: [kit_wdt_heating] result of delayedExecutionCond: 0
2019.11.19 23:55:00 4: [kit_wdt_heating] list of window sensors found: 'kit_wdt_heating'
2019.11.19 23:55:00 4: [kit_wdt_heating] condition: - Tage:7
2019.11.19 23:55:00 5: [kit_wdt_heating] condition: {my $days={};;map{$days->{$_}=1}();;;;( 1 && (defined $days->{$wday} ||  $we))}
2019.11.19 23:55:00 5: [kit_wdt_heating] result of condition:0
2019.11.19 23:55:00 4: [liv_wdt_heating] time=23:55/1574204100 delay=0, nextDelay=60, nextRetry=1574204160
2019.11.19 23:55:00 4: [liv_wdt_heating] delayedExecutionCond:0
2019.11.19 23:55:00 4: [liv_wdt_heating] result of delayedExecutionCond: 0
2019.11.19 23:55:00 4: [liv_wdt_heating] list of window sensors found: 'liv_wdt_heating'
2019.11.19 23:55:00 4: [liv_wdt_heating] condition: - Tage:7
2019.11.19 23:55:00 5: [liv_wdt_heating] condition: {my $days={};;map{$days->{$_}=1}();;;;( 1 && (defined $days->{$wday} ||  $we))}
2019.11.19 23:55:00 5: [liv_wdt_heating] result of condition:0


bat_wdt_heating und kit_wdt_heating sollten zur gleichen Zeit schalten, haben aber wie geschrieben ebenfalls von dem Problem betroffen.

Hat jemand Ideen dazu? Ich wäre euch wirklich dankbar.

Beste Grüße,
Tobias

amenomade

Und was ist genau das Problem? Er testet ja um 23:55 die condition, und stellt fest, dass es nicht trifft. Dann schaltet er nicht. Er tut was er soll.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

butsify

#2
Hi

Zitat von: amenomade am 20 November 2019, 18:56:02
Und was ist genau das Problem? Er testet ja um 23:55 die condition, und stellt fest, dass es nicht trifft. Dann schaltet er nicht. Er tut was er soll.

Ist grad ein wenig peinlich, aber du hast mich grad nochmals dazu gebracht genau auf die Zeit zu schauen - ich hab ihn ja auf 23:00 gestellt und da ist kein Log drin. :o

Zitat von: butsify am 20 November 2019, 18:30:25
Im Gegensatz zu einem anderen Thread den ich gelesen habe, werden bei mir Log Einträge zum Zeitpunkt der Abschaltung generiert (verbose 5). Was mir jedoch aufgefallen ist: "result of condition:0"

Daher denke ich doch, dass das Problem aus dem anderen Thread auch meins ist. Ich hab das aktualisiert und prüfe das nochmals. Danke für den Denkanstoß  ;D

Update:
Hier der Thread den ich meine: https://forum.fhem.de/index.php/topic,104167.0.html

Beta-User

Vielleicht eine Anmerkung noch für die Allgemeinheit:

Die neueren Versionen des WeekdayTimer sollten sich automatisch korrekt auch am ersten Tag aktualisieren und switchInThePast ausführen, ohne dass man den setter bemühen muß.

(Wer da Probleme feststellt, also dass zu viel geschaltet wird, bitte melden...)

(Danke an den TE für's Wiederöffnen des Threads und die nette Rückmeldung via pm, eine Ergänzung des Titels mit z.B. [vermutlich Doppelmeldung] und Verlinken in den anderen Thread wäre noch nicht schlecht).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files