Hauptmenü

DOIF Logik Problem

Begonnen von Fredi69, 04 August 2018, 15:33:10

Vorheriges Thema - Nächstes Thema

Fredi69

Ich habe versucht meine langjährig funktionierende Rolladensteuerung um eine automatische Beschattung zu erweitern.
Leider habe ich jetzt irgendein logisches Problem, wie kann ich das testen wo der Fehler liegt?

([[Rollo_runter]-[Rollo_hoch]]
and [RolloAutomatikDY:state] eq "Ein")
(set EG.Bu.Ra.RolladenLinks down)
DOELSEIF (![[Rollo_runter]-[Rollo_hoch]]
and [?RolloAutomatikDY:state] eq "Ein"
and [?WetterProplanta:fc0_tempMax:d] > [MaxTempRollo]
and [?myTw:azimuth:d] > 60
and [?myTw:azimuth:d] < 180)
(set EG.Bu.Ra.RolladenLinks 40)
DOELSEIF
((![[Rollo_runter]-[Rollo_hoch]]
and [?RolloAutomatikDY:state] eq "Ein")
or ([?RolloAutomatikDY:state] eq "Ein"
and [EG.Bu.Ra.RolladenLinks:state] eq "40"
and ([?myTw:azimuth:d] < 60 or [?myTw:azimuth:d] > 180)))
(set EG.Bu.Ra.RolladenLinks up)
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


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

Ellert


Fredi69

Zitat von: Ellert am 04 August 2018, 19:01:38
Und angewendet?
Ja sicher, hat mit aber im konkreten Fall nicht weitergeholfen.
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

amenomade

Schon mal deine Klammern in der 3. Bedingung kontrolliert?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Fredi69

Zitat von: amenomade am 05 August 2018, 18:46:39
Schon mal deine Klammern in der 3. Bedingung kontrolliert?
ja, mehrfach
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

amenomade

Zitat von: Fredi69 am 05 August 2018, 20:37:56
ja, mehrfach
Etwas stimmt aber nicht:
Bedingung 2
(![[Rollo_runter]-[Rollo_hoch]] and [?RolloAutomatikDY:state] eq "Ein" and ... and .... and ... and
Bedingung 3
(![[Rollo_runter]-[Rollo_hoch]]  and [?RolloAutomatikDY:state] eq "Ein")
or ( etwas anderes )


Was passiert genau? Was ist das Problem? Kannst Du ein "list" vom DOIF posten, wenn er sich in einem nicht gewünschtem Zustand 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

Fredi69

Hier das List:
Internals:
   DEF        ([[Rollo_runter]-[Rollo_hoch]]
and [RolloAutomatikDY:state] eq "Ein")
(set EG.Bu.Ra.RolladenLinks down)
DOELSEIF (![[Rollo_runter]-[Rollo_hoch]]
and [?RolloAutomatikDY:state] eq "Ein"
and [?WetterProplanta:fc0_tempMax:d] > [MaxTempRollo]
and [?myTw:azimuth:d] > 60
and [?myTw:azimuth:d] < 180)
(set EG.Bu.Ra.RolladenLinks 40)
DOELSEIF
((![[Rollo_runter]-[Rollo_hoch]]
and [?RolloAutomatikDY:state] eq "Ein")
or ([?RolloAutomatikDY:state] eq "Ein"
and [EG.Bu.Ra.RolladenLinks:state] eq "40"
and ([?myTw:azimuth:d] < 60 or [?myTw:azimuth:d] > 180)))
(set EG.Bu.Ra.RolladenLinks up)
   MODEL      FHEM
   NAME       Rollo_Buero_Links_DI
   NR         285
   NTFY_ORDER 50-Rollo_Buero_Links_DI
   STATE      cmd_3
   TYPE       DOIF
   READINGS:
     2018-08-06 12:41:27   Device          EG.Bu.Ra.RolladenLinks
     2018-08-06 12:41:07   cmd             3
     2018-08-06 12:41:07   cmd_event       EG.Bu.Ra.RolladenLinks
     2018-08-06 12:41:07   cmd_nr          3
     2018-08-06 12:41:27   e_EG.Bu.Ra.RolladenLinks_state on
     2018-08-06 12:40:48   mode            enabled
     2018-08-06 12:41:07   state           cmd_3
     2018-08-06 12:40:48   timer_01_c01    06.08.2018 21:42:01
     2018-08-06 12:40:48   timer_02_c01    07.08.2018 06:39:55
     2018-08-06 12:40:48   timer_03_c02    06.08.2018 21:42:01
     2018-08-06 12:40:48   timer_04_c02    07.08.2018 06:39:55
     2018-08-06 12:40:48   timer_05_c03    06.08.2018 21:42:01
     2018-08-06 12:40:48   timer_06_c03    07.08.2018 06:39:55
   Regex:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          DOIF_time($hash,0,1,$wday,$hms) and ReadingValDoIf($hash,'RolloAutomatikDY','state') eq "Ein"
     1          !DOIF_time($hash,2,3,$wday,$hms) and ReadingValDoIf($hash,'RolloAutomatikDY','state') eq "Ein" and ReadingValDoIf($hash,'WetterProplanta','fc0_tempMax','','d') > InternalDoIf($hash,'MaxTempRollo','STATE') and ReadingValDoIf($hash,'myTw','azimuth','','d') > 60 and ReadingValDoIf($hash,'myTw','azimuth','','d') < 180
     2          (!DOIF_time($hash,4,5,$wday,$hms) and ReadingValDoIf($hash,'RolloAutomatikDY','state') eq "Ein") or (ReadingValDoIf($hash,'RolloAutomatikDY','state') eq "Ein" and ReadingValDoIf($hash,'EG.Bu.Ra.RolladenLinks','state') eq "40" and (ReadingValDoIf($hash,'myTw','azimuth','','d') < 60 or ReadingValDoIf($hash,'myTw','azimuth','','d') > 180))
   days:
   devices:
     0           RolloAutomatikDY
     1           MaxTempRollo
     2           EG.Bu.Ra.RolladenLinks
     all         RolloAutomatikDY MaxTempRollo EG.Bu.Ra.RolladenLinks
   do:
     0:
       0          set EG.Bu.Ra.RolladenLinks down
     1:
       0          set EG.Bu.Ra.RolladenLinks 40
     2:
       0          set EG.Bu.Ra.RolladenLinks up
     3:
   helper:
     event      deviceMsg: up (to VCCU),level: 100,motor: stop:up,pct: 100,up,timedOn: down,RSSI: -57,RAWMSG: E504362,0000,ADBDAD0F,FF,FFC7,C6A4105043622CD9940601C800
     globalinit 1
     last_timer 6
     sleeptimer -1
     timerdev   EG.Bu.Ra.RolladenLinks
     timerevent deviceMsg: up (to VCCU),level: 100,motor: stop:up,pct: 100,up,timedOn: down,RSSI: -57,RAWMSG: E504362,0000,ADBDAD0F,FF,FFC7,C6A4105043622CD9940601C800
     triggerDev EG.Bu.Ra.RolladenLinks
     DOIF_eventas:
       cmd_nr: 3
       cmd: 3
       cmd_event: EG.Bu.Ra.RolladenLinks
       state: cmd_3
     timerevents:
       deviceMsg: up (to VCCU)
       level: 100
       motor: stop:up
       pct: 100
       up
       timedOn: down
       RSSI: -57
       RAWMSG: E504362,0000,ADBDAD0F,FF,FFC7,C6A4105043622CD9940601C800
     timereventsState:
       deviceMsg: up (to VCCU)
       level: 100
       motor: stop:up
       pct: 100
       state: on
       timedOn: down
       RSSI: -57
       RAWMSG: E504362,0000,ADBDAD0F,FF,FFC7,C6A4105043622CD9940601C800
     triggerEvents:
       deviceMsg: up (to VCCU)
       level: 100
       motor: stop:up
       pct: 100
       up
       timedOn: down
       RSSI: -57
       RAWMSG: E504362,0000,ADBDAD0F,FF,FFC7,C6A4105043622CD9940601C800
     triggerEventsState:
       deviceMsg: up (to VCCU)
       level: 100
       motor: stop:up
       pct: 100
       state: on
       timedOn: down
       RSSI: -57
       RAWMSG: E504362,0000,ADBDAD0F,FF,FFC7,C6A4105043622CD9940601C800
   internals:
     1           MaxTempRollo:STATE
     all         MaxTempRollo:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
     4          -1
     5          4
   intervalfunc:
   itimer:
     all         Rollo_runter Rollo_hoch
   localtime:
     0          1533584521
     1          1533616795
     2          1533584521
     3          1533616795
     4          1533584521
     5          1533616795
   readings:
     0           RolloAutomatikDY:state
     2           EG.Bu.Ra.RolladenLinks:state
     all         RolloAutomatikDY:state EG.Bu.Ra.RolladenLinks:state
   realtime:
     0          21:42:01
     1          06:39:55
     2          21:42:01
     3          06:39:55
     4          21:42:01
     5          06:39:55
   time:
     0          [Rollo_runter]
     1          [Rollo_hoch]
     2          [Rollo_runter]
     3          [Rollo_hoch]
     4          [Rollo_runter]
     5          [Rollo_hoch]
   timeCond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
   timers:
     0           0  1
     1           2  3
     2           4  5
   trigger:
   triggertime:
     1533584521:
       localtime  1533584521
       hash:
     1533616795:
       localtime  1533616795
       hash:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   room       Steuerung


Obwohl die Werte von TempMax und Azimuth passen ist der Rolladen oben.
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

amenomade

Und warum wäre das falsch? Bedingung 3 ist wahr. Dann ist cmd_3 keine schlechte Auswahl.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Fredi69

Zitat von: amenomade am 06 August 2018, 22:22:25
Und warum wäre das falsch? Bedingung 3 ist wahr. Dann ist cmd_3 keine schlechte Auswahl.
Ich hätte erwartet , das bei einem Azimuth von beispielhaft 160 Bedingung 2 wahr ist!
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

amenomade

Aber EG.Bu.Ra.RolladenLinks:state hat getriggert.

Zitat2018-08-06 12:41:27   e_EG.Bu.Ra.RolladenLinks_state on

Zitat von: CommandRefZu beachten ist, dass nur die Bedingungen überprüft werden, die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten.
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

Um 12:42 hat EG.Bu.Ra.RolladenLinks:state getriggert. Dann wurde die einzige Bedingung bewertet, die EG.Bu.Ra.RolladenLinks:state beinhaltet, sprich die 3. Da die Bedingung 3 (auch) wahr ist, wird cmd_3 durchgeführt.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Fredi69

Zitat von: amenomade am 06 August 2018, 22:33:14
Aber EG.Bu.Ra.RolladenLinks:state hat getriggert.

Sorry, das verstehe ich leider nicht.
Ohne die Azimuth Abfrage läuft alles wie gewünscht, mit der Azimuth Abfrage nicht mehr.
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

amenomade

#14
Um 12:41 Uhr ist EG.Bu.Ra.RolladenLinks:state auf "on" gesprungen.
2018-08-06 12:41:27   e_EG.Bu.Ra.RolladenLinks_state on

EDIT: dann weiss man nicht mehr was er früher für einen Wert hatte, aber um 12:41:07 hat sich der Wert auch geändert:
2018-08-06 12:41:07   cmd_event       EG.Bu.Ra.RolladenLinks und dieses Event ist der Trigger des DOIFs gewesen.

Dann wurde das DOIF getriggert, und die Bedingung 3 bewertet. Da Bedingung 3 wahr war, wurde cmd_3 durchgeführt. Was genau verstehst Du nicht?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus