DOIF führt (für mich) nicht nachvollziehbaren Befehl aus

Begonnen von Bartimaus, 08 März 2015, 13:39:38

Vorheriges Thema - Nächstes Thema

Bartimaus

Moin,


ich teste gerade ein DOIF für meine Zirkulationspumpe.


Dabei wurde um Punkt 12:00 Uhr ein Befehl (cmd_5) ausgeführt den ich nicht nachvollziehen kann. Vielleicht habe ich aber nur Tomaten auf den Augen. Wär nett wenn da mal jemand einen Blick draufwerfen könnte.

Aktuelle DOIF-Version ist installiert

Hier die DEF:
([05:45-06:30|12]and (!$we) and [Abwesend:state] eq "off" and [ZirkuMaster:state] eq "on") (set ZirkulationsPumpe on) DOELSEIF ([08:00-19:00|3457] and [Abwesend:state] eq "off" and [ZirkuMaster:state] eq "on") (set ZirkulationsPumpe on) DOELSEIF ([12:00-19:00|12] and [Abwesend:state] eq "off" and !($we) and [ZirkuMaster:state] eq "on") (set ZirkulationsPumpe on) DOELSEIF ([22:00-23:00|78] and [Abwesend:state] eq "off" and [ZirkuMaster:state] eq "on") (set ZirkulationsPumpe on) DOELSE
  (set ZirkulationsPumpe off)




Hier das Reading:

cmd_event
timer_5
2015-03-08 12:00:00
cmd_nr
5
2015-03-08 12:00:00
state
cmd_5
2015-03-08 12:00:00
timer_1_c1
09.03.2015 05:45:00|12
2015-03-08 10:42:01
timer_2_c1
09.03.2015 06:30:00|12
2015-03-08 10:42:01
timer_3_c2
09.03.2015 08:00:00|3457
2015-03-08 10:44:00
timer_4_c2
08.03.2015 19:00:00|3457
2015-03-08 10:42:01
timer_5_c3
09.03.2015 12:00:00|12
2015-03-08 12:00:00
timer_6_c3
08.03.2015 19:00:00|12
2015-03-08 10:42:01
timer_7_c4
08.03.2015 22:00:00|78
2015-03-08 10:42:01
timer_8_c4
08.03.2015 23:00:00|78
2015-03-08 10:42:01



Und nun noch das LIST:

Internals:    CFGFN DEF        ([05:45-06:30|12] and (!$we) and [Abwesend:state] eq "off" and [ZirkuMaster:state] eq "on") (set ZirkulationsPumpe on) DOELSEIF ([08:00-19:00|3457] and [Abwesend:state] eq "off" and [ZirkuMaster:state] eq "on") (set ZirkulationsPumpe on) DOELSEIF ([12:00-19:00|12] and [Abwesend:state] eq "off" and !($we) and [ZirkuMaster:state] eq "on") (set ZirkulationsPumpe on) DOELSEIF ([22:00-23:00|78] and [Abwesend:state] eq "off" and [ZirkuMaster:state] eq "on") (set ZirkulationsPumpe on) DOELSE (set ZirkulationsPumpe off) NAME       Do_Zirku NR         348 NTFY_ORDER 50-Do_Zirku STATE      cmd_5 TYPE       DOIF Readings: 2015-03-08 12:00:00   cmd_event       timer_5 2015-03-08 12:00:00   cmd_nr          5 2015-03-08 12:00:00   state           cmd_5 2015-03-08 10:42:01   timer_1_c1      09.03.2015 05:45:00|12 2015-03-08 10:42:01   timer_2_c1      09.03.2015 06:30:00|12 2015-03-08 10:44:00   timer_3_c2      09.03.2015 08:00:00|3457 2015-03-08 10:42:01   timer_4_c2      08.03.2015 19:00:00|3457 2015-03-08 12:00:00   timer_5_c3      09.03.2015 12:00:00|12 2015-03-08 10:42:01   timer_6_c3      08.03.2015 19:00:00|12 2015-03-08 10:42:01   timer_7_c4      08.03.2015 22:00:00|78 2015-03-08 10:42:01   timer_8_c4      08.03.2015 23:00:00|78 Condition: 0          DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"12")and (!$we)and ReadingValDoIf('Abwesend','state','') eq "off"and ReadingValDoIf('ZirkuMaster','state','') eq "on" 1          DOIF_time($hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"3457")and ReadingValDoIf('Abwesend','state','') eq "off"and ReadingValDoIf('ZirkuMaster','state','') eq "on" 2          DOIF_time($hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"12")and ReadingValDoIf('Abwesend','state','') eq "off"and !($we)and ReadingValDoIf('ZirkuMaster','state','') eq "on" 3          DOIF_time($hash->{realtime}{6},$hash->{realtime}{7},$wday,$hms,"78")and ReadingValDoIf('Abwesend','state','') eq "off"and ReadingValDoIf('ZirkuMaster','state','') eq "on" Days: 0          12 1          12 2          3457 3          3457 4          12 5          12 6          78 7          78 Devices: 0           Abwesend ZirkuMaster 1           Abwesend ZirkuMaster 2           Abwesend ZirkuMaster 3           Abwesend ZirkuMaster all         Abwesend ZirkuMaster Do: 0          set ZirkulationsPumpe on 1          set ZirkulationsPumpe on 2          set ZirkulationsPumpe on 3          set ZirkulationsPumpe on 4          set ZirkulationsPumpe off Helper: last_timer 8 sleeptimer -1 Internals: Readings: 0           Abwesend:state ZirkuMaster:state 1           Abwesend:state ZirkuMaster:state 2           Abwesend:state ZirkuMaster:state 3           Abwesend:state ZirkuMaster:state all         Abwesend:state ZirkuMaster:state Realtime: 0          05:45:00 1          06:30:00 2          08:00:00 3          19:00:00 4          12:00:00 5          19:00:00 6          22:00:00 7          23:00:00 State: Time: 0          05:45:00 1          06:30:00 2          08:00:00 3          19:00:00 4          12:00:00 5          19:00:00 6          22:00:00 7          23: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 Timerfunc: Timers: 0           0  1 1           2  3 2           4  5 3           6  7 Attributes: 
   room       Heizung

LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

flurin

#1
Bei der Wochentagsteuerung stimmt einiges nicht, siehe Commandref:

Zitat
Wochentagsteuerung: [<time>|012345678] oder [<begin>-<end>|012345678] (0-6 entspricht Sonntag bis Samstag) sowie 7 für $we und 8 für !$we

hier:

[05:45-06:30|12]and (!$we)

und

[12:00-19:00|12] and [Abwesend:state] eq "off" and !($we)

und

[22:00-23:00|78]

78 = $we + !$we = immer!

Gruss
flurin

Bartimaus

#2
Nee,


sollte schon so passen, da in einem DOELSEIF kein 7 mit !($WE) kombiniert wird, will ja gezielt Mo+Di abfragen, die Werktage sind.
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

flurin

#3
Zitat von: Bartimaus am 08 März 2015, 18:24:28
Nee,


sollte schon so passen, da in einem DOELSEIF kein 7 mit !($WE) kombiniert wird, will ja gezielt Mo+Di abfragen, die Werktage sind.

Fangen wir mal hinten an:

[22:00-23:00|78]

7 = $we = Sa und So
8 = !$we = Mo,Di,Mi,Do,Fr

d.h. die Bedingung wird an 7 Tage der Woche erfüllt.

Bartimaus

Soll sie auch, könnte man in dem Fall 78 weglassen
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

flurin

#5
Zitat von: Bartimaus am 08 März 2015, 21:36:57
könnte man in dem Fall 78 weglassen

Ok, das meinte ich auch. In Zusammenhang mit den anderen DOELSEIF nehme ich an, dass du "attr global holiday2we" definiert hast.

Edit: Vor allem nach Fehlermeldungen hilft es oft ein shutdown restart.
Ansonsten ist dies ein Fall für Damian.

Gruss
flurin

Bartimaus

Da die Bedingung um 12:00 Uhr nicht wahr ist, wird DOELSE ausgeführt. Hat mir Damian geflüstert...


Muss jetzt das DOIF umbauen, habe den Zeitraum 0800-1900 in einer DOELSEIF gepackt mit OR-Bedingungen und entsprechenden Klammern. Bin gespannt.
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly