DOELSEIF Zweig sollte nicht ausgeführt werden

Begonnen von Fredi69, 25 Dezember 2016, 17:43:44

Vorheriges Thema - Nächstes Thema

Fredi69

define Rollo_Wohnzimmer_DI DOIF
([[ZEIT_Rollo_hoch]])
(set EG.Wz.Ra.RolladenWohnzimmerup)
DOELSEIF
([?Weihnachtsbeleuchtung] eq "off" and [[ZEIT_Rollo_runter]])
(set EG.Wz.Ra.RolladenWohnzimmer down)
DOELSEIF
([[ZEIT_WeihnachtsbeleuchtungAusUm]])
(set EG.Wz.Ra.RolladenWohnzimmer down)


Warum wird der zweite DOELSEIF Zweig ausgeführt obwohl der erste DOELSEIF Zweig schon ausgeführt wurde, wo liegt da mein Denkfehler?
fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

Ellert

ZitatWarum wird der zweite DOELSEIF Zweig ausgeführt obwohl der erste DOELSEIF Zweig schon ausgeführt wurde?

Wahrscheinlich sind die Zeitpunkte unterschiedlich, aber wie kommst Du darauf, dass die Ausführung anders sein sollte?

Puschel74

Hab ich doch grad erst *suchkruschtelkram...ichfindsnoch...suchmannwoistderlinknurweitersuch*
gefunden
https://wiki.fhem.de/wiki/DOIF/Tools_und_Fehlersuche
Hach, was das Wiki alles so zu bieten hat - und das nicht nur zu Weihnachten  ::)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Fredi69

#3
Zitat von: Ellert am 25 Dezember 2016, 20:15:15
Wahrscheinlich sind die Zeitpunkte unterschiedlich, aber wie kommst Du darauf, dass die Ausführung anders sein sollte?
Weil ich bisher dachte das wenn ein DOELSEIF Zweig ausgeführt wurde wird kein anderer DOELSEIF Zweig ausgeführt.
fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

Damian

Zitat von: Fredi69 am 26 Dezember 2016, 14:36:29
Weil ich bisher dachte das wenn ein DOELSEIF Zweig ausgeführt wurde wird kein anderer DOELSEIF Zweig ausgeführt.

So ist es auch. Durch ein Ereignis wird höchstens ein Zweig ausgeführt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Fredi69

fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

Damian

Zitat von: Fredi69 am 26 Dezember 2016, 17:39:09
Warum ist das bei mir anders?

Das kann nur ein Verständnisproblem sein. Poste List deines DOIFs von diesem Zustand.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Fredi69

Internals:
   DEF        ([[Rollo_hoch]]) (set EG.Wz.Ra.RolladenErker up,set EG.Wz.Ra.RolladenStrasse up) DOELSEIF ([?Weihnachtsbeleuchtung] eq "off" and [[Rollo_runter]]) (set EG.Wz.Ra.RolladenErker down,set EG.Wz.Ra.RolladenStrasse down) DOELSEIF ([[WeihnachtsbeleuchtungAusUm]]) (set EG.Wz.Ra.RolladenErker down,set EG.Wz.Ra.RolladenStrasse down)
   NAME       Rollo_Wohnzimmer_DI
   NR         309
   NTFY_ORDER 50-Rollo_Wohnzimmer_DI
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-12-26 09:27:27   cmd             1
     2016-12-26 09:27:27   cmd_event       timer_1
     2016-12-26 09:27:27   cmd_nr          1
     2016-12-26 09:27:27   state           cmd_1
     2016-12-26 11:28:37   timer_01_c01    27.12.2016 09:27:27
     2016-12-26 17:32:41   timer_02_c02    27.12.2016 17:32:41
     2016-12-26 11:28:37   timer_03_c03    26.12.2016 22:30:00
   Condition:
     0          DOIF_time_once($hash,0,$wday)
     1          InternalDoIf($hash,'Weihnachtsbeleuchtung','STATE') eq "off" and DOIF_time_once($hash,1,$wday)
     2          DOIF_time_once($hash,2,$wday)
   Days:
   Devices:
   Do:
     0:
       0          set EG.Wz.Ra.RolladenErker up,set EG.Wz.Ra.RolladenStrasse up
     1:
       0          set EG.Wz.Ra.RolladenErker down,set EG.Wz.Ra.RolladenStrasse down
     2:
       0          set EG.Wz.Ra.RolladenErker down,set EG.Wz.Ra.RolladenStrasse down
     3:
   Helper:
     event      timer_2
     globalinit 1
     last_timer 3
     sleeptimer -1
     triggerDev
     Bm:
       Doif_notify:
         cnt        1655
         dmx        0
         max        1
         tot        2
         mAr:
           HASH(Rollo_Wohnzimmer_DI)
           HASH(LaCrosse_38)
       Doif_set:
         cnt        8
         dmx        0
         mAr
         max        0
         tot        0
     triggerEvents:
       timer_2
   Internals:
     1           Weihnachtsbeleuchtung:STATE
     all         Weihnachtsbeleuchtung:STATE
   Interval:
   Itimer:
     all         Rollo_hoch Rollo_runter WeihnachtsbeleuchtungAusUm
   Localtime:
     0          1482827247
     1          1482856361
     2          1482787800
   Readings:
   Realtime:
     0          09:27:27
     1          17:32:41
     2          22:30:00
   Regexp:
   State:
   Time:
     0          [Rollo_hoch]
     1          [Rollo_runter]
     2          [WeihnachtsbeleuchtungAusUm]
   Timecond:
     0          0
     1          1
     2          2
   Timer:
     0          0
     1          0
     2          0
   Timers:
     0           0
     1           1
     2           2
   Triggertime:
     1482787800:
       localtime  1482787800
       Hash:
     1482827247:
       localtime  1482827247
       Hash:
     1482856361:
       localtime  1482856361
       Hash:
Attributes:
   room       Steuerung,Wohnzimmer
   verbose    5
fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

Damian

Ich kann sehen, dass um 9:27 Uhr der Timer Rollo_hoch zugeschlagen hat und den ersten Ausführungszweig cmd_1 ausgeführt hat.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Fredi69

Mal abgesehen von meiner Frage, wo kann man das ablesen?

Es war halt neulich so, dass der Zweig um 17:32 zugeschlagen hat, als auch der um 22:30.
fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

Damian

Zitat von: Fredi69 am 26 Dezember 2016, 18:08:43
Mal abgesehen von meiner Frage, wo kann man das ablesen?

Es war halt neulich so, dass der Zweig um 17:32 zugeschlagen hat, als auch der um 22:30.

Du siehts am Datum der Readings cmd oder state, wann dieser verändert wurden, das ist der Zeitpunkt vom ersten Timer. Auch der zweiter Timer hat um  17:32:41 zugeschlagen, aber da war deine Weihnachtsbeleuchtung wohl an und deswegen wurde der zweite Zweig nicht ausgeführt.

Abgesehen davon hast du wohl um 11:28:37 die Zeitpunkte für Timer 1 und 3 verändert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Fredi69

#11
Danke, zurück zur konkreten Frage:
Warum hat sowohl der Zweig um 17:32 ausgelöst, als auch der um 22:30?
fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

Damian

Zitat von: Fredi69 am 26 Dezember 2016, 20:14:34
Danke, zurück zur konkreten Frage:
Warum hat sowohl der Zweig um 17:32 ausgelöst, als auch der um 22:30?


Weil du die Zeiten so gesetzt hast !?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Fredi69

Ich habe das Gefühl wir reden aneinander vorbei.
Es wird doch nur ein Zweig ausgeführt
fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

Damian

Zitat von: Fredi69 am 26 Dezember 2016, 21:57:11
Ich habe das Gefühl wir reden aneinander vorbei.
Es wird doch nur ein Zweig ausgeführt

Ich glaube auch. Du hast doch drei Bedingungen mit der Ausführungszweigen definiert. Jeder Zweig wird jeweils ausgeführt, wenn der entsprechende Trigger der Bedingung kommt (bei dir Timetrigger) und die Bedingung wahr ist.

erster um 09:27:27
zweiter um 17:32:41
dritter um 22:30:00

Der zweite wird nicht ausgeführt um 09:27:27 und 22:30:00, der dritte nicht um  09:27:27 und 17:32:41 usw.


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