Neues Modul - Heating_Control, WeekdayTimer

Begonnen von Dietmar63, 04 Januar 2013, 19:42:26

Vorheriges Thema - Nächstes Thema

amenomade

Hmm... ich bin ein bisschen verwirrt, vielleicht weil ich die Reihenfolge von deinen letzten Massnahme nicht kenne.

hc.st.Schlafzimmer.Urlaub.zuhause ist auf Grund der Condition schon lange inaktiv. Das die Heizung nicht geschaltet wird scheint normal zu sein. Das hc.st.Schlafzimmer.Urlaub.zuhause selbst auf "open window" bleibt könnte auch normal sein, wenn das Modul inaktiv ist. Die Timestamps vonden Readings sind aber komisch: wenn die Condition das Modul verhindert, werden currValue usw. immer noch kalkuliert, aber "state" sollte sich nicht ändern.

hc.st.Schlafzimmer.Arbeit hat auf night geschaltet, was richtig ist. Aber vielleicht weil Du etwas anderes inzwischen geschaltet hast.

Was interessant wäre, wäre diese "list" von hc.st.Schlafzimmer.Arbeit zu sehen, wenn er in eine "falschem" Zustand sich befindet.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

netwalk

Danke, dass du dich meines Problems annimmst.
Ich versuche mal etwas Klarheit zu schaffen:

hc.st.Schlafzimmer.Urlaub.zuhause können wir z.Zt. vernachlässigen, Bedingung trifft nicht zu.
Im folgenden die Chronologie der Abläufe:

23:58:35 hm.fk.st.Schlafzimmer.links wird geöffnet. Zu diesem Zeitpunkt war der Modus von hc.st.Schlafzimmer.Arbeit auf "day". Durch den Fensterkontakt sprang der Heizungsregler auf 5.5°.

00:12:15 wurde der Wandtaster "Nachtmodus" gedrückt, dabei wird an alle Heizkörper der Befehl "set ... night" geschickt, der Regler im Schlafzimmer war im Fenster-Offen-Modus und reagierte deshalb wahrscheinlich nicht (habe ich noch nicht ausgetestet).

02:31:00 soll über hc.st.Schlafzimmer.Arbeit der Heizungsregler abermals "set ... night" erhalten. Wegen des offenen Fensters wurde "delayed" protokolliert.

06:36:32 wurde zusätzlich hm.fk.st.Schlafzimmer.rechts geöffnet.

07:01:00 wurde die Meldung über den verpassten Timer um 02:31:00 protokolliert, seltsamerweise ist 07:01:00 als Zeitpunkt nur in hc.st.Schlafzimmer.Urlaub.zuhause definiert (ist ja eigentlich inaktiv).

07:01:26 wurde hm.fk.st.Schlafzimmer.rechts geschlossen.

07:01:27 wurde hm.fk.st.Schlafzimmer.links geschlossen.

07:02:00 wurde die Meldung über "delay of switching stopped" protokolliert, weil beide Fenster geschlossen sind. Mehr passierte nicht...

08:40:21 habe ich durch "modify" von hc.st.Schlafzimmer.Arbeit die Umschaltung von "open window" auf "night" erzwungen.

Danach wurde erst das "List" von hc.st.Schlafzimmer.Arbeit erstellt...

Ist das halbwegs verständlich?
live long and prosper
netwalk
_______________________________________________
INTEL NUC7CJYH, Homematic mit 3x HMLGW, JEELINK mit 18x TX29-DTH-IT, DUOFERNSTICK, FB7590 mit FBDECT, NETATMO, Philips HUE, RFXtrx433, Ubiquiti G3 PRO/FLEX/DOME/MICRO

netwalk

@amenomade

So, hier ist einmal das fragliche List im Zustand "beide Fenster auf":

Internals:
   COMMAND
   CONDITION  (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off")
   DEF        struct.Heizung.st.Schlafzimmer 1234|16:31:00|day 5|14:01:00|day 60|07:01:00|day 1234560|02:31:00|night (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off")
   DEVICE     struct.Heizung.st.Schlafzimmer
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       hc.st.Schlafzimmer.Arbeit
   NR         1450
   Profil 0: Sonntag 02:31:00 night, 07:01:00 day
   Profil 1: Montag 02:31:00 night, 16:31:00 day
   Profil 2: Dienstag 02:31:00 night, 16:31:00 day
   Profil 3: Mittwoch 02:31:00 night, 16:31:00 day
   Profil 4: Donnerstag 02:31:00 night, 16:31:00 day
   Profil 5: Freitag 02:31:00 night, 14:01:00 day
   Profil 6: Samstag 02:31:00 night, 07:01:00 day
   STATE      open window
   STILLDONETIME 0
   TYPE       Heating_Control
   VERZOEGRUNG 1
   VERZOEGRUNG_IDX 3
   READINGS:
     2017-11-21 16:31:00   currValue       day
     2017-11-21 16:31:00   nextUpdate      2017-11-22 02:31:00
     2017-11-21 16:31:00   nextValue       night
     2017-11-22 08:47:00   state           open window
   SWITCHINGTIMES:
     1234|16:31:00|day
     5|14:01:00|day
     60|07:01:00|day
     1234560|02:31:00|night
   TIMER:
     hc.st.Schlafzimmer.Arbeit_1:
       HASH       hc.st.Schlafzimmer.Arbeit
       MODIFIER   1
       NAME       hc.st.Schlafzimmer.Arbeit_1
     hc.st.Schlafzimmer.Arbeit_2:
       HASH       hc.st.Schlafzimmer.Arbeit
       MODIFIER   2
       NAME       hc.st.Schlafzimmer.Arbeit_2
     hc.st.Schlafzimmer.Arbeit_3:
       HASH       hc.st.Schlafzimmer.Arbeit
       MODIFIER   3
       NAME       hc.st.Schlafzimmer.Arbeit_3
     hc.st.Schlafzimmer.Arbeit_SetTimerOfDay:
       HASH       hc.st.Schlafzimmer.Arbeit
       MODIFIER   SetTimerOfDay
       NAME       hc.st.Schlafzimmer.Arbeit_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
     hc.st.Schlafzimmer.Arbeit_delayed:
       HASH       hc.st.Schlafzimmer.Arbeit
       MODIFIER   delayed
       NAME       hc.st.Schlafzimmer.Arbeit_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:
         02:31:00   night
         07:01:00   day
       1:
         02:31:00   night
         16:31:00   day
       2:
         02:31:00   night
         16:31:00   day
       3:
         02:31:00   night
         16:31:00   day
       4:
         02:31:00   night
         16:31:00   day
       5:
         02:31:00   night
         14:01:00   day
       6:
         02:31:00   night
         07:01:00   day
   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      1511364660
       PARA       day
       TIME       16:31:00
       TAGE:
         1
         2
         3
         4
     2:
       EPOCH      1511355660
       PARA       day
       TIME       14:01:00
       TAGE:
         5
     3:
       EPOCH      1511330460
       PARA       day
       TIME       07:01:00
       TAGE:
         0
         6
     4:
       EPOCH      1511314260
       PARA       night
       TIME       02:31:00
       TAGE:
         0
         1
         2
         3
         4
         5
         6
   profile_IDX:
     0:
       02:31:00   4
       07:01:00   3
     1:
       02:31:00   4
       16:31:00   1
     2:
       02:31:00   4
       16:31:00   1
     3:
       02:31:00   4
       16:31:00   1
     4:
       02:31:00   4
       16:31:00   1
     5:
       02:31:00   4
       14:01:00   2
     6:
       02:31:00   4
       07:01:00   3
   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 controlMode $EVENT
   room       Heizung
   switchInThePast 1
   windowSensor hm.fk.st.Schlafzimmer.links hm.fk.st.Schlafzimmer.rechts


Dann wurden beide Fenster geschlossen:
2017.11.22 08:51:00 3: [hc.st.Schlafzimmer.Urlaub.zuhause] delay of switching struct.Heizung.st.Schlafzimmer stopped.
2017.11.22 08:51:00 3: [hc.st.Schlafzimmer.Arbeit] delay of switching struct.Heizung.st.Schlafzimmer stopped.


und hier das List nach Schließen beider Fenster:
Internals:
   COMMAND
   CONDITION  (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off")
   DEF        struct.Heizung.st.Schlafzimmer 1234|16:31:00|day 5|14:01:00|day 60|07:01:00|day 1234560|02:31:00|night (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off")
   DEVICE     struct.Heizung.st.Schlafzimmer
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       hc.st.Schlafzimmer.Arbeit
   NR         1450
   Profil 0: Sonntag 02:31:00 night, 07:01:00 day
   Profil 1: Montag 02:31:00 night, 16:31:00 day
   Profil 2: Dienstag 02:31:00 night, 16:31:00 day
   Profil 3: Mittwoch 02:31:00 night, 16:31:00 day
   Profil 4: Donnerstag 02:31:00 night, 16:31:00 day
   Profil 5: Freitag 02:31:00 night, 14:01:00 day
   Profil 6: Samstag 02:31:00 night, 07:01:00 day
   STATE      open window
   STILLDONETIME 0
   TYPE       Heating_Control
   READINGS:
     2017-11-22 08:51:00   currValue       night
     2017-11-22 08:51:00   nextUpdate      2017-11-22 16:31:00
     2017-11-22 08:51:00   nextValue       day
     2017-11-22 08:50:00   state           open window
   SWITCHINGTIMES:
     1234|16:31:00|day
     5|14:01:00|day
     60|07:01:00|day
     1234560|02:31:00|night
   TIMER:
     hc.st.Schlafzimmer.Arbeit_1:
       HASH       hc.st.Schlafzimmer.Arbeit
       MODIFIER   1
       NAME       hc.st.Schlafzimmer.Arbeit_1
     hc.st.Schlafzimmer.Arbeit_2:
       HASH       hc.st.Schlafzimmer.Arbeit
       MODIFIER   2
       NAME       hc.st.Schlafzimmer.Arbeit_2
     hc.st.Schlafzimmer.Arbeit_3:
       HASH       hc.st.Schlafzimmer.Arbeit
       MODIFIER   3
       NAME       hc.st.Schlafzimmer.Arbeit_3
     hc.st.Schlafzimmer.Arbeit_SetTimerOfDay:
       HASH       hc.st.Schlafzimmer.Arbeit
       MODIFIER   SetTimerOfDay
       NAME       hc.st.Schlafzimmer.Arbeit_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
     hc.st.Schlafzimmer.Arbeit_delayed:
       HASH       hc.st.Schlafzimmer.Arbeit
       MODIFIER   delayed
       NAME       hc.st.Schlafzimmer.Arbeit_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:
         02:31:00   night
         07:01:00   day
       1:
         02:31:00   night
         16:31:00   day
       2:
         02:31:00   night
         16:31:00   day
       3:
         02:31:00   night
         16:31:00   day
       4:
         02:31:00   night
         16:31:00   day
       5:
         02:31:00   night
         14:01:00   day
       6:
         02:31:00   night
         07:01:00   day
   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      1511364660
       PARA       day
       TIME       16:31:00
       TAGE:
         1
         2
         3
         4
     2:
       EPOCH      1511355660
       PARA       day
       TIME       14:01:00
       TAGE:
         5
     3:
       EPOCH      1511330460
       PARA       day
       TIME       07:01:00
       TAGE:
         0
         6
     4:
       EPOCH      1511314260
       PARA       night
       TIME       02:31:00
       TAGE:
         0
         1
         2
         3
         4
         5
         6
   profile_IDX:
     0:
       02:31:00   4
       07:01:00   3
     1:
       02:31:00   4
       16:31:00   1
     2:
       02:31:00   4
       16:31:00   1
     3:
       02:31:00   4
       16:31:00   1
     4:
       02:31:00   4
       16:31:00   1
     5:
       02:31:00   4
       14:01:00   2
     6:
       02:31:00   4
       07:01:00   3
   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 controlMode $EVENT
   room       Heizung
   switchInThePast 1
   windowSensor hm.fk.st.Schlafzimmer.links hm.fk.st.Schlafzimmer.rechts


Zur Zeit steht im Frontend:

DeviceOverview
hc.st.Schlafzimmer.Arbeit                                         open window


obwohl im List currValue auf "night" steht.
Der Heizkörper hat immer noch die "day"-Temperatur, es wurde kein "set ... night" abgesetzt.
live long and prosper
netwalk
_______________________________________________
INTEL NUC7CJYH, Homematic mit 3x HMLGW, JEELINK mit 18x TX29-DTH-IT, DUOFERNSTICK, FB7590 mit FBDECT, NETATMO, Philips HUE, RFXtrx433, Ubiquiti G3 PRO/FLEX/DOME/MICRO

amenomade

So weit ich das Modul verstanden habe, setzt er immer noch alle Timer, und ändert die unabhängig von der Kondition. Nur wenn diese Kondition nicht wahr ist wenn die Schaltzeit erreicht ist, wird der Befehl nicht ausgeführt.

Die Fenstersensoren verzögern die Schalttimer bis die Fenster wieder "zu" sind. Dann sollten alle verpasste Timer schalten.

Jetzt fehlen mir aber immer noch Informationen, um das Verhalten zu verstehen. Es wäre hilfreich, die gesamte Log von allen relevanten Events und deren Reihenfolge zu sehen. Kannst Du evtl. eine eigene Filelog mit allen Devices erstellen?

Im Moment kann ich mir nur vorstellen, dass die Timers nicht diejenige sind, die wir uns vorstellen. Dafür sollte man andere Meldung in der Log (mit verbose 5) sehen, wie z.B. "setTimer - timer seems to be active today:", oder "past timer on DEVICE at  <time> activated", oder "result of condition". Die wären auch wichtig, um das ganze zu verstehen.

Ich habe gestern und heute wenig Zeit gehabt, aber ich werde versuchen das ganze zu simulieren, um selbst zu sehen. Deine Logs wären aber schon hilfreich.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Hier eine Simulation bei mir:
Zeitprofil: 00:08 day 00:10:00 night, 00:12:00 day, 00:14:00 night, 00:16:00 day, 00:18:00 night, 00:20:00 day, 00:22:00 night, 00:24:00 day, 00:26:00 night
Am Anfang sind die Fenster zu, sc.Heizung.Auto ist "on", und beide sc.Urlaub.* sind "off" (=> Condition = wahr)
Log:
2017.11.24 00:08:00 4: [hc.st.Schlafzimmer.Arbeit] time=00:08/1511478480 delay=0, nextDelay=60, nextRetry=1511478540
2017.11.24 00:08:00 4: [hc.st.Schlafzimmer.Arbeit] delayedExecutionCond:0
2017.11.24 00:08:00 4: [hc.st.Schlafzimmer.Arbeit] result of delayedExecutionCond:0
2017.11.24 00:08:00 4: [hc.st.Schlafzimmer.Arbeit] list of window sensors found: 'hm.fk.st.Schlafzimmer.links hm.fk.st.Schlafzimmer.rechts hc.st.Schlafzimmer.Arbeit'
2017.11.24 00:08:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.links' Reading/Attribute 'state' is 'closed'
2017.11.24 00:08:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.rechts' Reading/Attribute 'state' is 'closed'
2017.11.24 00:08:00 4: [hc.st.Schlafzimmer.Arbeit] condition:(ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") - Tage:0,1,2,3,4,5,6
2017.11.24 00:08:00 5: [hc.st.Schlafzimmer.Arbeit] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") && (defined $days->{$wday}))}
2017.11.24 00:08:00 5: [hc.st.Schlafzimmer.Arbeit] result of condition:1
2017.11.24 00:08:00 4: [hc.st.Schlafzimmer.Arbeit] Update   - timer seems to be active today: 0123456|00:08|day
2017.11.24 00:08:00 4: [hc.st.Schlafzimmer.Arbeit] aktParam: newParam:day - is  not disabled
2017.11.24 00:08:00 4: [hc.st.Schlafzimmer.Arbeit] command: 'set $NAME controlMode $EVENT' executed with %EVENT=>day,%NAME=>struct.Heizung.st.Schlafzimmer
2017.11.24 00:10:00 4: [hc.st.Schlafzimmer.Arbeit] time=00:10/1511478600 delay=0, nextDelay=60, nextRetry=1511478660
2017.11.24 00:10:00 4: [hc.st.Schlafzimmer.Arbeit] delayedExecutionCond:0
2017.11.24 00:10:00 4: [hc.st.Schlafzimmer.Arbeit] result of delayedExecutionCond:0
2017.11.24 00:10:00 4: [hc.st.Schlafzimmer.Arbeit] list of window sensors found: 'hm.fk.st.Schlafzimmer.links hm.fk.st.Schlafzimmer.rechts hc.st.Schlafzimmer.Arbeit'
2017.11.24 00:10:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.links' Reading/Attribute 'state' is 'open'
2017.11.24 00:10:00 3: [hc.st.Schlafzimmer.Arbeit] switch of struct.Heizung.st.Schlafzimmer delayed - sensor 'hm.fk.st.Schlafzimmer.links' Reading/Attribute 'state' is 'open'
2017.11.24 00:10:00 5: [hc.st.Schlafzimmer.Arbeit] removing Timer: hc.st.Schlafzimmer.Arbeit_2
2017.11.24 00:10:00 5: [hc.st.Schlafzimmer.Arbeit] setting  Timer: hc.st.Schlafzimmer.Arbeit_2 2017-11-24 00:11:00
2017.11.24 00:11:00 4: [hc.st.Schlafzimmer.Arbeit] time=00:10/1511478600 delay=60, nextDelay=120, nextRetry=1511478720
2017.11.24 00:11:00 4: [hc.st.Schlafzimmer.Arbeit] delayedExecutionCond:0
2017.11.24 00:11:00 4: [hc.st.Schlafzimmer.Arbeit] result of delayedExecutionCond:0
2017.11.24 00:11:00 4: [hc.st.Schlafzimmer.Arbeit] list of window sensors found: 'hm.fk.st.Schlafzimmer.links hm.fk.st.Schlafzimmer.rechts hc.st.Schlafzimmer.Arbeit'
2017.11.24 00:11:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.links' Reading/Attribute 'state' is 'open'
2017.11.24 00:11:00 5: [hc.st.Schlafzimmer.Arbeit] removing Timer: hc.st.Schlafzimmer.Arbeit_2
2017.11.24 00:11:00 5: [hc.st.Schlafzimmer.Arbeit] setting  Timer: hc.st.Schlafzimmer.Arbeit_2 2017-11-24 00:12:00
2017.11.24 00:12:00 4: [hc.st.Schlafzimmer.Arbeit] time=00:12/1511478720 delay=0, nextDelay=60, nextRetry=1511478780
2017.11.24 00:12:00 4: [hc.st.Schlafzimmer.Arbeit] delayedExecutionCond:0
2017.11.24 00:12:00 4: [hc.st.Schlafzimmer.Arbeit] result of delayedExecutionCond:0
2017.11.24 00:12:00 4: [hc.st.Schlafzimmer.Arbeit] list of window sensors found: 'hm.fk.st.Schlafzimmer.links hm.fk.st.Schlafzimmer.rechts hc.st.Schlafzimmer.Arbeit'
2017.11.24 00:12:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.links' Reading/Attribute 'state' is 'open'
2017.11.24 00:12:00 3: [hc.st.Schlafzimmer.Arbeit] timer at 00:10 skiped by new timer at 00:12
2017.11.24 00:12:00 5: [hc.st.Schlafzimmer.Arbeit] removing Timer: hc.st.Schlafzimmer.Arbeit_2
2017.11.24 00:12:00 5: [hc.st.Schlafzimmer.Arbeit] removing Timer: hc.st.Schlafzimmer.Arbeit_3
2017.11.24 00:12:00 5: [hc.st.Schlafzimmer.Arbeit] setting  Timer: hc.st.Schlafzimmer.Arbeit_3 2017-11-24 00:13:00
2017.11.24 00:13:00 4: [hc.st.Schlafzimmer.Arbeit] time=00:12/1511478720 delay=60, nextDelay=120, nextRetry=1511478840
2017.11.24 00:13:00 4: [hc.st.Schlafzimmer.Arbeit] delayedExecutionCond:0
2017.11.24 00:13:00 4: [hc.st.Schlafzimmer.Arbeit] result of delayedExecutionCond:0
2017.11.24 00:13:00 4: [hc.st.Schlafzimmer.Arbeit] list of window sensors found: 'hm.fk.st.Schlafzimmer.links hm.fk.st.Schlafzimmer.rechts hc.st.Schlafzimmer.Arbeit'
2017.11.24 00:13:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.links' Reading/Attribute 'state' is 'open'
2017.11.24 00:13:00 5: [hc.st.Schlafzimmer.Arbeit] removing Timer: hc.st.Schlafzimmer.Arbeit_3
2017.11.24 00:13:00 5: [hc.st.Schlafzimmer.Arbeit] setting  Timer: hc.st.Schlafzimmer.Arbeit_3 2017-11-24 00:14:00
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] time=00:12/1511478720 delay=119, nextDelay=180, nextRetry=1511478900
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] delayedExecutionCond:0
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] result of delayedExecutionCond:0
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] list of window sensors found: 'hm.fk.st.Schlafzimmer.links hm.fk.st.Schlafzimmer.rechts hc.st.Schlafzimmer.Arbeit'
2017.11.24 00:14:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.links' Reading/Attribute 'state' is 'closed'
2017.11.24 00:14:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.rechts' Reading/Attribute 'state' is 'closed'
2017.11.24 00:14:00 3: [hc.st.Schlafzimmer.Arbeit] delay of switching struct.Heizung.st.Schlafzimmer stopped.
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] condition:(ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") - Tage:0,1,2,3,4,5,6
2017.11.24 00:14:00 5: [hc.st.Schlafzimmer.Arbeit] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") && (defined $days->{$wday}))}
2017.11.24 00:14:00 5: [hc.st.Schlafzimmer.Arbeit] result of condition:1
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] Update   - timer seems to be active today: 0123456|00:12|day
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] aktParam: newParam:day - is  not disabled
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] command: 'set $NAME controlMode $EVENT' executed with %NAME=>struct.Heizung.st.Schlafzimmer,%EVENT=>day
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] time=00:14/1511478840 delay=0, nextDelay=60, nextRetry=1511478900
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] delayedExecutionCond:0
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] result of delayedExecutionCond:0
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] list of window sensors found: 'hm.fk.st.Schlafzimmer.links hm.fk.st.Schlafzimmer.rechts hc.st.Schlafzimmer.Arbeit'
2017.11.24 00:14:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.links' Reading/Attribute 'state' is 'closed'
2017.11.24 00:14:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.rechts' Reading/Attribute 'state' is 'closed'
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] condition:(ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") - Tage:0,1,2,3,4,5,6
2017.11.24 00:14:00 5: [hc.st.Schlafzimmer.Arbeit] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") && (defined $days->{$wday}))}
2017.11.24 00:14:00 5: [hc.st.Schlafzimmer.Arbeit] result of condition:1
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] Update   - timer seems to be active today: 0123456|00:14|night
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] aktParam: newParam:night - is  not disabled
2017.11.24 00:14:00 4: [hc.st.Schlafzimmer.Arbeit] command: 'set $NAME controlMode $EVENT' executed with %NAME=>struct.Heizung.st.Schlafzimmer,%EVENT=>night


Fazit: es funktioniert wie erwartet:

- um 00:08 => set controlMode day
>> hier werden die Fenster geöffnet. Keine Änderung im HC
- um 00:10 springt er auf "open window" => Verzögerung
- um 00:11 prüft er die Verzögerung. Da die Fenster immer noch auf sind => weitere Verzögerung
- um 00:12 neue Schaltzeit => timer skiped by new timer. Fenster immer noch auf => Verzögerung
- um 00:13 prüft er die Verzögerung. Da die Fenster immer noch auf sind => weitere Verzügerung
>> hier werden die Fenster geschlossen
- um 00:14 delay of switching stopped => Verzögerte Befehl von 00:12 wird ausgeführt => er springt auf day. Dann wird der Befehl von 00:14 ausgeführt => er spring auf night
- um 00:16 day
usw

Wie gesagt: mir fehlen bei dir diese Log Auszüge mit allen Meldungen.

Versionen ("version" im Kommandofeld eingeben):
fhem.pl               15294 2017-10-20 06:40:24Z rudolfkoenig
98_Heating_Control.pm 13374 2017-02-09 20:00:35Z orti-otto
98_WeekdayTimer.pm    13374 2017-02-09 20:00:35Z orti-otto


Ich muss aber noch was anderes testen, da beim Lesen des Moduls mir etwas aufgefallen ist. Aber nicht heute.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

netwalk

Fhem wird von mir regelmäßig aktualisiert. Hier die Versionen:
fhem.pl               15466 2017-11-20 22:22:19Z rudolfkoenig
98_Heating_Control.pm 13374 2017-02-09 20:00:35Z orti-otto
98_WeekdayTimer.pm    13374 2017-02-09 20:00:35Z orti-otto


Gestern nachmittag habe ich versuchsweise den Schaltzeitpunkt von 02:31:00 auf 21:31:00 vorverlegt. In den Readings wurden die Werte für "nextUpdate" und "nextValue" korrekt gesetzt, zum angebenen Zeitpunkt passierte nichts. Kein Eintrag im Log. In der Zeit zwischen Änderung und geplantem Schaltzeitpunkt wurde kein Fenster geöffnet.

Ich werde jetzt den verbose-Level raufsetzen und am WE einige Tests vornehmen und die Logs präsentieren.
live long and prosper
netwalk
_______________________________________________
INTEL NUC7CJYH, Homematic mit 3x HMLGW, JEELINK mit 18x TX29-DTH-IT, DUOFERNSTICK, FB7590 mit FBDECT, NETATMO, Philips HUE, RFXtrx433, Ubiquiti G3 PRO/FLEX/DOME/MICRO

netwalk

#891
Am WE habe ich versuchsweise die vorgesehene Schaltzeit von 02:31:00 auf 21:31:00 vorgezogen, mit dem Ergebnis, dass es seitdem funktioniert. Am Tag der Änderung funktionierte es noch nicht, jedoch ab dem nächsten Tag, ohne weitere Änderung, problemlos. Verstehe ich nicht.

Hier die entsprechenden Logs:

2017.11.26 21:31:00 4: [hc.st.Schlafzimmer.Arbeit] time=21:31:00/1511728260 delay=0, nextDelay=60, nextRetry=1511728320
2017.11.26 21:31:00 4: [hc.st.Schlafzimmer.Arbeit] delayedExecutionCond:0
2017.11.26 21:31:00 4: [hc.st.Schlafzimmer.Arbeit] result of delayedExecutionCond:0
2017.11.26 21:31:00 4: [hc.st.Schlafzimmer.Arbeit] list of window sensors found: 'hm.fk.st.Schlafzimmer.links hm.fk.st.Schlafzimmer.rechts hc.st.Schlafzimmer.Arbeit'
2017.11.26 21:31:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.links' Reading/Attribute 'state' is 'closed'
2017.11.26 21:31:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.rechts' Reading/Attribute 'state' is 'closed'
2017.11.26 21:31:00 4: [hc.st.Schlafzimmer.Arbeit] condition:(ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") - Tage:0,1,2,3,4,5,6
2017.11.26 21:31:00 5: [hc.st.Schlafzimmer.Arbeit] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") && (defined $days->{$wday}))}
2017.11.26 21:31:00 5: [hc.st.Schlafzimmer.Arbeit] result of condition:1
2017.11.26 21:31:00 4: [hc.st.Schlafzimmer.Arbeit] Update   - timer seems to be active today: 0123456|21:31:00|night
2017.11.26 21:31:00 4: [hc.st.Schlafzimmer.Arbeit] device type heating recognized, setModifier:desired-temp
2017.11.26 21:31:00 4: [hc.st.Schlafzimmer.Arbeit] aktParam:19.0 newParam:night - is  not disabled
2017.11.26 21:31:00 4: [hc.st.Schlafzimmer.Arbeit] command: 'set $NAME controlMode $EVENT' executed with %NAME=>struct.Heizung.st.Schlafzimmer,%EVENT=>night

...

2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] removing Timer: hc.st.Schlafzimmer.Arbeit_1
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] removing Timer: hc.st.Schlafzimmer.Arbeit_4
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] removing Timer: hc.st.Schlafzimmer.Arbeit_2
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] removing Timer: hc.st.Schlafzimmer.Arbeit_3
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] 07:29:50 17:06:54 Montag
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] 07:01:00 day, 21:31:00 night (Profil 0: Sonntag)
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] 16:01:00 day, 21:31:00 night (Profil 1: Montag)
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] 16:01:00 day, 21:31:00 night (Profil 2: Dienstag)
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] 16:01:00 day, 21:31:00 night (Profil 3: Mittwoch)
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] 16:01:00 day, 21:31:00 night (Profil 4: Donnerstag)
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] 13:31:00 day, 21:31:00 night (Profil 5: Freitag)
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] 07:01:00 day, 21:31:00 night (Profil 6: Samstag)
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] device type heating recognized, setModifier:desired-temp
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] Heating recognized - switch in the past activated
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] condition:(ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") - Tage:1,2,3,4
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] condition: {my $days={};;map{$days->{$_}=1}(1,2,3,4);;;;( (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") && (defined $days->{$wday}))}
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] result of condition:1
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] setTimer - timer seems to be active today: 1234|16:01:00|day
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] setting  Timer: hc.st.Schlafzimmer.Arbeit_1 2017-11-27 16:01:00
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] condition:(ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") - Tage:5
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] condition: {my $days={};;map{$days->{$_}=1}(5);;;;( (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") && (defined $days->{$wday}))}
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] result of condition:
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] setTimer - timer seems to be NOT active today: 5|13:31:00|day (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off")
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] setting  Timer: hc.st.Schlafzimmer.Arbeit_2 2017-11-27 13:31:00
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] condition:(ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") - Tage:0,6
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] condition: {my $days={};;map{$days->{$_}=1}(0,6);;;;( (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") && (defined $days->{$wday}))}
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] result of condition:
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] setTimer - timer seems to be NOT active today: 06|07:01:00|day (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off")
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] setting  Timer: hc.st.Schlafzimmer.Arbeit_3 2017-11-27 07:01:00
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] condition:(ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") - Tage:0,1,2,3,4,5,6
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") && (defined $days->{$wday}))}
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] result of condition:1
2017.11.27 00:00:05 4: [hc.st.Schlafzimmer.Arbeit] setTimer - timer seems to be active today: 0123456|21:31:00|night
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] setting  Timer: hc.st.Schlafzimmer.Arbeit_4 2017-11-27 21:31:00
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] removing Timer: hc.st.Schlafzimmer.Arbeit_SetTimerOfDay
2017.11.27 00:00:05 5: [hc.st.Schlafzimmer.Arbeit] setting  Timer: hc.st.Schlafzimmer.Arbeit_SetTimerOfDay 2017-11-28 00:00:05

...
2017.11.27 07:01:00 4: [hc.st.Schlafzimmer.Arbeit] time=07:01:00/1511762460 delay=0, nextDelay=60, nextRetry=1511762520
2017.11.27 07:01:00 4: [hc.st.Schlafzimmer.Arbeit] delayedExecutionCond:0
2017.11.27 07:01:00 4: [hc.st.Schlafzimmer.Arbeit] result of delayedExecutionCond:0
2017.11.27 07:01:00 4: [hc.st.Schlafzimmer.Arbeit] list of window sensors found: 'hm.fk.st.Schlafzimmer.links hm.fk.st.Schlafzimmer.rechts hc.st.Schlafzimmer.Arbeit'
2017.11.27 07:01:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.links' Reading/Attribute 'state' is 'closed'
2017.11.27 07:01:00 5: [hc.st.Schlafzimmer.Arbeit] sensor 'hm.fk.st.Schlafzimmer.rechts' Reading/Attribute 'state' is 'closed'
2017.11.27 07:01:00 4: [hc.st.Schlafzimmer.Arbeit] condition:(ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") - Tage:0,6
2017.11.27 07:01:00 5: [hc.st.Schlafzimmer.Arbeit] condition: {my $days={};;map{$days->{$_}=1}(0,6);;;;( (ReadingsVal("sc.Heizung.Auto", "state", "") eq "on" and ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "off" and ReadingsVal("sc.Urlaub.auswaerts", "state", "") eq "off") && (defined $days->{$wday}))}
2017.11.27 07:01:00 5: [hc.st.Schlafzimmer.Arbeit] result of condition:


Als nächstes werde ich das Verhalten mit verschiedenen Zuständen der Fensterkontakte austesten und danach den Zeitschaltpunkt wieder auf nach Mitternacht setzen.


Wenn ich das richtig verstanden habe, ist das Modul WeekdayTimer ähnlich aufgebaut wie Heating_Control. Damit habe ich ebenfalls am WE experimentiert und ein ähnliches Problem feststellen müssen. Ich habe für jeden Rolladen im Erdgeschoss versuchsweise WeekdayTimer angelegt.
Z.B.:

define wdt.duo.eg.Badezimmer.Arbeit dm.duo.eg.Badezimmer 1234560|{sunset_abs("Civil",ReadingsVal("dm.duo.eg.Badezimmer","state",0)*60)}|down 12345|06:00|up 60|09:00|up (ReadingsVal("sc.Urlaub.zuhause","state","") eq "off") or (ReadingsVal("sc.Arbeit.Micha","state","") eq "on")
und:
define wdt.duo.eg.Badezimmer.Urlaub.zuhause dm.duo.eg.Badezimmer 1234560|{sunset_abs("Civil",ReadingsVal("dm.duo.eg.Badezimmer","state",0)*60)}|down 1234560|09:00|up (ReadingsVal("sc.Urlaub.zuhause", "state", "") eq "on" or ReadingsVal("sc.Krank.zuhause", "state", "") eq "on")

Hintergrund ist, dass ich beim Öffnen des Badezimmerfensters das Rollo immer hochfahren (egal welcher Zustand vorlag) und nach dem Schließen in den laut Timer vorgesehenen Zustand ggf. herunterfahren lasse.
define di.fk.duo.eg.Badezimmer DOIF ([hm.fk.eg.Badezimmer:onoff] eq "1" ) (set duo.eg.Badezimmer manualMode on) (set duo.eg.Badezimmer up) DOELSEIF ([hm.fk.eg.Badezimmer:onoff] eq "0") (set duo.eg.Badezimmer manualMode off) (set duo.eg.Badezimmer [dm.duo.eg.Badezimmer:setpoint]) DOELSE
attr di.fk.duo.eg.Badezimmer wait 0,10:360,0


Dabei hat sich gestern das Problem ergeben, dass abends (ca. 20:00 Uhr )nach dem Duschen beim Öffnen des Fensters das Rollo erwartungsgemäß hochfuhr, nach Schließen des Fensters jedoch nicht herunterfuhr, obwohl die Schaltzeit (ca. 18:07 Uhr) längst vorbei war. Das verwendete Reading im Dummy dm.duo.eg.Badezimmer wurde nicht neu gesetzt.

Hier das List des WeekdayTimers von gestern abend:
Internals:
   CFGFN
   COMMAND
   CONDITION  (ReadingsVal("sc.Urlaub.zuhause","state","") eq "off") or (ReadingsVal("sc.Arbeit.Micha","state","") eq "on")
   DEF        dm.duo.eg.Badezimmer 1234560|{sunset_abs("Civil",ReadingsVal("dm.duo.eg.Badezimmer","state",0)*60)}|down 12345|06:00|up 60|09:00|up (ReadingsVal("sc.Urlaub.zuhause","state","") eq "off") or (ReadingsVal("sc.Arbeit.Micha","state","") eq "on")
   DEVICE     dm.duo.eg.Badezimmer
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       wdt.duo.eg.Badezimmer.Arbeit
   NR         16855
   Profil 0: Sonntag 09:00:00 up, 18:07:39 down
   Profil 1: Montag 06:00:00 up, 18:07:39 down
   Profil 2: Dienstag 06:00:00 up, 18:07:39 down
   Profil 3: Mittwoch 06:00:00 up, 18:07:39 down
   Profil 4: Donnerstag 06:00:00 up, 18:07:39 down
   Profil 5: Freitag 06:00:00 up, 18:07:39 down
   Profil 6: Samstag 09:00:00 up, 18:07:39 down
   STATE      up
   STILLDONETIME 0
   TYPE       WeekdayTimer
   READINGS:
     2017-11-26 09:00:00   currValue       up
     2017-11-24 19:49:36   disabled        0
     2017-11-26 09:00:00   nextUpdate      2017-11-26 18:07:39
     2017-11-26 09:00:00   nextValue       down
     2017-11-26 09:00:00   state           up
   SWITCHINGTIMES:
     1234560|{sunset_abs("Civil",ReadingsVal("dm.duo.eg.Badezimmer","state",0)*60)}|down
     12345|06:00|up
     60|09:00|up
   TIMER:
     wdt.duo.eg.Badezimmer.Arbeit_1:
       HASH       wdt.duo.eg.Badezimmer.Arbeit
       MODIFIER   1
       NAME       wdt.duo.eg.Badezimmer.Arbeit_1
       immerSchalten 1
     wdt.duo.eg.Badezimmer.Arbeit_2:
       HASH       wdt.duo.eg.Badezimmer.Arbeit
       MODIFIER   2
       NAME       wdt.duo.eg.Badezimmer.Arbeit_2
     wdt.duo.eg.Badezimmer.Arbeit_3:
       HASH       wdt.duo.eg.Badezimmer.Arbeit
       MODIFIER   3
       NAME       wdt.duo.eg.Badezimmer.Arbeit_3
     wdt.duo.eg.Badezimmer.Arbeit_SetTimerOfDay:
       HASH       wdt.duo.eg.Badezimmer.Arbeit
       MODIFIER   SetTimerOfDay
       NAME       wdt.duo.eg.Badezimmer.Arbeit_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
     wdt.duo.eg.Badezimmer.Arbeit_delayed:
       HASH       wdt.duo.eg.Badezimmer.Arbeit
       MODIFIER   delayed
       NAME       wdt.duo.eg.Badezimmer.Arbeit_delayed
     wdt.duo.eg.Badezimmer_1:
       HASH       wdt.duo.eg.Badezimmer.Arbeit
       MODIFIER   1
       NAME       wdt.duo.eg.Badezimmer_1
     wdt.duo.eg.Badezimmer_SetTimerOfDay:
       HASH       wdt.duo.eg.Badezimmer.Arbeit
       MODIFIER   SetTimerOfDay
       NAME       wdt.duo.eg.Badezimmer_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
   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:
         09:00:00   up
         18:07:39   down
       1:
         06:00:00   up
         18:07:39   down
       2:
         06:00:00   up
         18:07:39   down
       3:
         06:00:00   up
         18:07:39   down
       4:
         06:00:00   up
         18:07:39   down
       5:
         06:00:00   up
         18:07:39   down
       6:
         09:00:00   up
         18:07:39   down
   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      1511716059
       PARA       down
       TIME       {sunset_abs("Civil",ReadingsVal("dm.duo.eg.Badezimmer","state",0)*60)}
       TAGE:
         0
         1
         2
         3
         4
         5
         6
     2:
       EPOCH      1511672400
       PARA       up
       TIME       06:00
       TAGE:
         1
         2
         3
         4
         5
     3:
       EPOCH      1511683200
       PARA       up
       TIME       09:00
       TAGE:
         0
         6
   profile_IDX:
     0:
       09:00:00   3
       18:07:39   1
     1:
       06:00:00   2
       18:07:39   1
     2:
       06:00:00   2
       18:07:39   1
     3:
       06:00:00   2
       18:07:39   1
     4:
       06:00:00   2
       18:07:39   1
     5:
       06:00:00   2
       18:07:39   1
     6:
       09:00:00   3
       18:07:39   1
   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 setreading $NAME setpoint $EVENT
   disable    0
   room       Rollladen
   switchInThePast 1


Auch hier wird offensichtlich nicht geschaltet, obwohl nextUpdate und nextValue korrekt erscheinen.

Ich werde auch hier den verbose-Level auf 5 setzen und weiter beobachten.
live long and prosper
netwalk
_______________________________________________
INTEL NUC7CJYH, Homematic mit 3x HMLGW, JEELINK mit 18x TX29-DTH-IT, DUOFERNSTICK, FB7590 mit FBDECT, NETATMO, Philips HUE, RFXtrx433, Ubiquiti G3 PRO/FLEX/DOME/MICRO

Andre0909

#892
Moin, brauche mal eure syntax-Hilfe. Nutze bisher den WD-Timer erfolgreiche für simple on oder off-Befehle. Nun brauche ich aber die Ausführung des TextTo-Speech Befehls: set Tablet ttsMsg Hier kommt mein Text.

Ich weiss nun nicht wie ich das einbinden soll weil:

define WD_Bahn_Morgens WeekdayTimer Tablet 8|07:08|ttsMsg lala lala lala (Value("Automatikmodus") eq "Standard")

wird ja nicht funktionieren. Wie setze ich das ttsMsg lala lala lala um? DANKE

Hat hier noch jmd ein Tipp für mich?

cotecmania

Hallo,

Ich möchte mit einem HeatingControl 2 Arten von Thermostaten schalten (MAX + HM). Der eine braucht desired-temp, der andere desiredTemperature.
Gibt es dazu eine Möglichkeit, das in einem HC-Device zu vereinen ohne es explizit hinten als 2 Befehle anzugeben ?

So gehts nicht zumindest fuer das MAX-Device :
HK_HM_WOHNEN_._Clima,HK_WC_EG Mo-So|07:30|22 Mo-So|22:00|15 {if (Value("DS_Heizen") eq "on" )) {fhem("set $NAME desired-temp $EVENT")}}
FHEM auf RaspberryPI B (buster)
2xCUL868 für MAX/Slow_RF, HM-LAN, JeeLink
MAX!/HM-Thermostate, FS20/HM-Rolladenschalter, FS20-EM, LevelJet-Ölstandsmessung, PCA301, IT, KM271, IPCAM, FireTAB10 FTUI

ogruetzmann

Hallo,

Ich habe ein Problem mit Heating_Control. Ich benutze es zur Heizungssteuerung in drei Räumen (MAX! mit dem CUL), zwei davon mit Fenstersensoren (auch MAX!). Die Abwesenheitssteuerung habe ich über Homemode realisiert, das bei einer Änderung den Befehl {Heating_Control_SetAllTemps()} absetzt, die Heating_Controls schalten dann durch das Auslesen der Location Variable in Homemode.

Das ganze funktioniert auch in zwei Räumen immer, nur im Wohnzimmer verschluckt sich Heating_Control öfter am Morgen, wenn die Heizung wieder hochgeregelt werden soll. Der State bleibt dann auf Eco stehen, nextUpdate zeigt weiter die Zeit, zu der die Schaltung hätte stattfinden sollen.

Folgenden list habe ich heute um kurz nach 8 Uhr gezogen, also gut zwei Stunden nach dem eigentlichen Schaltzeitpunkt. Fenster waren keine geöffnet, ein {Heating_Control_SetAllTemps()} löst das Problem in diesen Fällen.
Internals:
   COMMAND   
   CONDITION  (ReadingsVal ("Wohnung", "location", 0) eq "home")
   DEF        hz_living 01:00|eco 06:00|comfort (ReadingsVal ("Wohnung", "location", 0) eq "home")
   DEVICE     hz_living
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       hc_living
   NR         35
   Profil 0: Sonntag 01:00:00 eco, 06:00:00 comfort
   Profil 1: Montag 01:00:00 eco, 06:00:00 comfort
   Profil 2: Dienstag 01:00:00 eco, 06:00:00 comfort
   Profil 3: Mittwoch 01:00:00 eco, 06:00:00 comfort
   Profil 4: Donnerstag 01:00:00 eco, 06:00:00 comfort
   Profil 5: Freitag 01:00:00 eco, 06:00:00 comfort
   Profil 6: Samstag 01:00:00 eco, 06:00:00 comfort
   STATE      eco
   STILLDONETIME 0
   TYPE       Heating_Control
   READINGS:
     2017-12-15 01:00:00   currValue       eco
     2017-12-08 02:15:07   disabled        0
     2017-12-15 01:00:00   nextUpdate      2017-12-15 06:00:00
     2017-12-15 01:00:00   nextValue       comfort
     2017-12-15 01:00:00   state           eco
   SWITCHINGTIMES:
     01:00|eco
     06:00|comfort
   TIMER:
     hc_living_1:
       HASH       hc_living
       MODIFIER   1
       NAME       hc_living_1
     hc_living_2:
       HASH       hc_living
       MODIFIER   2
       NAME       hc_living_2
       immerSchalten 1
     hc_living_SetTimerOfDay:
       HASH       hc_living
       MODIFIER   SetTimerOfDay
       NAME       hc_living_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
     hc_living_delayed:
       HASH       hc_living
       MODIFIER   delayed
       NAME       hc_living_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:
         01:00:00   eco
         06:00:00   comfort
       1:
         01:00:00   eco
         06:00:00   comfort
       2:
         01:00:00   eco
         06:00:00   comfort
       3:
         01:00:00   eco
         06:00:00   comfort
       4:
         01:00:00   eco
         06:00:00   comfort
       5:
         01:00:00   eco
         06:00:00   comfort
       6:
         01:00:00   eco
         06:00:00   comfort
   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      1513296000
       PARA       eco
       TIME       01:00
       TAGE:
         0
         1
         2
         3
         4
         5
         6
     2:
       EPOCH      1513314000
       PARA       comfort
       TIME       06:00
       TAGE:
         0
         1
         2
         3
         4
         5
         6
   profile_IDX:
     0:
       01:00:00   1
       06:00:00   2
     1:
       01:00:00   1
       06:00:00   2
     2:
       01:00:00   1
       06:00:00   2
     3:
       01:00:00   1
       06:00:00   2
     4:
       01:00:00   1
       06:00:00   2
     5:
       01:00:00   1
       06:00:00   2
     6:
       01:00:00   1
       06:00:00   2
   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 desiredTemperature $EVENT
   disable    0
   room       13_Steuerung
   switchInThePast 1
   windowSensor fs_living_balcony fs_living_window


Das ganze funktionert in etwa 60-80% der Fälle reibungslos, nur ein bis zwei Mal in der Woche wird morgens nicht umgeschaltet (abends hatte ich das Problem bisher nie), immer im Wohnzimmer, die anderen Räume funktionieren immer. An der Abwesenheitsschaltung kann es nicht liegen, der Status stimmt grundsätzlich.

Die Unterschiede zu den anderen Räumen: Der Schaltpunkt zum Herunterregeln ist um 1 Uhr (bei den anderen: 0 Uhr) und die Steuerung läuft über ein Structure, um ein Wandthermostat und ein Heizthermostat zu regeln, aber daran sollte es eigentlich nicht liegen.

Bin da gerade geringfügig am Verzweifeln :)

Oliver.

amenomade

Zur Analyse würde ich eine Filelog kreieren, die alle Ereignisse von involvierten Geräte zusammenfasst: hc_living, hz_living, Wohnung, fs_living_balcony und fs_living_window.
Damit wirst Du sehen, was sich ändert und wann.

ZitatAn der Abwesenheitsschaltung kann es nicht liegen, der Status stimmt grundsätzlich.
Sicher?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

ogruetzmann

Zitat von: amenomade am 15 Dezember 2017, 13:22:51
Sicher?
Jupp, der Status für die Absent-HCs ist jeweils "Inactive", der für die Present-HCs zeigt den jeweils aktuellen Status (Eco oder Comfort, in dem Fall dann fälschlicherweise Eco).

Da muss ich mich dann mal mit Filelog beschäftigen.

Ist halt vor allem spannend, weil alle Heating_Controls quasi identisch sind. Hab einen erstellt und dann einfach kopiert und angepasst. Zwei davon funtktionieren einwandfrei, einer nur teilweise. Wenn es wenigstens immer auftreten würde, wäre die Analyse auch einfacher...  :)

Andre0909

Zitat von: Andre0909 am 03 Dezember 2017, 16:30:29
Moin, brauche mal eure syntax-Hilfe. Nutze bisher den WD-Timer erfolgreiche für simple on oder off-Befehle. Nun brauche ich aber die Ausführung des TextTo-Speech Befehls: set Tablet ttsMsg Hier kommt mein Text.

Ich weiss nun nicht wie ich das einbinden soll weil:

define WD_Bahn_Morgens WeekdayTimer Tablet 8|07:08|ttsMsg lala lala lala (Value("Automatikmodus") eq "Standard")

wird ja nicht funktionieren. Wie setze ich das ttsMsg lala lala lala um? DANKE



Hat hier noch jmd ein Tipp für mich?

amenomade

define WD_Bahn_Morgens WeekdayTimer Tablet 8|07:08|msg  {fhem ("set Tablet ttsMsg lalalaal") if (Value("Automatikmodus") eq "Standard");}sollte gehen (nicht getestet)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

ogruetzmann

Kurzes Update: Es scheint ein Problem mit der Schaltzeit zu sein. Hab die Zeit zum Herunterregeln zum Test mal, wie die anderen Thermostate, auf 00:00 gesetzt, seitdem hatte ich keine Probleme mehr. Sobald ich die Zeit finde, werde ich mal mit verschiedenen Zeiteinstellungen experimentieren.

Leider finde ich mich mit Filelog nicht wirklich zurecht, sonst würde ich da mit Logs arbeiten (würde mich über Links oder Erklärungen freuen - nach Studium der Dokumentation zu filelog hab ich ein großes "Bahnhof" auf der Stirn.... Bin halt so'n Hobby-C++'ler...)
Zitat von: ogruetzmann am 15 Dezember 2017, 08:57:22
Hallo,

Ich habe ein Problem mit Heating_Control. Ich benutze es zur Heizungssteuerung in drei Räumen (MAX! mit dem CUL), zwei davon mit Fenstersensoren (auch MAX!). Die Abwesenheitssteuerung habe ich über Homemode realisiert, das bei einer Änderung den Befehl {Heating_Control_SetAllTemps()} absetzt, die Heating_Controls schalten dann durch das Auslesen der Location Variable in Homemode.

Das ganze funktioniert auch in zwei Räumen immer, nur im Wohnzimmer verschluckt sich Heating_Control öfter am Morgen, wenn die Heizung wieder hochgeregelt werden soll. Der State bleibt dann auf Eco stehen, nextUpdate zeigt weiter die Zeit, zu der die Schaltung hätte stattfinden sollen.

Folgenden list habe ich heute um kurz nach 8 Uhr gezogen, also gut zwei Stunden nach dem eigentlichen Schaltzeitpunkt. Fenster waren keine geöffnet, ein {Heating_Control_SetAllTemps()} löst das Problem in diesen Fällen.
Internals:
   COMMAND   
   CONDITION  (ReadingsVal ("Wohnung", "location", 0) eq "home")
   DEF        hz_living 01:00|eco 06:00|comfort (ReadingsVal ("Wohnung", "location", 0) eq "home")
   DEVICE     hz_living
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       hc_living
   NR         35
   Profil 0: Sonntag 01:00:00 eco, 06:00:00 comfort
   Profil 1: Montag 01:00:00 eco, 06:00:00 comfort
   Profil 2: Dienstag 01:00:00 eco, 06:00:00 comfort
   Profil 3: Mittwoch 01:00:00 eco, 06:00:00 comfort
   Profil 4: Donnerstag 01:00:00 eco, 06:00:00 comfort
   Profil 5: Freitag 01:00:00 eco, 06:00:00 comfort
   Profil 6: Samstag 01:00:00 eco, 06:00:00 comfort
   STATE      eco
   STILLDONETIME 0
   TYPE       Heating_Control
   READINGS:
     2017-12-15 01:00:00   currValue       eco
     2017-12-08 02:15:07   disabled        0
     2017-12-15 01:00:00   nextUpdate      2017-12-15 06:00:00
     2017-12-15 01:00:00   nextValue       comfort
     2017-12-15 01:00:00   state           eco
   SWITCHINGTIMES:
     01:00|eco
     06:00|comfort
   TIMER:
     hc_living_1:
       HASH       hc_living
       MODIFIER   1
       NAME       hc_living_1
     hc_living_2:
       HASH       hc_living
       MODIFIER   2
       NAME       hc_living_2
       immerSchalten 1
     hc_living_SetTimerOfDay:
       HASH       hc_living
       MODIFIER   SetTimerOfDay
       NAME       hc_living_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
     hc_living_delayed:
       HASH       hc_living
       MODIFIER   delayed
       NAME       hc_living_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:
         01:00:00   eco
         06:00:00   comfort
       1:
         01:00:00   eco
         06:00:00   comfort
       2:
         01:00:00   eco
         06:00:00   comfort
       3:
         01:00:00   eco
         06:00:00   comfort
       4:
         01:00:00   eco
         06:00:00   comfort
       5:
         01:00:00   eco
         06:00:00   comfort
       6:
         01:00:00   eco
         06:00:00   comfort
   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      1513296000
       PARA       eco
       TIME       01:00
       TAGE:
         0
         1
         2
         3
         4
         5
         6
     2:
       EPOCH      1513314000
       PARA       comfort
       TIME       06:00
       TAGE:
         0
         1
         2
         3
         4
         5
         6
   profile_IDX:
     0:
       01:00:00   1
       06:00:00   2
     1:
       01:00:00   1
       06:00:00   2
     2:
       01:00:00   1
       06:00:00   2
     3:
       01:00:00   1
       06:00:00   2
     4:
       01:00:00   1
       06:00:00   2
     5:
       01:00:00   1
       06:00:00   2
     6:
       01:00:00   1
       06:00:00   2
   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 desiredTemperature $EVENT
   disable    0
   room       13_Steuerung
   switchInThePast 1
   windowSensor fs_living_balcony fs_living_window


Das ganze funktionert in etwa 60-80% der Fälle reibungslos, nur ein bis zwei Mal in der Woche wird morgens nicht umgeschaltet (abends hatte ich das Problem bisher nie), immer im Wohnzimmer, die anderen Räume funktionieren immer. An der Abwesenheitsschaltung kann es nicht liegen, der Status stimmt grundsätzlich.

Die Unterschiede zu den anderen Räumen: Der Schaltpunkt zum Herunterregeln ist um 1 Uhr (bei den anderen: 0 Uhr) und die Steuerung läuft über ein Structure, um ein Wandthermostat und ein Heizthermostat zu regeln, aber daran sollte es eigentlich nicht liegen.

Bin da gerade geringfügig am Verzweifeln :)

Oliver.