Frage zu einem DOIF mit Beschattung

Begonnen von moonsorrox, 10 Juni 2020, 13:19:39

Vorheriges Thema - Nächstes Thema

moonsorrox

Ich weiß leider nicht warum mein DOIF für Beschattung nicht mehr richtig funktioniert, es geht hier um die Warte Zeit "wait" die ich mit 900:900 angegegeben habe, denn der Rollladen fährt munter hoch und runter bei kleinster Änderung. Das hat er eigentlich nie gemacht.

Gibt es ein zusätzliches Attribut welches ich setzen muss, bin da grad etwas überfordert, da länger nichts geändert, aktuelles Modul habe ich.
Hier mal das list vom DOIF Beschattung
Internals:
   CFGFN      ./FHEM/Schlafzimmer.cfg
   DEF        ([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] >= 23 and [myTwilight:azimuth] >= 72 and [myTwilight:elevation] <= 50 and [06:45-10:00]) (set SZ_Rollladen 25) DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] >= 23 and [myTwilight:azimuth] > 72 and [myTwilight:elevation] <= 60 and [10:01-13:00])(set SZ_Rollladen 25) DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] < 23 and [13:01-16:00]) (set SZ_Rollladen 75) DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] > 22 and [Temperatur_Terrasse:temperature] < 27 and [myTwilight:azimuth] >= 150 and [myTwilight:elevation] <= 70 and [13:01-16:00])(set SZ_Rollladen 50) DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] < 23 and [14:00-17:00]) (set SZ_Rollladen 75) DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and [myTwilight:azimuth] >= 230 and [[du_RolloZeitSZ_offen_B]]) (set SZ_Rollladen 75) DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] <= 31 and [[du_RolloZeitSZ_hoch_B]-{sunset_abs()}]) (set SZ_Rollladen 75)
   FUUID      5c4319de-f33f-a6c6-8da1-b27847f2e6852f68
   MODEL      FHEM
   NAME       di_RollladenSZ_B
   NOTIFYDEV  global,myTwilight,du_RolloZeitSZ_hoch_B,Temperatur_Terrasse,du_RolloZeitSZ_offen_B
   NR         3375
   NTFY_ORDER 50-di_RollladenSZ_B
   STATE      cmd_3
   TYPE       DOIF
   VERSION    22030 2020-05-25 14:10:16
   READINGS:
     2020-06-10 13:13:52   Device          Temperatur_Terrasse
     2020-06-10 13:13:52   cmd             3
     2020-06-10 13:13:52   cmd_event       Temperatur_Terrasse
     2020-06-10 13:13:52   cmd_nr          3
     2020-06-10 13:13:52   e_Temperatur_Terrasse_temperature 22.5
     2020-06-10 13:12:46   e_myTwilight_azimuth 175.6
     2020-06-10 13:12:46   e_myTwilight_elevation 60.67
     2020-06-10 13:13:52   state           cmd_3
     2020-06-10 10:00:00   timer_01_c01    11.06.2020 06:45:00
     2020-06-10 10:00:00   timer_02_c01    11.06.2020 10:00:00
     2020-06-10 13:00:00   timer_03_c02    11.06.2020 10:01:00
     2020-06-10 13:00:00   timer_04_c02    11.06.2020 13:00:00
     2020-06-09 16:00:00   timer_05_c03    10.06.2020 13:01:00
     2020-06-09 16:00:00   timer_06_c03    10.06.2020 16:00:00
     2020-06-09 16:00:00   timer_07_c04    10.06.2020 13:01:00
     2020-06-09 16:00:00   timer_08_c04    10.06.2020 16:00:00
     2020-06-09 17:00:00   timer_09_c05    10.06.2020 14:00:00
     2020-06-09 17:00:00   timer_10_c05    10.06.2020 17:00:00
     2020-06-09 16:15:00   timer_11_c06    10.06.2020 16:15:00
     2020-06-09 22:31:32   timer_12_c07    10.06.2020 16:15:00
     2020-06-09 22:31:32   timer_13_c07    10.06.2020 22:32:28
   Regex:
     accu:
     cond:
       Temperatur_Terrasse:
         0:
           temperature ^Temperatur_Terrasse$:^temperature:
         1:
           temperature ^Temperatur_Terrasse$:^temperature:
         2:
           temperature ^Temperatur_Terrasse$:^temperature:
         3:
           temperature ^Temperatur_Terrasse$:^temperature:
         4:
           temperature ^Temperatur_Terrasse$:^temperature:
         5:
         6:
           temperature ^Temperatur_Terrasse$:^temperature:
       myTwilight:
         0:
           azimuth    ^myTwilight$:^azimuth:
           elevation  ^myTwilight$:^elevation:
         1:
           azimuth    ^myTwilight$:^azimuth:
           elevation  ^myTwilight$:^elevation:
         2:
         3:
           azimuth    ^myTwilight$:^azimuth:
           elevation  ^myTwilight$:^elevation:
         4:
         5:
           azimuth    ^myTwilight$:^azimuth:
         6:
     itimer:
       du_RolloZeitSZ_hoch_B:
         itimer:
           &STATE     ^du_RolloZeitSZ_hoch_B$
       du_RolloZeitSZ_offen_B:
         itimer:
           &STATE     ^du_RolloZeitSZ_offen_B$
   attr:
     cmdState:
     wait:
       0:
         900
       1:
         900
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'du_RolloSZmodus','STATE') eq "Beschattung" and ::ReadingValDoIf($hash,'Temperatur_Terrasse','temperature') >= 23 and ::ReadingValDoIf($hash,'myTwilight','azimuth') >= 72 and ::ReadingValDoIf($hash,'myTwilight','elevation') <= 50 and ::DOIF_time($hash,0,1,$wday,$hms)
     1          ::InternalDoIf($hash,'du_RolloSZmodus','STATE') eq "Beschattung" and ::ReadingValDoIf($hash,'Temperatur_Terrasse','temperature') >= 23 and ::ReadingValDoIf($hash,'myTwilight','azimuth') > 72 and ::ReadingValDoIf($hash,'myTwilight','elevation') <= 60 and ::DOIF_time($hash,2,3,$wday,$hms)
     2          ::InternalDoIf($hash,'du_RolloSZmodus','STATE') eq "Beschattung" and ::ReadingValDoIf($hash,'Temperatur_Terrasse','temperature') < 23 and ::DOIF_time($hash,4,5,$wday,$hms)
     3          ::InternalDoIf($hash,'du_RolloSZmodus','STATE') eq "Beschattung" and ::ReadingValDoIf($hash,'Temperatur_Terrasse','temperature') > 22 and ::ReadingValDoIf($hash,'Temperatur_Terrasse','temperature') < 27 and ::ReadingValDoIf($hash,'myTwilight','azimuth') >= 150 and ::ReadingValDoIf($hash,'myTwilight','elevation') <= 70 and ::DOIF_time($hash,6,7,$wday,$hms)
     4          ::InternalDoIf($hash,'du_RolloSZmodus','STATE') eq "Beschattung" and ::ReadingValDoIf($hash,'Temperatur_Terrasse','temperature') < 23 and ::DOIF_time($hash,8,9,$wday,$hms)
     5          ::InternalDoIf($hash,'du_RolloSZmodus','STATE') eq "Beschattung" and ::ReadingValDoIf($hash,'myTwilight','azimuth') >= 230 and ::DOIF_time_once($hash,10,$wday)
     6          ::InternalDoIf($hash,'du_RolloSZmodus','STATE') eq "Beschattung" and ::ReadingValDoIf($hash,'Temperatur_Terrasse','temperature') <= 31 and ::DOIF_time($hash,11,12,$wday,$hms)
   days:
   do:
     0:
       0          set SZ_Rollladen 25
     1:
       0          set SZ_Rollladen 25
     2:
       0          set SZ_Rollladen 75
     3:
       0          set SZ_Rollladen 50
     4:
       0          set SZ_Rollladen 75
     5:
       0          set SZ_Rollladen 75
     6:
       0          set SZ_Rollladen 75
     7:
   helper:
     DEVFILTER  ^global$|^myTwilight$|^Temperatur_Terrasse$|^du_RolloZeitSZ_offen_B$|^du_RolloZeitSZ_hoch_B$
     NOTIFYDEV  global|myTwilight|Temperatur_Terrasse|du_RolloZeitSZ_offen_B|du_RolloZeitSZ_hoch_B
     event      batVoltage: 2.40,battery: ok,commState: CMDs_done,humidity: 46,luminosity: 137,pressure-nn: 1042.6,pressure: 1015.0,rssi_at_HMUSB: -57,T: 22.5 H: 46 L: 137 P: 1015.0 P-NN: 1042.6,temperature: 22.5
     globalinit 1
     last_timer 13
     sleeptimer -1
     timerdev   Temperatur_Terrasse
     timerevent batVoltage: 2.40,battery: ok,commState: CMDs_done,humidity: 46,luminosity: 137,pressure-nn: 1042.6,pressure: 1015.0,rssi_at_HMUSB: -57,T: 22.5 H: 46 L: 137 P: 1015.0 P-NN: 1042.6,temperature: 22.5
     triggerDev Temperatur_Terrasse
     DOIF_eventa:
       cmd_nr: 3
       cmd: 3
       cmd_event: Temperatur_Terrasse
       cmd_3
     DOIF_eventas:
       cmd_nr: 3
       cmd: 3
       cmd_event: Temperatur_Terrasse
       state: cmd_3
     timerevents:
       batVoltage: 2.40
       battery: ok
       commState: CMDs_done
       humidity: 46
       luminosity: 137
       pressure-nn: 1042.6
       pressure: 1015.0
       rssi_at_HMUSB: -57
       T: 22.5 H: 46 L: 137 P: 1015.0 P-NN: 1042.6
       temperature: 22.5
     timereventsState:
       batVoltage: 2.40
       battery: ok
       commState: CMDs_done
       humidity: 46
       luminosity: 137
       pressure-nn: 1042.6
       pressure: 1015.0
       rssi_at_HMUSB: -57
       state: T: 22.5 H: 46 L: 137 P: 1015.0 P-NN: 1042.6
       temperature: 22.5
     triggerEvents:
       batVoltage: 2.40
       battery: ok
       commState: CMDs_done
       humidity: 46
       luminosity: 137
       pressure-nn: 1042.6
       pressure: 1015.0
       rssi_at_HMUSB: -57
       T: 22.5 H: 46 L: 137 P: 1015.0 P-NN: 1042.6
       temperature: 22.5
     triggerEventsState:
       batVoltage: 2.40
       battery: ok
       commState: CMDs_done
       humidity: 46
       luminosity: 137
       pressure-nn: 1042.6
       pressure: 1015.0
       rssi_at_HMUSB: -57
       state: T: 22.5 H: 46 L: 137 P: 1015.0 P-NN: 1042.6
       temperature: 22.5
   internals:
     all         du_RolloSZmodus:STATE
   interval:
     0          -1
     1          0
     11         -1
     12         11
     2          -1
     3          2
     4          -1
     5          4
     6          -1
     7          6
     8          -1
     9          8
   intervalfunc:
   intervaltimer:
   localtime:
     0          1591850700
     1          1591862400
     10         1591798500
     11         1591798500
     12         1591821148
     2          1591862460
     3          1591873200
     4          1591786860
     5          1591797600
     6          1591786860
     7          1591797600
     8          1591790400
     9          1591801200
   perlblock:
   readings:
     all         Temperatur_Terrasse:temperature myTwilight:azimuth myTwilight:elevation
   realtime:
     0          06:45:00
     1          10:00:00
     10         16:15:00
     11         16:15:00
     12         22:32:28
     2          10:01:00
     3          13:00:00
     4          13:01:00
     5          16:00:00
     6          13:01:00
     7          16:00:00
     8          14:00:00
     9          17:00:00
   time:
     0          06:45:00
     1          10:00:00
     10         [du_RolloZeitSZ_offen_B]
     11         [du_RolloZeitSZ_hoch_B]
     12         {sunset_abs()}
     2          10:01:00
     3          13:00:00
     4          13:01:00
     5          16:00:00
     6          13:01:00
     7          16:00:00
     8          14:00:00
     9          17:00:00
   timeCond:
     0          0
     1          0
     10         5
     11         6
     12         6
     2          1
     3          1
     4          2
     5          2
     6          3
     7          3
     8          4
     9          4
   timer:
     0          0
     1          0
     10         0
     11         0
     12         0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
     8          0
     9          0
   timers:
     0           0  1
     1           2  3
     2           4  5
     3           6  7
     4           8  9
     5           10
     6           11  12
   trigger:
   triggertime:
     1591790400:
       localtime  1591790400
       hash:
     1591797600:
       localtime  1591797600
       hash:
     1591798500:
       localtime  1591798500
       hash:
     1591801200:
       localtime  1591801200
       hash:
     1591821148:
       localtime  1591821148
       hash:
     1591850700:
       localtime  1591850700
       hash:
     1591862400:
       localtime  1591862400
       hash:
     1591862460:
       localtime  1591862460
       hash:
     1591873200:
       localtime  1591873200
       hash:
   uiState:
   uiTable:
Attributes:
   alias      di_RollladenSZ_B
   group      Rollläden
   wait       900:900


eigentlich ist es, wenn ich mir das DOIF so anschaue viel zu kompliziert aufgebaut eine einfachere Variante würde denke ich auch reichen, muss mal etwas überlegen. :-\
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Frank_Huber

schau dir das Attribut cmdpause an.

Das besagt dass nach einer Befehlsausführung mindestens so lange nichts passiert.

moonsorrox

hab ich mal eingesetzt, mal schauen wie es die Tage aussieht
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Otto123

Ich zähle 7 Schaltmöglichkeiten.
Mit wait 900:900 deckst Du die ersten beiden ab. Das hat so niemals funktioniert!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Frank_Huber

Wait ist auch nicht dass was er will.
Mit Wait wird ja auch die erste Ausführung verzögert.

Daher denke ich dass das mal auf zwei Zweige zum Testen eingerichtet war.

moonsorrox

Zitat von: Otto123 am 11 Juni 2020, 09:10:08
Ich zähle 7 Schaltmöglichkeiten.
Mit wait 900:900 deckst Du die ersten beiden ab. Das hat so niemals funktioniert!
Otto du hast vollkommen Recht  ;)
ich habe mir meine DOIF mal aus der Sicherung vom letzten Jahr raus gesucht, da hatte ich das echt anders (egal jetzt) aber damit war ich nicht zufrieden und hatte dann mal angefangen mir ein neues zu bauen und das ist das aktuelle und damit kann das natürlich nicht funktionieren  :-\
Deshalb werde ich es etwas einfacher gestalten mit weniger Zeiten.

Zitat von: Frank_Huber am 11 Juni 2020, 10:52:03
Wait ist auch nicht dass was er will.
Mit Wait wird ja auch die erste Ausführung verzögert.
Daher denke ich dass das mal auf zwei Zweige zum Testen eingerichtet war.

ja, auch du hast Recht so war das mal gedacht, aber wie oben schon geschrieben...
Ich habe aber trotzdem mal "cmdpause" eingegeben und nun ist heute aber nicht das Wetter zum "Beschatten"
Ich werde erstmal weiter an dem DOIF arbeiten damit es dann mal irgendwann funktioniert...

Mein Ansatz ist es abhängig von der Temperatur und der Zeit zu machen und denke damit kann ich es vereinfachen, es braucht nicht unendlich viele Zeiten.
Ich hatte auch mal AutoshuttersControl im Einsatz, aber das ist zu kompliziert aufgebaut, aktuell habe ich damit ein Rollladen in Betrieb, aber so ganz habe ich das noch nicht im Griff.

Also vielen Dank euch erst einmal, ich arbeite weiter dran  ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Otto123

Also ich habe das bei meiner Beschattung so (wait 900:900) , allerdings nur zwei Ausführungsteile. Das läuft aus meiner Sicht so wie ich es mir vorstelle :)

Bin nicht sicher was passiert wenn Du 900:900:900:900:900:900:900 einträgst
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Frank_Huber

Ich mache Beschattung nach Temperatur und Sonnenwinkel.
In Abhängigkeit der Anwesenheit ganz zu oder 70%


defmod DOIF_ROLLO_BESCHATTUNG_WEST DOIF ([Anwesenheit] eq "ja" and [Aussen_Temp:temperature] > 23 and [Astro:SunAz] > 220 and [Astro:SunAz] < 290) \
(set Rollo west pct 70)  (set TelegramBot msg Beschattung West - alle Rollos 70%!)\
\
DOELSEIF ([Anwesenheit] eq "nein" and [Aussen_Temp:temperature] > 23 and [Astro:SunAz] > 220 and [Astro:SunAz] < 285) \
(set Rollo west closed) (set TelegramBot msg Beschattung West - alle Rollos zu!)\
\
DOELSEIF ([$SELF:cmd_nr] =~ "1|2" and \
(([Astro:SunAz] > 220 and [Astro:SunAz] < 280 and [Aussen_Temp:temperature] < 21)\
or [Astro:SunAlt] <= 8 or [Astro:SunAz] >= 280))\
(set Rollo west open) (set TelegramBot msg Beschattung West - alle Rollos offen!)
attr DOIF_ROLLO_BESCHATTUNG_WEST cmdpause 900
attr DOIF_ROLLO_BESCHATTUNG_WEST repeatsame 1:1:1:1:1