DOIF: Frage zu einer Beschattungssteuerung

Begonnen von moonsorrox, 28 Juli 2015, 13:39:07

Vorheriges Thema - Nächstes Thema

moonsorrox

#15
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



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

moonsorrox

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
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

kvo1

Hallo moonsorrox,

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

Danke
klaus  ;)
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

moonsorrox

#18
@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.
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

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

moonsorrox

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..!  :(
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

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

moonsorrox

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
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

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

moonsorrox

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...!  ;)
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

Damian

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





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

moonsorrox

#26
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
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

moonsorrox

#27
@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
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

FunkOdyssey

Könntest du nicht einfach im Ausführungsteil mit einem Filter arbeiten?
set jalousie:FILTER=level>50 50

Wuppi68

#29
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
FHEM unter Proxmox als VM