Hauptmenü

Jahreszeit und DOIF

Begonnen von Der Neuling, 27 Oktober 2019, 11:32:13

Vorheriges Thema - Nächstes Thema

Der Neuling

Hallo zusammen,

Seit ein paar Wochen habe ich mit einem Rollo das Problem, dass dieser zwar am Abend zufährt, aber nach ca. einer Stunde wiedermit dem cmd 8.2 hoch.
Auszug aus dem Log:
di_Rollladen_Eltern: Herbst eq "Herbst" and [{sunrise("HORIZON=-1.0",0,"7:30", "8:00")}|7] or [{sunrise("HORIZON=-1.0",0,"06:00", "8:00")}|8]: Unknown command

Die Internals für den Rollo:
Internals:
   DEF        ([du_Rollo_Art] eq "Sommer" and ([{sunset("HORIZON=-3.0",0,"19:00","21:00")}] ))
    (set Rollo_Eltern off-for-timer 19) ##3
DOELSEIF ([du_Rollo_Art] eq "Sommer" and [{sunrise("HORIZON=-1.0",0,"7:30", "8:00")}|7] or [{sunrise("HORIZON=-1.0",0,"06:00", "8:00")}|8])
(set Rollo_Eltern on) ##4
DOELSEIF ([du_Rollo_Art] eq "Herbst" and ([{sunset("HORIZON=-3.0",0,"17:00", "21:00")}]))
    (set Rollo_Eltern off-for-timer 19) ##5
DOELSEIF ([du_Rollo_Art] eq "Herbst" and [{sunrise("HORIZON=-1.0",0,"7:30", "8:00")}|7] or [{sunrise("HORIZON=-1.0",0,"06:00", "8:00")}|8])
(set Rollo_Eltern on) ##6
DOELSEIF ([du_Rollo_Art] eq "Winter" and ([{sunset("HORIZON=-3.0",0,"17:00", "21:00")}]))
    (set Rollo_Eltern off) ##7
DOELSEIF ([du_Rollo_Art] eq "Winter" and [{sunrise("HORIZON=3.0",0,"7:30", "8:00")}|7] or [{sunrise("HORIZON=-1.0",0,"06:00", "8:00")}|8])
(set Rollo_Eltern on) ##8
DOELSEIF ([du_Rollo_Art] eq "Fruehling" and ([{sunset("HORIZON=-3.0",0,"17:00", "21:00")}]))
    (set Rollo_Eltern off-for-timer 19) ##9
DOELSE ([du_Rollo_Art] eq "Fruehling" and [{sunrise("HORIZON=-1.0",0,"7:30", "8:00")}|7] or [{sunrise("HORIZON=-1.0",0,"06:00", "8:00")}|8])
(set Rollo_Eltern on) ##10
   FUUID      5c449cec-f33f-28eb-57d7-bad885586416000f
   MODEL      FHEM
   NAME       di_Rollladen_Eltern
   NOTIFYDEV  global,du_Rollo_Art
   NR         102
   NTFY_ORDER 50-di_Rollladen_Eltern
   STATE      cmd_8
   TYPE       DOIF
   VERSION    20268 2019-09-28 21:00:39
   READINGS:
     2019-10-27 11:11:29   Device          du_Rollo_Art
     2019-10-27 11:11:29   cmd             8.2
     2019-10-27 11:11:29   cmd_event       du_Rollo_Art
     2019-10-27 11:11:29   cmd_nr          8
     2019-10-27 11:11:29   cmd_seqnr       2
     2019-10-27 11:11:29   e_du_Rollo_Art_STATE Herbst
     2019-10-27 11:11:01   mode            enabled
     2019-10-27 11:11:29   state           cmd_8
     2019-10-27 10:33:01   timer_01_c01    27.10.2019 19:00:00
     2019-10-27 10:33:01   timer_02_c02    28.10.2019 07:30:00|7
     2019-10-27 10:33:01   timer_03_c02    28.10.2019 06:58:21|8
     2019-10-27 10:33:01   timer_04_c03    27.10.2019 17:29:23
     2019-10-27 10:33:01   timer_05_c04    28.10.2019 07:30:00|7
     2019-10-27 10:33:01   timer_06_c04    28.10.2019 06:58:21|8
     2019-10-27 10:33:01   timer_07_c05    27.10.2019 17:29:23
     2019-10-27 10:33:01   timer_08_c06    28.10.2019 07:30:00|7
     2019-10-27 10:33:01   timer_09_c06    28.10.2019 06:58:21|8
     2019-10-27 10:33:01   timer_10_c07    27.10.2019 17:29:23
   Regex:
     accu:
     cond:
       du_Rollo_Art:
         0:
           &STATE     ^du_Rollo_Art$
         1:
           &STATE     ^du_Rollo_Art$
         2:
           &STATE     ^du_Rollo_Art$
         3:
           &STATE     ^du_Rollo_Art$
         4:
           &STATE     ^du_Rollo_Art$
         5:
           &STATE     ^du_Rollo_Art$
         6:
           &STATE     ^du_Rollo_Art$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'du_Rollo_Art','STATE') eq "Sommer" and (::DOIF_time_once($hash,0,$wday) )
     1          ::InternalDoIf($hash,'du_Rollo_Art','STATE') eq "Sommer" and ::DOIF_time_once($hash,1,$wday,"7") or ::DOIF_time_once($hash,2,$wday,"8")
     2          ::InternalDoIf($hash,'du_Rollo_Art','STATE') eq "Herbst" and (::DOIF_time_once($hash,3,$wday))
     3          ::InternalDoIf($hash,'du_Rollo_Art','STATE') eq "Herbst" and ::DOIF_time_once($hash,4,$wday,"7") or ::DOIF_time_once($hash,5,$wday,"8")
     4          ::InternalDoIf($hash,'du_Rollo_Art','STATE') eq "Winter" and (::DOIF_time_once($hash,6,$wday))
     5          ::InternalDoIf($hash,'du_Rollo_Art','STATE') eq "Winter" and ::DOIF_time_once($hash,7,$wday,"7") or ::DOIF_time_once($hash,8,$wday,"8")
     6          ::InternalDoIf($hash,'du_Rollo_Art','STATE') eq "Fruehling" and (::DOIF_time_once($hash,9,$wday))
   days:
     1          7
     2          8
     4          7
     5          8
     7          7
     8          8
   do:
     0:
       0          set Rollo_Eltern off-for-timer 19
     1:
       0          set Rollo_Eltern on
     2:
       0          set Rollo_Eltern off-for-timer 19
     3:
       0          set Rollo_Eltern on
     4:
       0          set Rollo_Eltern off
     5:
       0          set Rollo_Eltern on
     6:
       0          set Rollo_Eltern off-for-timer 19
     7:
       0          [du_Rollo_Art] eq "Fruehling" and [{sunrise("HORIZON=-1.0",0,"7:30", "8:00")}|7] or [{sunrise("HORIZON=-1.0",0,"06:00", "8:00")}|8]
       1          set Rollo_Eltern on
   helper:
     DEVFILTER  ^global$|^du_Rollo_Art$
     NOTIFYDEV  global|du_Rollo_Art
     event      Herbst
     globalinit 1
     last_timer 10
     sleeptimer -1
     timerdev   du_Rollo_Art
     timerevent Herbst
     triggerDev du_Rollo_Art
     DOIF_eventa:
       cmd_nr: 8
       cmd_seqnr: 2
       cmd_event: du_Rollo_Art
       cmd_8
     DOIF_eventas:
       cmd_nr: 8
       cmd_seqnr: 2
       cmd_event: du_Rollo_Art
       state: cmd_8
     timerevents:
       Herbst
     timereventsState:
       state: Herbst
     triggerEvents:
       Herbst
     triggerEventsState:
       state: Herbst
   internals:
     all         du_Rollo_Art:STATE
   intervalfunc:
   localtime:
     0          1572199200
     1          1572244200
     2          1572242301
     3          1572193763
     4          1572244200
     5          1572242301
     6          1572193763
     7          1572244200
     8          1572242301
     9          1572193763
   perlblock:
   readings:
   realtime:
     0          19:00:00
     1          07:30:00
     2          06:58:21
     3          17:29:23
     4          07:30:00
     5          06:58:21
     6          17:29:23
     7          07:30:00
     8          06:58:21
     9          17:29:23
   time:
     0          {sunset("HORIZON=-3.0",0,"19:00","21:00")}
     1          {sunrise("HORIZON=-1.0",0,"7:30","8:00")}
     2          {sunrise("HORIZON=-1.0",0,"06:00","8:00")}
     3          {sunset("HORIZON=-3.0",0,"17:00","21:00")}
     4          {sunrise("HORIZON=-1.0",0,"7:30","8:00")}
     5          {sunrise("HORIZON=-1.0",0,"06:00","8:00")}
     6          {sunset("HORIZON=-3.0",0,"17:00","21:00")}
     7          {sunrise("HORIZON=3.0",0,"7:30","8:00")}
     8          {sunrise("HORIZON=-1.0",0,"06:00","8:00")}
     9          {sunset("HORIZON=-3.0",0,"17:00","21:00")}
   timeCond:
     0          0
     1          1
     2          1
     3          2
     4          3
     5          3
     6          4
     7          5
     8          5
     9          6
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
     8          0
     9          0
   timers:
     0           0
     1           1  2
     2           3
     3           4  5
     4           6
     5           7  8
     6           9
   trigger:
   triggertime:
     1572193763:
       localtime  1572193763
       hash:
     1572199200:
       localtime  1572199200
       hash:
     1572242301:
       localtime  1572242301
       hash:
     1572244200:
       localtime  1572244200
       hash:
   uiState:
   uiTable:
Attributes:
   alias      Rollladen Eltern
   devStateIcon cmd_1:fts_shutter_70@orange:cmd_2 cmd_2:fts_shutter_10@green cmd_3:fts_shutter_70@orange cmd_4:fts_shutter_10@green cmd_5:fts_shutter_70@orange cmd_6:fts_shutter_10@green cmd_7:fts_shutter_90@blue cmd_8:fts_shutter_10@green cmd_9:fts_shutter_70@orange cmd_10:fts_shutter_10@green:cmd_1
   group      DOIF_OG
   icon       helper_doif@#548dd4
   loglevel   5
   room       Obergeschoss,System
   sortby     4


hier der Dummy für die Jahreszeiten:
Internals:
   FUUID      5c449cee-f33f-28eb-8a60-885bf70756db62b5
   NAME       du_Rollo_Art
   NR         228
   STATE      Herbst
   TYPE       dummy
   READINGS:
     2019-10-27 11:11:29   state           Herbst
Attributes:
   alias      Jahrezeitautomatik:
   devStateIcon .*:rc_BLANK
   group      dummy
   icon       fts_shutter_updown@#548dd4
   room       Erdgeschoss,Obergeschoss,System
   setList    state:Winter,Fruehling,Sommer,Herbst
   sortby     3
   webCmd     state


Der Rollo im Raum daneben fährt (bis jetzt) normal. Wo liegt hier der Fehler? - Ausser zwischen meinen Ohren   :D

Gruss
Andi

Damian

DOELSE ist hier wohl nicht gemeint ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Der Neuling

Schrieb ich doch: zwischen den Ohren :D
Vielen Dank für die schnelle Antwort!

Wie würde die richtige Syntax für das folgende Beispiel aussehen:

  DEF        ([du_Beschattung] eq 'ein' and [9:00 - 16:30] and [HM_63DDCB:brightness:avg7] > 25000 and [HM_58F0BD:temperature] > 22)
(set Rollo_Eltern off-for-timer 19) ##1
DOELSEIF ([du_Beschattung] eq "ein"  or ([9:00 - 16:30] and [HM_63DDCB:brightness:avg7] < 3000))
(set Rollo_Eltern on) ##2
DOELSEIF ([du_Rollo_Art] eq "Sommer" and ([{sunset("HORIZON=-3.0",0,"19:00","21:00")}] ))
    (set Rollo_Eltern off-for-timer 19) ##3
DOELSEIF ([du_Rollo_Art] eq "Sommer" and [{sunrise("HORIZON=-1.0",0,"7:30", "8:00")}|7] or [{sunrise("HORIZON=-1.0",0,"06:00", "8:00")}|8])
(set Rollo_Eltern on) ##4
DOELSEIF ([du_Rollo_Art] eq "Herbst" and ([{sunset("HORIZON=-3.0",0,"17:00", "21:00")}]))
    (set Rollo_Eltern off-for-timer 19) ##5
DOELSEIF ([du_Rollo_Art] eq "Herbst" and [{sunrise("HORIZON=-1.0",0,"7:30", "8:00")}|7] or [{sunrise("HORIZON=-1.0",0,"06:00", "8:00")}|8])
(set Rollo_Eltern on) ##6
DOELSEIF ([du_Rollo_Art] eq "Winter" and ([{sunset("HORIZON=-3.0",0,"17:00", "21:00")}]))
    (set Rollo_Eltern off) ##7
DOELSEIF ([du_Rollo_Art] eq "Winter" and [{sunrise("HORIZON=3.0",0,"7:30", "8:00")}|7] or [{sunrise("HORIZON=-1.0",0,"06:00", "8:00")}|8])
(set Rollo_Eltern on) ##8
DOELSEIF ([du_Rollo_Art] eq "Fruehling" and ([{sunset("HORIZON=-3.0",0,"17:00", "21:00")}]))
    (set Rollo_Eltern off-for-timer 19) ##9
DOELSEIF ([du_Rollo_Art] eq "Fruehling" and [{sunrise("HORIZON=-1.0",0,"7:30", "8:00")}|7] or [{sunrise("HORIZON=-1.0",0,"06:00", "8:00")}|8])
(set Rollo_Eltern on) ##10


Hatte hier mal die Idee für eine Beschattung  die Sonnen.- und Temperaturabhängig ist. Nur mit dem Problem, dass der Rollo im Sommer um 9 Uhr zu und dann durch den Helligkeitswert wieder aufgefahren wird.
Mir geht es hier hauptsächlich um das Verständniss der richtige Reihenfolge (Wichtigkeit der Events) und derKlammersetzung. Ist diese gleich wie die Klammern in der Mathematik?
Für die Klammersetzung (beim "Programmieren") habe ich für mich noch nichts passendes im Web gefunden. 

Gruss
Andi


amenomade

#3
Zitat von: Der Neuling am 27 Oktober 2019, 13:41:40
Klammersetzung. Ist diese gleich wie die Klammern in der Mathematik?
Ja

Und: die Bedingungen werden von Recht nach Links bewertet. Wenn kein anderes Attribut gesetzt ist, werden nur die Bedingungen geprüft, die das triggernde Device enthalten.

Wenn Du möchtest, dass etwas nicht triggert sondern nur geprüft wird, dann mit [?device:reading]
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Der Neuling

#4
Ok. dann werde ich die erste Zeile entsprechend umstellen und nächsten Sommer wieder ausprobieren.  :)
Vielen Dank nochmal an Dich bzw an alle die eine solch Engelsgeduld haben.

Nachtrag - so wie ich es mir jetzt vorstelle:
(([HM_63DDCB:brightness:avg7] > 25000 and [?HM_58F0BD:temperature:avg5] > 22) and [9:00 - 16:30] and [?du_Beschattung] eq 'ein')
(set Rollo_Eltern off-for-timer 19) ##1
DOELSEIF (([HM_63DDCB:brightness:avg7] < 3000 or [9:00 - 16:30]) and [?du_Beschattung] eq "ein")


Gruss
Andi