FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: moonsorrox am 28 Juli 2015, 13:39:07

Titel: DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 28 Juli 2015, 13:39:07
ich habe seit einiger Zeit meine Rollladensteuerung auf Beschattung stehen, die eigentlich fast genau so arbeitet wie die normale Steuerung.
Da ich echt lange nichts an meinen DOIFs verstellt oder eingestellt habe finde ich momentan nicht das folgende Problem.

Ich habe mich eigentlich an das Beispiel aus der commandref gehalten und habe dieses DOIF:
Code aus dem DEF:
([RolloSZmodus] eq "Beschattung" and ([Aussensensor_Terrasse:temperature] > 25 and [07:00-{sunset_abs()}])) (set RollladenSZ pct 25)
DOELSE (set RollladenSZ pct 75)


wenn ich jetzt mal die Temperatur verändere funktioniert das richtig und der Rollladen fährt in die Beschattungsposition und auch wieder auf meine eingestellten 75%
Verfahre ich aber den Rollladen von Hand mit einer Homematic Fernbedienung, bleibt er die gesamte Zeit so stehen, selbst am Abend fährt er nicht in die 75% Position...
Was übersehe ich hier..?

Das List:
Internals:
   CFGFN      ./FHEM/Obergeschoss.cfg
   DEF        ([RolloSZmodus] eq "Beschattung" and ([Aussensensor_Terrasse:temperature] > 25 and [07:00-{sunset_abs()}])) (set RollladenSZ pct 25)
DOELSE (set RollladenSZ pct 75)
   NAME       di_RollladenSZ_B
   NR         1313
   NTFY_ORDER 50-di_RollladenSZ_B
   STATE      initialized
   TYPE       DOIF
   Readings:
     2015-07-28 13:34:31   state           initialized
     2015-07-28 13:34:31   timer_1_c1      29.07.2015 07:00:00
     2015-07-28 13:34:31   timer_2_c1      28.07.2015 22:04:38
   Condition:
     0          InternalDoIf('RolloSZmodus','STATE','') eq "Beschattung" and (ReadingValDoIf('Aussensensor_Terrasse','temperature','') > 25 and DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,""))
   Days:
   Devices:
     0           RolloSZmodus Aussensensor_Terrasse
     all         RolloSZmodus Aussensensor_Terrasse
   Do:
     0          set RollladenSZ pct 25
     1          set RollladenSZ pct 75
   Helper:
     last_timer 2
     sleeptimer -1
   Internals:
     0           RolloSZmodus:STATE
     all         RolloSZmodus:STATE
   Itimer:
   Readings:
     0           Aussensensor_Terrasse:temperature
     all         Aussensensor_Terrasse:temperature
   Realtime:
     0          07:00:00
     1          22:04:38
   State:
   Time:
     0          07:00:00
     1          {sunset_abs()}
   Timecond:
     0          0
     1          0
   Timer:
     0          0
     1          0
   Timerfunc:
   Timers:
     0           0  1
Attributes:
   group      Rollläden
   wait       900:900

Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 28 Juli 2015, 15:33:58
Zitat von: moonsorrox am 28 Juli 2015, 13:39:07
ich habe seit einiger Zeit meine Rollladensteuerung auf Beschattung stehen, die eigentlich fast genau so arbeitet wie die normale Steuerung.
Da ich echt lange nichts an meinen DOIFs verstellt oder eingestellt habe finde ich momentan nicht das folgende Problem.

Ich habe mich eigentlich an das Beispiel aus der commandref gehalten und habe dieses DOIF:
Code aus dem DEF:
([RolloSZmodus] eq "Beschattung" and ([Aussensensor_Terrasse:temperature] > 25 and [07:00-{sunset_abs()}])) (set RollladenSZ pct 25)
DOELSE (set RollladenSZ pct 75)


wenn ich jetzt mal die Temperatur verändere funktioniert das richtig und der Rollladen fährt in die Beschattungsposition und auch wieder auf meine eingestellten 75%
Verfahre ich aber den Rollladen von Hand mit einer Homematic Fernbedienung, bleibt er die gesamte Zeit so stehen, selbst am Abend fährt er nicht in die 75% Position...
Was übersehe ich hier..?



Das Modul geht nur in den DOELSE-Fall, wenn es auch selbst den DOIF-Fall ausgeführt hat (also nur nach Zustandswechsel ohne do always).

Du könntest deine FB im Modul mit abfragen, so dass nicht deine FB, sondern nur das Modul den Rollladen bedient.

Alternativ könntest du deine zyklische Temperatur-Abfrage in ein separates DOIF-Modul auslagern z. B. mit den Zuständen warm/kalt und dann in deinem Modul den Zustand mit warm/kalt abfragen und do always setzen.

Gruß

Damian
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 28 Juli 2015, 15:42:17
Zitat von: Damian am 28 Juli 2015, 15:33:58
Du könntest deine FB im Modul mit abfragen, so dass nicht deine FB, sondern nur das Modul den Rollladen bedient.
das muss ich mir mal genau anschauen, ich habe da nichts mehr mit gemacht und dachte er erkennt das selbst sobald der Aktor einen anderen Wert hat... aber klar der ist ja nirgends mit drin :-\

Zitat von: Damian am 28 Juli 2015, 15:33:58
Alternativ könntest du deine zyklische Temperatur-Abfrage in ein separates DOIF-Modul auslagern z. B. mit den Zuständen warm/kalt und dann in deinem Modul den Zustand mit warm/kalt abfragen und do always setzen.
das erscheint mir erst einmal sehr kompliziert, denn welcher Wert ist denn dann warm und kalt, oder ist das einfacher als ich grad denke..? warm wäre dann alles über 25° und kalt alles unter 25°

ich muss mal schauen ob ich was dazu in der commandref finde... muss erst mal wieder ein wenig in die Materie DOIF rein kommen  ;)
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 28 Juli 2015, 15:57:02
Zitat von: moonsorrox am 28 Juli 2015, 15:42:17
das muss ich mir mal genau anschauen, ich habe da nichts mehr mit gemacht und dachte er erkennt das selbst sobald der Aktor einen anderen Wert hat... aber klar der ist ja nirgends mit drin :-\
das erscheint mir erst einmal sehr kompliziert, denn welcher Wert ist denn dann warm und kalt, oder ist das einfacher als ich grad denke..? warm wäre dann alles über 25° und kalt alles unter 25°

ich muss mal schauen ob ich was dazu in der commandref finde... muss erst mal wieder ein wenig in die Materie DOIF rein kommen  ;)

define di_warm DOIF ([Aussensensor_Terrasse:temperature] > 25)
attr di_warm cmdState warm|kalt

define di_beschattung DOIF ([RolloSZmodus] eq "Beschattung" and ([di_warm] eq "warm" and [07:00-{sunset_abs()}])) (set RollladenSZ pct 25)
DOELSE (set RollladenSZ pct 75)
attr di_beschattung do always


kompliziert ist relativ.

Gruß

Damian
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 29 Juli 2015, 01:07:04
vielen Dank... ich versuche es zu verstehen warum das jetzt geht ;)
die wait Zeiten muss ich aber beibehalten oder wird dies durch das Attribut do always erledigt..?
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 29 Juli 2015, 19:14:01
Zitat von: moonsorrox am 29 Juli 2015, 01:07:04
vielen Dank... ich versuche es zu verstehen warum das jetzt geht ;)
die wait Zeiten muss ich aber beibehalten oder wird dies durch das Attribut do always erledigt..?

ja, die waits musst du natürlich noch angeben. do always bedeutet nur, dass jedes mal geschaltet wird, auch wenn zuvor ein bestimmter Zustand schon mal geschaltet wurde, siehe Commandref zu DOIF.

Gruß

Damian
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 30 Juli 2015, 13:34:52
Danke dir Damian...  ;) nochmals von mir ein Super Modul, tolle Arbeit
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 04 August 2015, 12:58:13
ich habe jetzt da ja die Tage grad sehr warm sind die Beschattung geändert und gestern sind die Rollläden im WZ dann Abends doch nicht ganz runter gefahren.

Das funktioniert:
Die Rolläden öffnen richtig morgens und fahren dann auch am Tage bei überschreiten der festgelegten Temperatur in meinem DOIF di_Temperatur auch in die Beschattungsposition...

Was ich noch erreichen möchte, dass die Rollläden dann zu einer Zeit Nachmittags ich sage mal 17Uhr oder die Temperatur ist unter 27° zurück gegangen wieder hoch fahren und Abends, dann zu Sunset_abs wieder schließen. Das bekomme ich grad nicht gebacken, bisher sieht der Code so aus....

hier der Code aus dem DEF:
([RolloWZmodus] eq "Beschattung"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "08:45:00")}|06]))
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:00-{sunset_abs("CIVIL",-4800,"16:35","22:10")}]))
(set RollladenWZ 40)
DOELSE ([RolloWZmodus] eq "Beschattung")
(set RollladenWZ off)


Das ist das Temperatur DOIF:
define di_Temperatur DOIF ([Aussensensor_Terrasse:temperature] > 27)
attr di_Temperatur alias Temperatur Beschattung 27°
attr di_Temperatur cmdState warm|kalt


Hier noch das list:
Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([RolloWZmodus] eq "Beschattung"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "08:45:00")}|06]))
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:00-{sunset_abs("CIVIL",-4800,"16:35","22:10")}]))
(set RollladenWZ 40)
DOELSE ([RolloWZmodus] eq "Beschattung")
(set RollladenWZ off)


   NAME       di_RollladenWZ_B
   NR         365
   NTFY_ORDER 50-di_RollladenWZ_B
   STATE      initialized
   TYPE       DOIF
   Readings:
     2015-08-04 12:50:28   state           initialized
     2015-08-04 12:50:28   timer_1_c1      05.08.2015 07:15:00|12345
     2015-08-04 12:50:28   timer_2_c1      05.08.2015 07:30:00|06
     2015-08-04 12:50:28   timer_3_c2      05.08.2015 07:00:00
     2015-08-04 12:50:28   timer_4_c2      04.08.2015 20:31:08
   Condition:
     0          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (DOIF_time_once($hash->{timer}{0},$wday,"12345") or DOIF_time_once($hash->{timer}{1},$wday,"06"))
     1          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "warm" and DOIF_time($hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,""))
   Days:
     0          12345
     1          06
   Devices:
     0           RolloWZmodus
     1           RolloWZmodus di_Temperatur
     all         RolloWZmodus di_Temperatur
   Do:
     0          set RollladenWZ on
     1          set RollladenWZ 40
     2          [RolloWZmodus] eq "Beschattung"
   Helper:
     last_timer 4
     sleeptimer -1
   Internals:
     0           RolloWZmodus:STATE
     1           RolloWZmodus:STATE di_Temperatur:STATE
     all         RolloWZmodus:STATE di_Temperatur:STATE
   Itimer:
   Realtime:
     0          07:15:00
     1          07:30:00
     2          07:00:00
     3          20:31:08
   State:
   Time:
     0          {ReadingsVal("du_RolloZeit_hoch","state","08:15:00")}
     1          {ReadingsVal("du_RolloZeit_hoch_WoE","state","08:45:00")}
     2          07:00:00
     3          {sunset_abs("CIVIL",-4800,"16:35","22:10")}
   Timecond:
     0          0
     1          0
     2          1
     3          1
   Timer:
     0          0
     1          0
     2          0
     3          0
   Timerfunc:
   Timers:
     0           0  1
     1           2  3
Attributes:
   do         always
   group      Rollläden
   wait       900:900
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 04 August 2015, 19:21:56
Zitat von: moonsorrox am 04 August 2015, 12:58:13
ich habe jetzt da ja die Tage grad sehr warm sind die Beschattung geändert und gestern sind die Rollläden im WZ dann Abends doch nicht ganz runter gefahren.

Das funktioniert:
Die Rolläden öffnen richtig morgens und fahren dann auch am Tage bei überschreiten der festgelegten Temperatur in meinem DOIF di_Temperatur auch in die Beschattungsposition...

Was ich noch erreichen möchte, dass die Rollläden dann zu einer Zeit Nachmittags ich sage mal 17Uhr oder die Temperatur ist unter 27° zurück gegangen wieder hoch fahren und Abends, dann zu Sunset_abs wieder schließen. Das bekomme ich grad nicht gebacken, bisher sieht der Code so aus....

hier der Code aus dem DEF:
([RolloWZmodus] eq "Beschattung"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "08:45:00")}|06]))
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:00-{sunset_abs("CIVIL",-4800,"16:35","22:10")}]))
(set RollladenWZ 40)
DOELSE ([RolloWZmodus] eq "Beschattung")
(set RollladenWZ off)


Das ist das Temperatur DOIF:
define di_Temperatur DOIF ([Aussensensor_Terrasse:temperature] > 27)
attr di_Temperatur alias Temperatur Beschattung 27°
attr di_Temperatur cmdState warm|kalt


Hier noch das list:
Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([RolloWZmodus] eq "Beschattung"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "08:45:00")}|06]))
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:00-{sunset_abs("CIVIL",-4800,"16:35","22:10")}]))
(set RollladenWZ 40)
DOELSE ([RolloWZmodus] eq "Beschattung")
(set RollladenWZ off)


   NAME       di_RollladenWZ_B
   NR         365
   NTFY_ORDER 50-di_RollladenWZ_B
   STATE      initialized
   TYPE       DOIF
   Readings:
     2015-08-04 12:50:28   state           initialized
     2015-08-04 12:50:28   timer_1_c1      05.08.2015 07:15:00|12345
     2015-08-04 12:50:28   timer_2_c1      05.08.2015 07:30:00|06
     2015-08-04 12:50:28   timer_3_c2      05.08.2015 07:00:00
     2015-08-04 12:50:28   timer_4_c2      04.08.2015 20:31:08
   Condition:
     0          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (DOIF_time_once($hash->{timer}{0},$wday,"12345") or DOIF_time_once($hash->{timer}{1},$wday,"06"))
     1          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "warm" and DOIF_time($hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,""))
   Days:
     0          12345
     1          06
   Devices:
     0           RolloWZmodus
     1           RolloWZmodus di_Temperatur
     all         RolloWZmodus di_Temperatur
   Do:
     0          set RollladenWZ on
     1          set RollladenWZ 40
     2          [RolloWZmodus] eq "Beschattung"
   Helper:
     last_timer 4
     sleeptimer -1
   Internals:
     0           RolloWZmodus:STATE
     1           RolloWZmodus:STATE di_Temperatur:STATE
     all         RolloWZmodus:STATE di_Temperatur:STATE
   Itimer:
   Realtime:
     0          07:15:00
     1          07:30:00
     2          07:00:00
     3          20:31:08
   State:
   Time:
     0          {ReadingsVal("du_RolloZeit_hoch","state","08:15:00")}
     1          {ReadingsVal("du_RolloZeit_hoch_WoE","state","08:45:00")}
     2          07:00:00
     3          {sunset_abs("CIVIL",-4800,"16:35","22:10")}
   Timecond:
     0          0
     1          0
     2          1
     3          1
   Timer:
     0          0
     1          0
     2          0
     3          0
   Timerfunc:
   Timers:
     0           0  1
     1           2  3
Attributes:
   do         always
   group      Rollläden
   wait       900:900


Ein DOELSE-Fall hat keine Bedingung. Du hast aber welche. Entweder einen DOELSEIF-Fall  mit entsprechender Bedingung zum Runterfahren definieren oder DOELSE ohne Bedingung angeben (was bei mehreren Fällen immer kritisch zu sehen ist).

Gruß

Damian
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 04 August 2015, 19:39:11
ich hatte das versucht zwischenzeitlich so zu probieren...! nur ich denke das klappt nicht, da ja am im letzten DOELSEIF Fall keine Zeit vorhanden ist

aus dem DEF:
([RolloWZmodus] eq "Beschattung"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "08:45:00")}|06]))
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:00-{sunset_abs("CIVIL",-4800,"16:35","22:10")}]))
(set RollladenWZ 40)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [07:00-{sunset_abs("CIVIL",-4800,"16:00","22:10")}]))
(set RollladenWZ on) 
DOELSEIF ([RolloWZmodus] eq "Beschattung")
(set RollladenWZ off)


das was mir Probleme bereitet, dass er zwischenzeitlich wenn es wieder unter 27° geht den Rollladen hoch fährt und dann eben zum Abend ganz normal runter fährt zu Sunset
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 04 August 2015, 19:56:46
Zitat von: moonsorrox am 04 August 2015, 19:39:11
ich hatte das versucht zwischenzeitlich so zu probieren...! nur ich denke das klappt nicht, da ja am im letzten DOELSEIF Fall keine Zeit vorhanden ist

aus dem DEF:
([RolloWZmodus] eq "Beschattung"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "08:45:00")}|06]))
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:00-{sunset_abs("CIVIL",-4800,"16:35","22:10")}]))
(set RollladenWZ 40)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [07:00-{sunset_abs("CIVIL",-4800,"16:00","22:10")}]))
(set RollladenWZ on) 
DOELSEIF ([RolloWZmodus] eq "Beschattung")
(set RollladenWZ off)


das was mir Probleme bereitet, dass er zwischenzeitlich wenn es wieder unter 27° geht den Rollladen hoch fährt und dann eben zum Abend ganz normal runter fährt zu Sunset

ja, deswegen würde ich mit "and" die Zeit zum Runterfahren im letzten DOELSEIF-Fall angeben.

Gruß

Damian
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 04 August 2015, 23:06:04
so nun bin ich mal gespannt auf morgen, ob es noch ein Fehlerhaftes Fahren gibt - mit der Temperatur kann ich ja zur Not "spielen"

Heute Abend jedenfalls ist der Rollladen zur sonstigen (normalen) Sunset Zeit herunter gefahren...

mein list sieht jetzt so aus:
Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([RolloWZmodus] eq "Beschattung"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "08:45:00")}|06]))
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:00-{sunset_abs("CIVIL",-4800,"16:35","22:10")}]))
(set RollladenWZ 40)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [07:00-{sunset_abs("CIVIL",-1200,"16:35","22:10")}]))
(set RollladenWZ on)
DOELSE (set RollladenWZ off)


   NAME       di_RollladenWZ_B
   NR         365
   NTFY_ORDER 50-di_RollladenWZ_B
   STATE      initialized
   TYPE       DOIF
   Readings:
     2015-08-04 22:54:27   state           initialized
     2015-08-04 22:54:27   timer_1_c1      05.08.2015 07:15:00|12345
     2015-08-04 22:54:27   timer_2_c1      05.08.2015 07:30:00|06
     2015-08-04 22:54:27   timer_3_c2      05.08.2015 07:00:00
     2015-08-04 22:54:27   timer_4_c2      05.08.2015 20:29:06
     2015-08-04 22:54:27   timer_5_c3      05.08.2015 07:00:00
     2015-08-04 22:54:27   timer_6_c3      05.08.2015 21:29:06
   Condition:
     0          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (DOIF_time_once($hash->{timer}{0},$wday,"12345") or DOIF_time_once($hash->{timer}{1},$wday,"06"))
     1          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "warm" and DOIF_time($hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,""))
     2          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "kalt" and DOIF_time($hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,""))
   Days:
     0          12345
     1          06
   Devices:
     0           RolloWZmodus
     1           RolloWZmodus di_Temperatur
     2           RolloWZmodus di_Temperatur
     all         RolloWZmodus di_Temperatur
   Do:
     0          set RollladenWZ on
     1          set RollladenWZ 40
     2          set RollladenWZ on
     3          set RollladenWZ off
   Helper:
     last_timer 6
     sleeptimer -1
   Internals:
     0           RolloWZmodus:STATE
     1           RolloWZmodus:STATE di_Temperatur:STATE
     2           RolloWZmodus:STATE di_Temperatur:STATE
     all         RolloWZmodus:STATE di_Temperatur:STATE
   Itimer:
   Realtime:
     0          07:15:00
     1          07:30:00
     2          07:00:00
     3          20:29:06
     4          07:00:00
     5          21:29:06
   State:
   Time:
     0          {ReadingsVal("du_RolloZeit_hoch","state","08:15:00")}
     1          {ReadingsVal("du_RolloZeit_hoch_WoE","state","08:45:00")}
     2          07:00:00
     3          {sunset_abs("CIVIL",-4800,"16:35","22:10")}
     4          07:00:00
     5          {sunset_abs("CIVIL",-1200,"16:35","22:10")}
   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
   Timerfunc:
   Timers:
     0           0  1
     1           2  3
     2           4  5
Attributes:
   do         always
   group      Rollläden
   wait       900:900
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 05 August 2015, 09:02:17
Zitat von: moonsorrox am 04 August 2015, 23:06:04
so nun bin ich mal gespannt auf morgen, ob es noch ein Fehlerhaftes Fahren gibt - mit der Temperatur kann ich ja zur Not "spielen"

Heute Abend jedenfalls ist der Rollladen zur sonstigen (normalen) Sunset Zeit herunter gefahren...

mein list sieht jetzt so aus:
Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([RolloWZmodus] eq "Beschattung"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "08:45:00")}|06]))
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:00-{sunset_abs("CIVIL",-4800,"16:35","22:10")}]))
(set RollladenWZ 40)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [07:00-{sunset_abs("CIVIL",-1200,"16:35","22:10")}]))
(set RollladenWZ on)
DOELSE (set RollladenWZ off)


   NAME       di_RollladenWZ_B
   NR         365
   NTFY_ORDER 50-di_RollladenWZ_B
   STATE      initialized
   TYPE       DOIF
   Readings:
     2015-08-04 22:54:27   state           initialized
     2015-08-04 22:54:27   timer_1_c1      05.08.2015 07:15:00|12345
     2015-08-04 22:54:27   timer_2_c1      05.08.2015 07:30:00|06
     2015-08-04 22:54:27   timer_3_c2      05.08.2015 07:00:00
     2015-08-04 22:54:27   timer_4_c2      05.08.2015 20:29:06
     2015-08-04 22:54:27   timer_5_c3      05.08.2015 07:00:00
     2015-08-04 22:54:27   timer_6_c3      05.08.2015 21:29:06
   Condition:
     0          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (DOIF_time_once($hash->{timer}{0},$wday,"12345") or DOIF_time_once($hash->{timer}{1},$wday,"06"))
     1          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "warm" and DOIF_time($hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,""))
     2          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "kalt" and DOIF_time($hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,""))
   Days:
     0          12345
     1          06
   Devices:
     0           RolloWZmodus
     1           RolloWZmodus di_Temperatur
     2           RolloWZmodus di_Temperatur
     all         RolloWZmodus di_Temperatur
   Do:
     0          set RollladenWZ on
     1          set RollladenWZ 40
     2          set RollladenWZ on
     3          set RollladenWZ off
   Helper:
     last_timer 6
     sleeptimer -1
   Internals:
     0           RolloWZmodus:STATE
     1           RolloWZmodus:STATE di_Temperatur:STATE
     2           RolloWZmodus:STATE di_Temperatur:STATE
     all         RolloWZmodus:STATE di_Temperatur:STATE
   Itimer:
   Realtime:
     0          07:15:00
     1          07:30:00
     2          07:00:00
     3          20:29:06
     4          07:00:00
     5          21:29:06
   State:
   Time:
     0          {ReadingsVal("du_RolloZeit_hoch","state","08:15:00")}
     1          {ReadingsVal("du_RolloZeit_hoch_WoE","state","08:45:00")}
     2          07:00:00
     3          {sunset_abs("CIVIL",-4800,"16:35","22:10")}
     4          07:00:00
     5          {sunset_abs("CIVIL",-1200,"16:35","22:10")}
   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
   Timerfunc:
   Timers:
     0           0  1
     1           2  3
     2           4  5
Attributes:
   do         always
   group      Rollläden
   wait       900:900


Dir ist bewusst, dass wenn du deinen Modus RolloWZmodus umstellst (ungleich Beschattung), deine Rollläden gleichzeitig aufgrund des DOELSE-Falls herunterfahren.

Wie gesagt DOELSE-Fall bei mehreren DOELSEIF-Fällen ist kritisch zu sehen, denn du musst alle möglichen Trigger bedenken, die zu diesem Fall führen können, daher besser DOELESIF mit Zeitangabe.

Gruß

Damian
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 05 August 2015, 11:38:28
Zitat von: Damian am 05 August 2015, 09:02:17
Dir ist bewusst, dass wenn du deinen Modus RolloWZmodus umstellst (ungleich Beschattung), deine Rollläden gleichzeitig aufgrund des DOELSE-Falls herunterfahren.

Wie gesagt DOELSE-Fall bei mehreren DOELSEIF-Fällen ist kritisch zu sehen, denn du musst alle möglichen Trigger bedenken, die zu diesem Fall führen können, daher besser DOELESIF mit Zeitangabe.

Gruß

Damian
Wie Recht du hast.... das hat nicht geklappt heute Morgen hoch gefahren und wohl gleich wieder runter...
Habe noch nicht im log geschaut, beantworte grad nur mit dem iPad.... Da muss ich nochmal ran und umbauen..!

@Damian
So ich hoffe ich habe keine Denkfehler drin, vllt. schaust du mal über das List

- ich möchte ja von morgens 7.15 Uhr an die Abfrage haben ob es warm ist, dann sollen die Rollläden in Beschattung 40% fahren
- das ganze soll bis 15:45 (evtl. passe ich das an) passieren, da die Sonne dann rum ist
- ab 15:45 soll er schauen wenn die Temperatur dann kalt ist soll er die Rollläden hoch fahren

Abends dann ganz normal wieder runter nach Sunset

Hier mal das list:
Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([RolloWZmodus] eq "Beschattung"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "08:45:00")}|06]))
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:15-15:45]))
(set RollladenWZ 40)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [15:45-{sunset_abs("CIVIL",-1240,"16:35","22:20")}]))
(set RollladenWZ on)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and [{sunset_abs("CIVIL",-1200,"16:35","22:20")}])
(set RollladenWZ off)


   NAME       di_RollladenWZ_B
   NR         365
   NTFY_ORDER 50-di_RollladenWZ_B
   STATE      initialized
   TYPE       DOIF
   Readings:
     2015-08-05 15:58:21   state           initialized
     2015-08-05 15:58:21   timer_1_c1      06.08.2015 07:15:00|12345
     2015-08-05 15:58:21   timer_2_c1      06.08.2015 07:30:00|06
     2015-08-05 15:58:22   timer_3_c2      06.08.2015 07:15:00
     2015-08-05 15:58:22   timer_4_c2      06.08.2015 15:45:00
     2015-08-05 15:58:22   timer_5_c3      06.08.2015 15:45:00
     2015-08-05 15:58:22   timer_6_c3      05.08.2015 21:28:26
     2015-08-05 15:58:22   timer_7_c4      05.08.2015 21:29:06
   Condition:
     0          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (DOIF_time_once($hash->{timer}{0},$wday,"12345") or DOIF_time_once($hash->{timer}{1},$wday,"06"))
     1          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "warm" and DOIF_time($hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,""))
     2          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "kalt" and DOIF_time($hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,""))
     3          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and DOIF_time_once($hash->{timer}{6},$wday,"")
   Days:
     0          12345
     1          06
   Devices:
     0           RolloWZmodus
     1           RolloWZmodus di_Temperatur
     2           RolloWZmodus di_Temperatur
     3           RolloWZmodus
     all         RolloWZmodus di_Temperatur
   Do:
     0          set RollladenWZ on
     1          set RollladenWZ 40
     2          set RollladenWZ on
     3          set RollladenWZ off
   Helper:
     last_timer 7
     sleeptimer -1
   Internals:
     0           RolloWZmodus:STATE
     1           RolloWZmodus:STATE di_Temperatur:STATE
     2           RolloWZmodus:STATE di_Temperatur:STATE
     3           RolloWZmodus:STATE
     all         RolloWZmodus:STATE di_Temperatur:STATE
   Itimer:
   Realtime:
     0          07:15:00
     1          07:30:00
     2          07:15:00
     3          15:45:00
     4          15:45:00
     5          21:28:26
     6          21:29:06
   State:
   Time:
     0          {ReadingsVal("du_RolloZeit_hoch","state","08:15:00")}
     1          {ReadingsVal("du_RolloZeit_hoch_WoE","state","08:45:00")}
     2          07:15:00
     3          15:45:00
     4          15:45:00
     5          {sunset_abs("CIVIL",-1240,"16:35","22:20")}
     6          {sunset_abs("CIVIL",-1200,"16:35","22:20")}
   Timecond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          3
   Timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
   Timerfunc:
   Timers:
     0           0  1
     1           2  3
     2           4  5
     3           6
Attributes:
   do         always
   group      Rollläden
   wait       900:900

Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 05 August 2015, 19:48:53
Zitat von: moonsorrox am 05 August 2015, 11:38:28
Wie Recht du hast.... das hat nicht geklappt heute Morgen hoch gefahren und wohl gleich wieder runter...
Habe noch nicht im log geschaut, beantworte grad nur mit dem iPad.... Da muss ich nochmal ran und umbauen..!

@Damian
So ich hoffe ich habe keine Denkfehler drin, vllt. schaust du mal über das List

- ich möchte ja von morgens 7.15 Uhr an die Abfrage haben ob es warm ist, dann sollen die Rollläden in Beschattung 40% fahren
- das ganze soll bis 15:45 (evtl. passe ich das an) passieren, da die Sonne dann rum ist
- ab 15:45 soll er schauen wenn die Temperatur dann kalt ist soll er die Rollläden hoch fahren

Abends dann ganz normal wieder runter nach Sunset

Hier mal das list:
Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([RolloWZmodus] eq "Beschattung"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "08:45:00")}|06]))
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:15-15:45]))
(set RollladenWZ 40)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [15:45-{sunset_abs("CIVIL",-1240,"16:35","22:20")}]))
(set RollladenWZ on)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and [{sunset_abs("CIVIL",-1200,"16:35","22:20")}])
(set RollladenWZ off)


Du kannst statt [{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] auch direkt [[du_RolloZeit_hoch]|12345] oder noch einfacher [[du_RolloZeit_hoch]|8] angeben, das hat den Vorteil, dass bei Änderung des Dummys die Zeit im Modul sofort gesetzt wird und nicht erst am nächsten Tag, wenn die alte Zeit getriggert hat. Ist aber bei dir nicht so wichtig, weil Intervalle z. B. [07:15-15:45] bei dir nicht zu triggern brauchen, sie dienen bei dir nur der Abfrage, das kannst du mit Fragezeichen beeinflussen, also [?07:15-15:45]. Genaueres kannst du ja in der Commandref nachlesen.

Gruß

Damian


[/code]
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 06 August 2015, 01:26:42
Zitat von: Damian am 05 August 2015, 19:48:53
Du kannst statt [{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] auch direkt [[du_RolloZeit_hoch]|12345] oder noch einfacher [[du_RolloZeit_hoch]|8] angeben, das hat den Vorteil, dass bei Änderung des Dummys die Zeit im Modul sofort gesetzt wird und nicht erst am nächsten Tag, wenn die alte Zeit getriggert hat. Ist aber bei dir nicht so wichtig, weil Intervalle z. B. [07:15-15:45] bei dir nicht zu triggern brauchen, sie dienen bei dir nur der Abfrage, das kannst du mit Fragezeichen beeinflussen, also [?07:15-15:45].
Da hast du natürlich Recht geht einfacher... Ok das habe ich mal angepasst, aber das funktionierte ja am Morgen und deshalb habe ich mich damit nie beschäftigt...

Zitat von: Damian am 05 August 2015, 19:48:53
Genaueres kannst du ja in der Commandref nachlesen.
die habe ich immer offen und schaue, aber bei so komplexen DOIFs wie man sie manchmal hat ist das doch nicht so einfach...!

Mal schauen was es morgen früh macht und auch am Tage, wenn es warm wird und eben besonders Abends... Heute Abend waren sie jedenfalls unten.

EDIT// bis jetzt sieht es mit dem unten angefügten list gut...
- Rollläden heute morgen zur eingestellten Zeit hoch gefahren
- Temperatur von 27° erreicht Rollläden in Beschattungsposition gefahren

mal schauen wie es heute Abend aussieht...

@Damian
eine Frage noch wo müsste ich das einfügen, wenn ich zu einer bestimmten Zeit (z.B. 19:30 mit Dummy zum Zeit einstellen) auch wenn di_Temperatur noch warm anzeigt die Rollläden trotzdem hoch fahren möchte..?

list:
Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([RolloWZmodus] eq "Beschattung" and [[du_RolloZeit_hoch]|8] or [[du_RolloZeit_hoch_WoE]|7])
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [?07:15-15:45]))
(set RollladenWZ 40)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [15:45-{sunset_abs("CIVIL",-1240,"16:35","22:20")}]))
(set RollladenWZ on)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and [{sunset_abs("CIVIL",-1200,"16:35","22:20")}])
(set RollladenWZ off)


   NAME       di_RollladenWZ_B
   NR         365
   NTFY_ORDER 50-di_RollladenWZ_B
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2015-08-06 11:22:08   cmd_event       di_Temperatur
     2015-08-06 11:22:08   cmd_nr          2
     2015-08-06 11:07:08   e_di_Temperatur_STATE warm
     2015-08-06 11:22:08   state           cmd_2
     2015-08-06 07:15:00   timer_1_c1      07.08.2015 07:15:00|8
     2015-08-06 07:30:00   timer_2_c1      07.08.2015 07:30:00|7
     2015-08-06 07:15:00   timer_3_c2      07.08.2015 07:15:00
     2015-08-06 01:29:23   timer_4_c2      06.08.2015 15:45:00
     2015-08-06 01:29:23   timer_5_c3      06.08.2015 15:45:00
     2015-08-06 01:29:23   timer_6_c3      06.08.2015 21:26:22
     2015-08-06 01:29:23   timer_7_c4      06.08.2015 21:27:02
     2015-08-06 11:22:08   wait_timer      no timer
   Condition:
     0          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and DOIF_time_once($hash->{timer}{0},$wday,"8") or DOIF_time_once($hash->{timer}{1},$wday,"7")
     1          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "warm" and DOIF_time($hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,""))
     2          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "kalt" and DOIF_time($hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,""))
     3          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and DOIF_time_once($hash->{timer}{6},$wday,"")
   Days:
     0          8
     1          7
   Devices:
     0           RolloWZmodus
     1           RolloWZmodus di_Temperatur
     2           RolloWZmodus di_Temperatur
     3           RolloWZmodus
     all         RolloWZmodus di_Temperatur
   Do:
     0          set RollladenWZ on
     1          set RollladenWZ 40
     2          set RollladenWZ on
     3          set RollladenWZ off
   Helper:
     last_timer 7
     sleepdevice di_Temperatur
     sleeptimer -1
   Internals:
     0           RolloWZmodus:STATE
     1           RolloWZmodus:STATE di_Temperatur:STATE
     2           RolloWZmodus:STATE di_Temperatur:STATE
     3           RolloWZmodus:STATE
     all         RolloWZmodus:STATE di_Temperatur:STATE
   Itimer:
     all         du_RolloZeit_hoch du_RolloZeit_hoch_WoE
   Readings:
   Realtime:
     0          07:15:00
     1          07:30:00
     2          07:15:00
     3          15:45:00
     4          15:45:00
     5          21:26:22
     6          21:27:02
   State:
   Time:
     0          [du_RolloZeit_hoch]
     1          [du_RolloZeit_hoch_WoE]
     2          07:15:00
     3          15:45:00
     4          15:45:00
     5          {sunset_abs("CIVIL",-1240,"16:35","22:20")}
     6          {sunset_abs("CIVIL",-1200,"16:35","22:20")}
   Timecond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          3
   Timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
   Timerfunc:
   Timers:
     0           0  1
     2           4  5
     3           6
   Trigger:
Attributes:
   do         always
   group      Rollläden
   wait       900:900



Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 07 August 2015, 01:32:33
ich glaube ich habe das jetzt wohl im Griff, dass Dummy für die zusätzliche Zeit habe ich auch mal eingefügt...! Ist aber noch nicht getestet...

code aus dem DEF:
([RolloWZmodus] eq "Beschattung" and [[du_RolloZeit_hoch]|8] or [[du_RolloZeit_hoch_WoE]|7])
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [?07:15-15:45]))
(set RollladenWZ 40)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [15:45-{sunset_abs("CIVIL",-1240,"16:35","22:20")}] or [[du_RolloZeit_hoch_B]|78]))
(set RollladenWZ on) 
DOELSEIF ([RolloWZmodus] eq "Beschattung" and [{sunset_abs("CIVIL",-1200,"16:35","22:20")}])
(set RollladenWZ off)


List jetzt:
Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([RolloWZmodus] eq "Beschattung" and [[du_RolloZeit_hoch]|8] or [[du_RolloZeit_hoch_WoE]|7])
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [?07:15-15:45]))
(set RollladenWZ 40)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [15:45-{sunset_abs("CIVIL",-1240,"16:35","22:20")}] or [[du_RolloZeit_hoch_B]|78]))
(set RollladenWZ on)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and [{sunset_abs("CIVIL",-1200,"16:35","22:20")}])
(set RollladenWZ off)


   NAME       di_RollladenWZ_B
   NR         376
   NTFY_ORDER 50-di_RollladenWZ_B
   STATE      initialized
   TYPE       DOIF
   Readings:
     2015-08-07 01:30:12   state           initialized
     2015-08-07 01:30:12   timer_1_c1      07.08.2015 07:15:00|8
     2015-08-07 01:30:12   timer_2_c1      07.08.2015 07:30:00|7
     2015-08-07 01:30:12   timer_3_c2      07.08.2015 07:15:00
     2015-08-07 01:30:12   timer_4_c2      07.08.2015 15:45:00
     2015-08-07 01:30:12   timer_5_c3      07.08.2015 15:45:00
     2015-08-07 01:30:12   timer_6_c3      07.08.2015 21:24:16
     2015-08-07 01:30:13   timer_7_c3      07.08.2015 19:25:00|78
     2015-08-07 01:30:13   timer_8_c4      07.08.2015 21:24:56
   Condition:
     0          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and DOIF_time_once($hash->{timer}{0},$wday,"8") or DOIF_time_once($hash->{timer}{1},$wday,"7")
     1          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "warm" and DOIF_time($hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,""))
     2          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "kalt" and DOIF_time($hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"") or DOIF_time_once($hash->{timer}{6},$wday,"78"))
     3          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and DOIF_time_once($hash->{timer}{7},$wday,"")
   Days:
     0          8
     1          7
     6          78
   Devices:
     0           RolloWZmodus
     1           RolloWZmodus di_Temperatur
     2           RolloWZmodus di_Temperatur
     3           RolloWZmodus
     all         RolloWZmodus di_Temperatur
   Do:
     0          set RollladenWZ on
     1          set RollladenWZ 40
     2          set RollladenWZ on
     3          set RollladenWZ off
   Helper:
     last_timer 8
     sleeptimer -1
   Internals:
     0           RolloWZmodus:STATE
     1           RolloWZmodus:STATE di_Temperatur:STATE
     2           RolloWZmodus:STATE di_Temperatur:STATE
     3           RolloWZmodus:STATE
     all         RolloWZmodus:STATE di_Temperatur:STATE
   Itimer:
     all         du_RolloZeit_hoch du_RolloZeit_hoch_WoE du_RolloZeit_hoch_B
   Realtime:
     0          07:15:00
     1          07:30:00
     2          07:15:00
     3          15:45:00
     4          15:45:00
     5          21:24:16
     6          19:25:00
     7          21:24:56
   State:
   Time:
     0          [du_RolloZeit_hoch]
     1          [du_RolloZeit_hoch_WoE]
     2          07:15:00
     3          15:45:00
     4          15:45:00
     5          {sunset_abs("CIVIL",-1240,"16:35","22:20")}
     6          [du_RolloZeit_hoch_B]
     7          {sunset_abs("CIVIL",-1200,"16:35","22:20")}
   Timecond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          2
     7          3
   Timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   Timerfunc:
   Timers:
     0           0  1
     2           4  5  6
     3           7
Attributes:
   do         always
   group      Rollläden
   wait       900:900
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: kvo1 am 07 August 2015, 02:04:39
Hallo moonsorrox,

ich trag mich hier mal vorerst nur ein, kann eventuell ganz gut für meine WG-Beschaltung gebrauchen.....

Danke
klaus  ;)
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 07 August 2015, 14:07:19
@Damian

leider ist der Rollladen heute nicht in die Beschattung gefahren, obwohl das di_Temperatur warm anzeigt..!
Liegt das evtl. an dem Fragezeichen das er nicht getriggert hat..? Beschattung ist bei mir (set RollladenWZ 40)

Das letzte list ist noch aktuell.
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 07 August 2015, 16:21:46
Zitat von: moonsorrox am 07 August 2015, 14:07:19
@Damian

leider ist der Rollladen heute nicht in die Beschattung gefahren, obwohl das di_Temperatur warm anzeigt..!
Liegt das evtl. an dem Fragezeichen das er nicht getriggert hat..? Beschattung ist bei mir (set RollladenWZ 40)

Das letzte list ist noch aktuell.

Ja. Wenn der Rollladen Punkt 07:15 auf 40 fahren soll, wenn es warm ist, dann darf man kein Fragezeichen angeben, weil dann ja um 07:15 Uhr nicht getriggert wird.

Gruß

Damian
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 09 August 2015, 18:46:37
OK das habe ich also wieder geändert ohne "?"

mich wundert nur warum er heute die Beschattung um 17:23 aufgehoben hat
2015.08.09 17:23:39 3: CUL_HM set RollladenWZ on

Die Zeit ist ja OK soweit, aber wenn ich nichts finden kann was dafür verantwortlich ist, irritiert mich das..!  :(
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 09 August 2015, 19:49:39
Zitat von: moonsorrox am 09 August 2015, 18:46:37
OK das habe ich also wieder geändert ohne "?"

mich wundert nur warum er heute die Beschattung um 17:23 aufgehoben hat
2015.08.09 17:23:39 3: CUL_HM set RollladenWZ on

Die Zeit ist ja OK soweit, aber wenn ich nichts finden kann was dafür verantwortlich ist, irritiert mich das..!  :(

Wie sieht denn deine aktuelle Definition aus?

Gruß

Damian
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 09 August 2015, 19:51:24
hier mal mein list:
Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([RolloWZmodus] eq "Beschattung" and [[du_RolloZeit_hoch]|8] or [[du_RolloZeit_hoch_WoE]|7])
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:15-15:45]))
(set RollladenWZ 40)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [15:45-{sunset_abs("CIVIL",-1240,"16:35","22:20")}] or [[du_RolloZeit_hoch_B]|78]))
(set RollladenWZ on)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and [{sunset_abs("CIVIL",-1200,"16:35","22:20")}])
(set RollladenWZ off)


   NAME       di_RollladenWZ_B
   NR         388
   NTFY_ORDER 50-di_RollladenWZ_B
   STATE      cmd_3
   TYPE       DOIF
   Readings:
     2015-08-09 17:48:57   cmd_event       di_Temperatur
     2015-08-09 17:48:57   cmd_nr          3
     2015-08-09 17:48:57   e_di_Temperatur_STATE kalt
     2015-08-09 17:48:57   state           cmd_3
     2015-08-09 13:14:53   timer_1_c1      10.08.2015 07:15:00|8
     2015-08-09 13:14:53   timer_2_c1      10.08.2015 07:30:00|7
     2015-08-09 13:14:53   timer_3_c2      10.08.2015 07:15:00
     2015-08-09 15:45:00   timer_4_c2      10.08.2015 15:45:00
     2015-08-09 15:45:00   timer_5_c3      10.08.2015 15:45:00
     2015-08-09 13:14:53   timer_6_c3      09.08.2015 21:20:02
     2015-08-09 13:14:53   timer_7_c3      09.08.2015 19:25:00|78
     2015-08-09 13:14:53   timer_8_c4      09.08.2015 21:20:42
     2015-08-09 14:25:16   wait_timer      no timer
   Condition:
     0          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and DOIF_time_once($hash->{timer}{0},$wday,"8") or DOIF_time_once($hash->{timer}{1},$wday,"7")
     1          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "warm" and DOIF_time($hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,""))
     2          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "kalt" and DOIF_time($hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"") or DOIF_time_once($hash->{timer}{6},$wday,"78"))
     3          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and DOIF_time_once($hash->{timer}{7},$wday,"")
   Days:
     0          8
     1          7
     6          78
   Devices:
     0           RolloWZmodus
     1           RolloWZmodus di_Temperatur
     2           RolloWZmodus di_Temperatur
     3           RolloWZmodus
     all         RolloWZmodus di_Temperatur
   Do:
     0          set RollladenWZ on
     1          set RollladenWZ 40
     2          set RollladenWZ on
     3          set RollladenWZ off
   Helper:
     last_timer 8
     sleepdevice di_Temperatur
     sleeptimer -1
   Internals:
     0           RolloWZmodus:STATE
     1           RolloWZmodus:STATE di_Temperatur:STATE
     2           RolloWZmodus:STATE di_Temperatur:STATE
     3           RolloWZmodus:STATE
     all         RolloWZmodus:STATE di_Temperatur:STATE
   Itimer:
     all         du_RolloZeit_hoch du_RolloZeit_hoch_WoE du_RolloZeit_hoch_B
   Readings:
   Realtime:
     0          07:15:00
     1          07:30:00
     2          07:15:00
     3          15:45:00
     4          15:45:00
     5          21:20:02
     6          19:25:00
     7          21:20:42
   State:
   Time:
     0          [du_RolloZeit_hoch]
     1          [du_RolloZeit_hoch_WoE]
     2          07:15:00
     3          15:45:00
     4          15:45:00
     5          {sunset_abs("CIVIL",-1240,"16:35","22:20")}
     6          [du_RolloZeit_hoch_B]
     7          {sunset_abs("CIVIL",-1200,"16:35","22:20")}
   Timecond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          2
     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  6
     3           7
   Trigger:
Attributes:
   do         always
   group      Rollläden
   wait       900:900
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 09 August 2015, 20:01:36
Unabhängig davon, ob mit oder ohne Fragezeichen:

Um 17:48 wurde es bei dir kalt und dann hat deine 3. Bedingung: set RollladenWZ on zugeschlagen.

Gruß

Damian
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 09 August 2015, 20:07:41
Zitat von: Damian am 09 August 2015, 20:01:36
Unabhängig davon, ob mit oder ohne Fragezeichen:

Um 17:48 wurde es bei dir kalt und dann hat deine 3. Bedingung: set RollladenWZ on zugeschlagen.

Gruß

Damian
das hatte ich im list auch gesehen, aber die tatsächliche Zeit war 17:23 als die Rollläden fuhren, da war es noch nicht kalt..
Deshalb verstehe ich das ja nicht...! Ich will auch nicht weiter nerven, will es nur kapieren...!  ;)
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 09 August 2015, 20:41:53
Zitat von: moonsorrox am 09 August 2015, 20:07:41
das hatte ich im list auch gesehen, aber die tatsächliche Zeit war 17:23 als die Rollläden fuhren, da war es noch nicht kalt..
Deshalb verstehe ich das ja nicht...! Ich will auch nicht weiter nerven, will es nur kapieren...!  ;)

Ich kann aufgrund des letzten Lists zum Schalten um 17:23 nichts sagen. Wahrscheinlich war zu diesem Zeitpunkt zwischendurch der Zustand "kalt" gewesen.

Du kannst bei dem warm/kalt-DOIF ein wait von paar Minuten einbauen, um Schwankungen der Temperatur um die Temperatur-Schwelle zwischen warm und kalt auszugleichen. Oder eine Hysterese von einem Grad einbauen: warm mit über 27-Grad und kalt unter 26 definieren. In beiden Fällen würdest du das kurzfristige Schalten des warm/kalt-Zustands unterbinden.



Gruß

Damian





Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 10 August 2015, 00:23:07
Gut dann mache ich das mal mit wait 120:120 im DOIF für meine Temperatur, wobei ich dachte das dieses durch die wait Zeit 900:900 im DOIF für die Beschattung erreicht wird...

Tja da muss man erst einmal alles durchspielen und dann durch denken  :D
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 14 August 2015, 14:41:16
@Damian

ich habe nochmal eine Frage zu meinem DOIF, also es funktioniert nun so wie ich es mir vorgestellt habe...!
1. es arbeitet mit Temperatur
2. mit Helligkeit und zusätzlich
3. mit Eingabe einer Zeit wann sie spätestens hoch fahren sollen, nach der Beschattungsphase

was aber ab und an unregelmäßig passiert das das DOIF nachtriggert - vermutlich wenn irgend etwas eintritt was als Bedingung vorliegt, da der Rollladen aber ohnehin schon oben ist höre ich eben nur ein klackern der Motore/Endschalter (dadurch habe ich es auch gemerkt).
Das macht er oft gegen 17Uhr manchmal auch mehrmals. bisher stört mich das auch nicht weil weiter oben wie er ist kann er nicht fahren...!  ;)

Nun meine Frage kann man das im DOIF unterbinden, so in der Art - ich bin ja jetzt oben, weiter brauche ich nicht mehr hoch fahren - so als Abfrage... er weiß ja das er bei 100% also "on" ist. Geht das irgendwie.
Ich hoffe ich habe mich halbwegs ausgedrückt und hänge aber mal das list an...

Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([RolloWZmodus] eq "Beschattung" and [[du_RolloZeit_hoch]|8] or [[du_RolloZeit_hoch_WoE]|7])
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:15-15:45] or [di_Helligkeit] eq "hell"))
(set RollladenWZ 50)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [15:45-{sunset_abs("CIVIL",-1240,"15:46","19:20")}] or [di_Helligkeit] eq "dunkel" or [[du_RolloZeitWZ_hoch_B]|78]))
(set RollladenWZ on)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and [{sunset_abs("CIVIL",-1200,"16:35","22:20")}])
(set RollladenWZ off)


   NAME       di_RollladenWZ_B
   NR         392
   NTFY_ORDER 50-di_RollladenWZ_B
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2015-08-14 14:11:52   cmd_event       di_Helligkeit
     2015-08-14 14:11:52   cmd_nr          2
     2015-08-14 13:58:52   e_di_Helligkeit_STATE hell
     2015-08-14 11:31:34   e_di_Temperatur_STATE warm
     2015-08-14 14:11:52   state           cmd_2
     2015-08-14 07:15:00   timer_1_c1      15.08.2015 07:15:00|8
     2015-08-14 07:30:00   timer_2_c1      15.08.2015 07:30:00|7
     2015-08-14 07:15:00   timer_3_c2      15.08.2015 07:15:00
     2015-08-14 00:48:56   timer_4_c2      14.08.2015 15:45:00
     2015-08-14 00:48:56   timer_5_c3      14.08.2015 15:45:00
     2015-08-14 00:48:56   timer_6_c3      14.08.2015 19:19:59
     2015-08-14 00:48:56   timer_7_c3      14.08.2015 17:15:00|78
     2015-08-14 00:48:56   timer_8_c4      14.08.2015 21:09:44
     2015-08-14 14:11:52   wait_timer      no timer
   Condition:
     0          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and DOIF_time_once($hash->{timer}{0},$wday,"8") or DOIF_time_once($hash->{timer}{1},$wday,"7")
     1          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "warm" and DOIF_time($hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"") or InternalDoIf('di_Helligkeit','STATE','') eq "hell")
     2          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "kalt" and DOIF_time($hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"") or InternalDoIf('di_Helligkeit','STATE','') eq "dunkel" or DOIF_time_once($hash->{timer}{6},$wday,"78"))
     3          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and DOIF_time_once($hash->{timer}{7},$wday,"")
   Days:
     0          8
     1          7
     6          78
   Devices:
     0           RolloWZmodus
     1           RolloWZmodus di_Temperatur di_Helligkeit
     2           RolloWZmodus di_Temperatur di_Helligkeit
     3           RolloWZmodus
     all         RolloWZmodus di_Temperatur di_Helligkeit
   Do:
     0          set RollladenWZ on
     1          set RollladenWZ 50
     2          set RollladenWZ on
     3          set RollladenWZ off
   Helper:
     last_timer 8
     sleepdevice di_Helligkeit
     sleeptimer -1
   Internals:
     0           RolloWZmodus:STATE
     1           RolloWZmodus:STATE di_Temperatur:STATE di_Helligkeit:STATE
     2           RolloWZmodus:STATE di_Temperatur:STATE di_Helligkeit:STATE
     3           RolloWZmodus:STATE
     all         RolloWZmodus:STATE di_Temperatur:STATE di_Helligkeit:STATE
   Itimer:
     all         du_RolloZeit_hoch du_RolloZeit_hoch_WoE du_RolloZeitWZ_hoch_B
   Readings:
   Realtime:
     0          07:15:00
     1          07:30:00
     2          07:15:00
     3          15:45:00
     4          15:45:00
     5          19:19:59
     6          17:15:00
     7          21:09:44
   State:
   Time:
     0          [du_RolloZeit_hoch]
     1          [du_RolloZeit_hoch_WoE]
     2          07:15:00
     3          15:45:00
     4          15:45:00
     5          {sunset_abs("CIVIL",-1240,"15:46","19:20")}
     6          [du_RolloZeitWZ_hoch_B]
     7          {sunset_abs("CIVIL",-1200,"16:35","22:20")}
   Timecond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          2
     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  6
     3           7
   Trigger:
Attributes:
   do         always
   group      Rollläden
   wait       900:900


hier nun mal die (zusätzlichen) Triggerungen dazu

wobei die also um 15:45 Uhr OK ist weil das erste mal und so auch im DOIF drin

2015.08.14 15:45:02 3: CUL_HM set RollladenSZ on
2015.08.14 15:45:02 3: CUL_HM set RollladenWZ on

dann kommen diese dazu:

2015.08.14 17:15:00 3: CUL_HM set RollladenWZ on
2015.08.14 17:11:03 3: CUL_HM set RollladenSZ on
2015.08.14 16:56:01 3: CUL_HM set RollladenWZ on
2015.08.14 16:53:38 3: CUL_HM set RollladenWZ on
2015.08.14 16:51:38 3: CUL_HM set RollladenWZ on
2015.08.14 16:47:58 3: CUL_HM set RollladenWZ on
2015.08.14 16:39:55 3: CUL_HM set RollladenWZ on
2015.08.14 16:37:55 3: CUL_HM set RollladenWZ on
2015.08.14 16:30:01 3: CUL_HM set RollladenSZ on
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: FunkOdyssey am 14 August 2015, 15:05:25
Könntest du nicht einfach im Ausführungsteil mit einem Filter arbeiten?
set jalousie:FILTER=level>50 50
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Wuppi68 am 14 August 2015, 15:13:50
in meiner Beschattung habe ich sen eigentlichen set Befehl durch ein IF Konstrukt ersetzt


IF ([hm.rollade.1:level.open] ne [hm.rollade.1:level])
     (set hm.rollade.1 pct [hm.rollade.1:level.open])


level.open ist bei mir ein zusätzliches Reading zum einfachen anpassen in meinem Rollo Device

ich nehme den Stringvergleich, da beim Reading Level schon einmal "set_100" oder vergleichbar auftaucht
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 15 August 2015, 11:20:26
Zitat von: FunkOdyssey am 14 August 2015, 15:05:25
Könntest du nicht einfach im Ausführungsteil mit einem Filter arbeiten?
set jalousie:FILTER=level>50 50
wo sollt der denn hin..?

Zitat von: Wuppi68 am 14 August 2015, 15:13:50
in meiner Beschattung habe ich sen eigentlichen set Befehl durch ein IF Konstrukt ersetzt
damit fange ich dann aber an, dass DOIF zu verstümmeln, oder nicht ? ;)
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Wuppi68 am 15 August 2015, 12:26:56
Zitat von: moonsorrox am 15 August 2015, 11:20:26
damit fange ich dann aber an, dass DOIF zu verstümmeln, oder nicht ? ;)

nicht wirklich, Du kannst es ja auch in einer 99er.pm auslagern, oder eine Notify dazu erstellen.

bei ner 99er.pm könnte es dann so aussehen

sub newSet($$$) {
  my ($Device, $Sollwert, $Istwert) =_@;

  if ("$Sollwert" ne "$Istwert") fhem "set $Device PCT $Sollwert";
}


so aus dem Kopf ungetestet ...
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 15 August 2015, 14:20:32
Du kannst auch einfach den Zustand deines Rollladens in der DOIF-Bedingung mit "and" abfragen, z. B.

(([RolloWZmodus] eq "Beschattung" and [[du_RolloZeit_hoch]|8] or [[du_RolloZeit_hoch_WoE]|7]) and [?RollladenWZ] ne "on")
(set RollladenWZ on)
....


Gruß

Damian
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 15 August 2015, 15:21:55
Zitat von: Damian am 15 August 2015, 14:20:32
Du kannst auch einfach den Zustand deines Rollladens in der DOIF-Bedingung mit "and" abfragen, z. B.

vielen Dank das wollte ich wissen "wo" es eingetragen werden muss...
Ich werde das mal einbauen und beobachten und berichten..!  :)
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 15 August 2015, 15:37:43
Zitat von: moonsorrox am 15 August 2015, 15:21:55
vielen Dank das wollte ich wissen "wo" es eingetragen werden muss...
Ich werde das mal einbauen und beobachten und berichten..!  :)

ja, allerdings sehe ich gerade einen Fehler, den du vorher schon drin hattest, denn auch am Wochenende soll wahrscheinlich dein RolloWZmodus gelten, dann eher so:

([RolloWZmodus] eq "Beschattung" and ([[du_RolloZeit_hoch]|8] or [[du_RolloZeit_hoch_WoE]|7]) and [?RollladenWZ] ne "on")...

Gruß

Damian
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 17 August 2015, 12:59:25
Zitat von: Damian am 15 August 2015, 15:37:43
ja, allerdings sehe ich gerade einen Fehler, den du vorher schon drin hattest, denn auch am Wochenende soll wahrscheinlich dein RolloWZmodus gelten, dann eher so:

([RolloWZmodus] eq "Beschattung" and ([[du_RolloZeit_hoch]|8] or [[du_RolloZeit_hoch_WoE]|7]) and [?RollladenWZ] ne "on")...

Gruß

Damian
OK Damian Danke  :D
ja die Klammersetzung ist manchmal nicht so einfach... bisher geht das jetzt alles ;)
Im Schlafzimmer setze ich dies nun auch ein, in etwas veränderter Form und läuft auch bisher....
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 01 September 2015, 08:38:10
@Damian

bisher war ich eigentlich zufrieden mit meinem DOIF was die Beschattung angeht, aber.....!

Heute Nacht ist folgendes passiert, so gegen 0. 40 Uhr sind meine Rollläden im Wohnzimmer hoch gefahren  :-\
Ich war doch sehr erschrocken durch die Fahrgeräusche  ;) aber da die Temperatur um diese Zeit unter meine eingestellte Temperatur 25° gefallen ist, kam wohl der Trigger und die Dinger fuhren hoch...
Mein di_Temperatur steht momentan auf 25°

Das heißt ich muss wohl im DOIF etwas nachbessern, ich weiß aber leider gerade momentan nicht was oder wie ich es am besten machen sollte.
Hast du einen Einfall..?

Dazu folgendes ich dachte eigentlich das durch die Zeitbegrenzung im {sunset_abs("CIVIL",-100,"16:35","22:20")}  dieses nicht passiert und es ist wohl bisher nicht vorgekommen das die Temperatur um diese Zeit unter meinen Wert von 25° gefallen ist.
Stehe grad ein wenig auf dem Schlauch... wo ich drehen muss... :-\


Ich hänge dir mal mein aktuelles List an und das List di_Temperatur, evtl. kannst du mir einen Tipp geben, würde mir sehr helfen... ;)

Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([RolloWZmodus] eq "Beschattung" and ([[du_RolloZeit_hoch]|8] or [[du_RolloZeit_hoch_WoE]|7]) and [?RollladenWZ] ne "on")
(set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "warm" and [07:15-15:45] and [di_Helligkeit] eq "hell"))
(set RollladenWZ 50)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [15:45-{sunset_abs("CIVIL",-1240,"15:46","16:20")}] or [di_Helligkeit] eq "dunkel" or [[du_RolloZeitWZ_hoch_B]|78]))
(set RollladenWZ on)
DOELSEIF ([RolloWZmodus] eq "Beschattung" and [{sunset_abs("CIVIL",-100,"16:35","22:20")}])
(set RollladenWZ off)


   NAME       di_RollladenWZ_B
   NR         392
   NTFY_ORDER 50-di_RollladenWZ_B
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2015-09-01 00:36:30   Device          di_Temperatur
     2015-09-01 07:15:00   cmd_event       timer_1
     2015-09-01 07:15:00   cmd_nr          1
     2015-08-31 17:33:38   e_di_Helligkeit_STATE dunkel
     2015-09-01 00:36:30   e_di_Temperatur_STATE kalt
     2015-09-01 07:15:00   state           cmd_1
     2015-09-01 07:15:00   timer_1_c1      02.09.2015 07:15:00|8
     2015-09-01 07:30:03   timer_2_c1      02.09.2015 07:30:00|7
     2015-09-01 07:15:00   timer_3_c2      02.09.2015 07:15:00
     2015-08-31 17:59:16   timer_4_c2      01.09.2015 15:45:00
     2015-08-31 17:59:16   timer_5_c3      01.09.2015 15:45:00
     2015-08-31 17:59:16   timer_6_c3      01.09.2015 16:19:59
     2015-08-31 17:59:16   timer_7_c3      01.09.2015 16:00:00|78
     2015-08-31 20:48:16   timer_8_c4      01.09.2015 20:45:51
     2015-08-31 17:58:51   wait_timer      no timer
   Condition:
     0          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (DOIF_time_once($hash,$hash->{timer}{0},$wday,"8") or DOIF_time_once($hash,$hash->{timer}{1},$wday,"7")) and InternalDoIf('RollladenWZ','STATE','') ne "on"
     1          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "warm" and DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"") and InternalDoIf('di_Helligkeit','STATE','') eq "hell")
     2          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and (InternalDoIf('di_Temperatur','STATE','') eq "kalt" and DOIF_time($hash,$hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"") or InternalDoIf('di_Helligkeit','STATE','') eq "dunkel" or DOIF_time_once($hash,$hash->{timer}{6},$wday,"78"))
     3          InternalDoIf('RolloWZmodus','STATE','') eq "Beschattung" and DOIF_time_once($hash,$hash->{timer}{7},$wday,"")
   Days:
     0          8
     1          7
     6          78
   Devices:
     0           RolloWZmodus
     1           RolloWZmodus di_Temperatur di_Helligkeit
     2           RolloWZmodus di_Temperatur di_Helligkeit
     3           RolloWZmodus
     all         RolloWZmodus di_Temperatur di_Helligkeit
   Do:
     0:
       0          set RollladenWZ on
     1:
       0          set RollladenWZ 50
     2:
       0          set RollladenWZ on
     3:
       0          set RollladenWZ off
     4:
   Helper:
     globalinit 1
     last_timer 8
     sleeptimer -1
   Internals:
     0           RolloWZmodus:STATE
     1           RolloWZmodus:STATE di_Temperatur:STATE di_Helligkeit:STATE
     2           RolloWZmodus:STATE di_Temperatur:STATE di_Helligkeit:STATE
     3           RolloWZmodus:STATE
     all         RolloWZmodus:STATE di_Temperatur:STATE di_Helligkeit:STATE
   Itimer:
     all         du_RolloZeit_hoch du_RolloZeit_hoch_WoE du_RolloZeitWZ_hoch_B
   Readings:
   Realtime:
     0          07:15:00
     1          07:30:00
     2          07:15:00
     3          15:45:00
     4          15:45:00
     5          16:19:59
     6          16:00:00
     7          20:45:51
   State:
   Time:
     0          [du_RolloZeit_hoch]
     1          [du_RolloZeit_hoch_WoE]
     2          07:15:00
     3          15:45:00
     4          15:45:00
     5          {sunset_abs("CIVIL",-1240,"15:46","16:20")}
     6          [du_RolloZeitWZ_hoch_B]
     7          {sunset_abs("CIVIL",-100,"16:35","22:20")}
   Timecond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          2
     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  6
     3           7
   Trigger:
Attributes:
   do         always
   group      Rollläden
   wait       900:900


list di_Temperatur
Internals:
   CFGFN      ./FHEM/Obergeschoss.cfg
   DEF        ([Aussensensor_Terrasse:temperature] > 25)
   NAME       di_Temperatur
   NR         1549
   NTFY_ORDER 50-di_Temperatur
   STATE      kalt
   TYPE       DOIF
   Readings:
     2015-09-01 08:34:33   Device          Aussensensor_Terrasse
     2015-09-01 00:36:30   cmd_event       Aussensensor_Terrasse
     2015-09-01 00:36:30   cmd_nr          2
     2015-09-01 08:34:33   e_Aussensensor_Terrasse_temperature 20.1
     2015-09-01 00:36:30   state           kalt
     2015-09-01 00:36:30   wait_timer      no timer
   Condition:
     0          ReadingValDoIf('Aussensensor_Terrasse','temperature','') > 25
   Devices:
     0           Aussensensor_Terrasse
     all         Aussensensor_Terrasse
   Do:
     0:
       0
     1:
   Helper:
     globalinit 1
     last_timer 0
     sleepdevice Aussensensor_Terrasse
     sleepsubtimer -1
     sleeptimer -1
   Internals:
   Itimer:
   Readings:
     0           Aussensensor_Terrasse:temperature
     all         Aussensensor_Terrasse:temperature
   State:
   Trigger:
Attributes:
   alias      Temperatur Beschattung > 25°
   cmdState   warm|kalt
   group      Rollläden OG
   icon       temp_temperature@#F0E68C
   room       Automation,Schlafzimmer
   sortby     05
   wait       120:120
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Ralli am 03 September 2015, 09:43:25
Du hast and und or gleichberechtigt nebeneinander. Versuche mal, die zusammengehörigen logischen Bedingungen einzuklammern.
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 03 September 2015, 10:41:02
du meinst sicher diesen Bereich:
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [15:45-{sunset_abs("CIVIL",-1240,"15:46","16:20")}] or [di_Helligkeit] eq "dunkel" or [[du_RolloZeitWZ_hoch_B]|78]))
(set RollladenWZ on)


hab das jetzt mal so gemacht
DOELSEIF ([RolloWZmodus] eq "Beschattung" and [di_Temperatur] eq "kalt" and (([15:45-{sunset_abs("CIVIL",-1240,"15:46","16:20")}] or [di_Helligkeit] eq "dunkel" or [[du_RolloZeitWZ_hoch_B]|78])))
(set RollladenWZ on)


wenn ich mich recht erinnere hatte ich das glaube ich schon mal und funktionierte nicht zufriedenstellend

Es gäbe aber noch diese Variante:
DOELSEIF ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and ([15:45-{sunset_abs("CIVIL",-1240,"15:46","16:20")}] or [di_Helligkeit] eq "dunkel" or [[du_RolloZeitWZ_hoch_B]|78])))
(set RollladenWZ on)



Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 03 September 2015, 12:48:07
Man muss halt wissen, wie die Prioritäten in der Bedingung sind. Das kann man z. B. hier nachlesen.
https://www.hscripts.com/tutorials/perl/operators/oprpreced.php

Zuerst sind die Vergleiche dran mit eq oder ne usw. dann and und dann erst or. Wenn man anders binden will, muss man entsprechend klammern.

Typische Angaben bei DOIF sind Trigger in einem bestimmten Zeitbereich, diese werden logischerweise mit and verknüpft, z. B. ... [08:00-10:00] and [Device]...

Gruß

Damian


Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 03 September 2015, 17:25:36
es ist jetzt so das er einmal so wie es das DOIF auch im Code hat um 15.45 Uhr triggert und der triggert ein weiteres mal um 16 Uhr, hierbei fährt er aber auch nur ganz kurz nach oben. Fahren sollte er aber auf "on"

Dies stört mich jetzt so noch nicht....
was das Problem war und wohl auch noch ist, dass er des Nachts so wie es von mir oben beschrieben wurde um 0.36 Uhr die Rollläden nach oben gefahren hat, obwohl er zu dieser Zeit gar nicht mehr fahren sollte...!
Hierfür war der Auslösetrigger die Temperatur die an dem besagten Tag um 0.36 Uhr unter 25° fiel...

Das möchte ich demnächst vermeiden... hier fehlt mir etwas der Ansatzpunkt
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: Damian am 03 September 2015, 19:18:57
Zitat von: moonsorrox am 03 September 2015, 17:25:36
es ist jetzt so das er einmal so wie es das DOIF auch im Code hat um 15.45 Uhr triggert und der triggert ein weiteres mal um 16 Uhr, hierbei fährt er aber auch nur ganz kurz nach oben. Fahren sollte er aber auf "on"

Dies stört mich jetzt so noch nicht....
was das Problem war und wohl auch noch ist, dass er des Nachts so wie es von mir oben beschrieben wurde um 0.36 Uhr die Rollläden nach oben gefahren hat, obwohl er zu dieser Zeit gar nicht mehr fahren sollte...!
Hierfür war der Auslösetrigger die Temperatur die an dem besagten Tag um 0.36 Uhr unter 25° fiel...

Das möchte ich demnächst vermeiden... hier fehlt mir etwas der Ansatzpunkt

mit

... ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [15:45-{sunset_abs("CIVIL",-1240,"15:46","16:20")}] ...

kann dein Rollo sich nur bewegen, wenn "kalt" im angegebenen Intervall eintritt, da es eine and-Verknüpfung ist.

Gruß

Damian
Titel: Antw:DOIF: Frage zu einer Beschattungssteuerung
Beitrag von: moonsorrox am 05 September 2015, 12:50:34
Zitat von: Damian am 03 September 2015, 19:18:57
mit

... ([RolloWZmodus] eq "Beschattung" and ([di_Temperatur] eq "kalt" and [15:45-{sunset_abs("CIVIL",-1240,"15:46","16:20")}] ...

kann dein Rollo sich nur bewegen, wenn "kalt" im angegebenen Intervall eintritt, da es eine and-Verknüpfung ist.

ja klar und das ist ja auch gewollt, aber ich dachte das mit dieser Zeile:
DOELSEIF ([RolloWZmodus] eq "Beschattung" and [{sunset_abs("CIVIL",-100,"16:35","22:20")}])
(set RollladenWZ off)


es nicht passiert, da ich 22:20 als Endzeit eingetragen habe...
Dem ist wohl nicht so, da muss ich nochmals eingreifen und eine Zeit definieren, aber ich weiß im Moment leider noch nicht an welcher Stelle... :-\
Ich glaube auch ich kann diesen Teil ""CIVIL",-100,"16:35","22:20"" dann weglassen..!?

Dann werde ich mal das mit der >Endzeit so einbauen, beim eingeben hat das DOIF nicht gemeckert also werde ich das mal so probieren:
DOELSEIF ([RolloWZmodus] eq "Beschattung" and [di_Temperatur] eq "kalt" and (([?15:45-{sunset_abs("CIVIL",-1240,"15:46","16:20")}-22:20] or [di_Helligkeit] eq "dunkel" or [[du_RolloZeitWZ_hoch_B]|78])))
(set RollladenWZ on) 


in der Hoffnung das es nicht mehr passiert und die Rollläden in der Nacht hochfahren...! ;)