Hauptmenü

[gelöst] DOIF wait-Attribut

Begonnen von Vize, 29 November 2015, 00:56:02

Vorheriges Thema - Nächstes Thema

Vize

Ahoi,

ich habe mal eine Frage zum wait-Attribut bei einem DOIF, in dem eine IF-ELSE-Bedingung verschachtelt ist.

Beispielhaftes DOIF:
([{sunrise()}-{sunset()}|8]) (set 1) DOELSE (IF ([Wetter:fc2_low_c] < 0) (set 2) (set 3) ELSE (set 4) (set 5))

Aufgabe:
- 1 soll keine Verzögerung haben
- gibt es lt. Wettervorhersage Morgen Frost, soll 2 ohne Verzögerung geschaltet werden, 3 mit 10 s Verzögerung
- gibt es Morgen keinen Frost, soll 4 ohne Verzögerung gesschaltet werden, 5 mit 20 s Verzögerung

Wäre das dann das richtige wait-Attribut?
0;0,10,0,20

Falls nicht, wie müsste es richterweise aussehen?

Schonmal vielen Dank für jegliche Hilfe!

Gruß
Andreas

EIB-Fan

Hallo Andreas,

du könntest das komplett mit DOIF lösen.


([{sunrise()}-{sunset()}|8]) (set 1) DOELSEIF ([Wetter:fc2_low_c] < 0) (set 2) (set 3) DOELSE (set 4) (set 5)


Dann sollte das wait-Attribut für dein Beispiel, wie folgt programmiert werden.


0:0,10:0,20


Alles ist ungetestet.

Viele Grüße
Jens

Vize

Moin Jens,

in meinem Beispiel soll alles, was im DOELSE-Teil steht, nachts stattfinden, nur unterschiedlich, ob nun Frost herrscht oder nicht.
Daher auch das verschachtelte IF.

Bei deinem Vorschlag greift doch set 2 und set 3 auch tagsüber (sunrise bis sunset), oder?

Gruß
Andreas

Damian

Zitat von: Vize am 29 November 2015, 11:14:48
Moin Jens,

in meinem Beispiel soll alles, was im DOELSE-Teil steht, nachts stattfinden, nur unterschiedlich, ob nun Frost herrscht oder nicht.
Daher auch das verschachtelte IF.

Bei deinem Vorschlag greift doch set 2 und set 3 auch tagsüber (sunrise bis sunset), oder?

Gruß
Andreas

Der Befehl IF kennt kein wait. Du könntest aber folgendes definieren:

DOIF ([{sunrise()}-{sunset()}|8]) (set 1)
DOELSEIF (![{sunrise()}-{sunset()}|8] and [Wetter:fc2_low_c] < 0) (set 2) (set 3)
DOELSEIF (![{sunrise()}-{sunset()}|8] and [Wetter:fc2_low_c] >= 0) (set 4) (set 5)


wait 0:0,10:0,20

Gruß

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

Vize

Hi Damian,

danke für die Erläuterung und den Tipp.
Ich werde mal versuchen, das so in meinen Anwendungsfall einzubauen...das entsprechende DOIF ist allerdings viel umfangreicher als ich es hier beschrieben habe...

Gruß
Andreas

Vize

Mahlzeit,

so, nachdem ich nun versucht habe, das ganze in meine entsprechende Steuerung einzubauen, ist nun folgendes passiert:

Aufgabe des DOIFs:
- Jalousien zeitgesteuert auf- und zufahren, und zwar generell nach Sonnenauf- und -untergang
- dabei berücksichtigen, ob Frost vorhergesagt ist oder nicht und
- neuerdings, ob Adventszeit ist, dann nämlich zwei Jalousien abends später runterfahren, damit man die Weihnachtsbeleuchtung draussen noch geniessen kann

Das DOIF dazu sieht nun so aus (heute um ca. 11:45 aktualisiert):
([{sunrise(600,"06:15","08:00")}-{sunset(300,"16:30","22:45")}|8] or [{sunrise(0,"08:15","09:30")}-{sunset(300,"16:30","23:00")}|7]) (set (ez|wz|ku|gb).*rollo.* auf) DOELSEIF (![{sunrise(600,"06:15","08:00")}-{sunset(300,"16:30","22:45")}|8] or ![{sunrise(0,"08:15","09:30")}-{sunset(300,"16:30","23:00")}|7] and Advent==1 and [Wetter:fc2_low_c] < 0) (set gb_103_rollo 40) (set wz_105_rollo_1 35) (set wz_105_rollo_2 20) (set ez_105_rollo_1 20) (set (ez_105_rollo_2|ez_105_rollo_3) 20) (set ku_104_rollo 30) DOELSEIF (![{sunrise(600,"06:15","08:00")}-{sunset(300,"16:30","22:45")}|8] or ![{sunrise(0,"08:15","09:30")}-{sunset(300,"16:30","23:00")}|7] and Advent==1 and [Wetter:fc2_low_c] >= 0) (set wz_105_rollo_2 zu) (set ez_105_rollo_1 zu) (set (gb_103_rollo|wz_105_rollo_1|ez_105_rollo_2|ez_105_rollo_3|ku_104_rollo) zu) DOELSE (set (ez|wz|ku|gb).*rollo.*:FILTER=level>0 zu)

Das wait-Attribut so:
0;0,0,18900,10800,0,0;18900,10800,0;0

Nun sind gerade um 13:15 die entsprechenden Jalousien auf "Frostschutzstellung" heruntergefahren  :o
also so, wie im ersten DOELSEIF definiert.

Es ist aber weder Nacht, noch Frost. Wetter:fc2_low_c liegt aktuell bei 8 (°C).

Ich blick ehrlich gesagt nicht mehr durch. Stimmt hier irgendwas mit der Klammersetzung oder den Bedingungen im code nicht oder mit den or...and Abarbeitungen, oder mache ich irgendwas anderes falsch?

Vielleicht kann/mag mir ja jemand auf die Sprünge helfen...

Besten Dank schonmal!!!

Gruß
Andreas

Ach ja, hier noch das list vom DOIF
Internals:
   DEF        ([{sunrise(600,"06:15","08:00")}-{sunset(300,"16:30","22:45")}|8] or [{sunrise(0,"08:15","09:30")}-{sunset(300,"16:30","23:00")}|7]) (set (ez|wz|ku|gb).*rollo.* auf) DOELSEIF (![{sunrise(600,"06:15","08:00")}-{sunset(300,"16:30","22:45")}|8] or ![{sunrise(0,"08:15","09:30")}-{sunset(300,"16:30","23:00")}|7] and Advent==1 and [Wetter:fc2_low_c] < 0) (set gb_103_rollo 40) (set wz_105_rollo_1 35) (set wz_105_rollo_2 20) (set ez_105_rollo_1 20) (set (ez_105_rollo_2|ez_105_rollo_3) 20) (set ku_104_rollo 30) DOELSEIF (![{sunrise(600,"06:15","08:00")}-{sunset(300,"16:30","22:45")}|8] or ![{sunrise(0,"08:15","09:30")}-{sunset(300,"16:30","23:00")}|7] and Advent==1 and [Wetter:fc2_low_c] >= 0) (set wz_105_rollo_2 zu) (set ez_105_rollo_1 zu) (set (gb_103_rollo|wz_105_rollo_1|ez_105_rollo_2|ez_105_rollo_3|ku_104_rollo) zu) DOELSE (set (ez|wz|ku|gb).*rollo.*:FILTER=level>0 zu)
   NAME       di_eg_rollos_zeitautomatik_advent
   NR         251
   NTFY_ORDER 50-di_eg_rollos_zeitautomatik_advent
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2015-11-30 13:31:22   Device          Wetter
     2015-11-30 13:16:22   cmd_event       Wetter
     2015-11-30 13:16:22   cmd_nr          2
     2015-11-30 13:16:22   cmd_seqnr       6
     2015-11-30 13:31:22   e_Wetter_fc2_low_c 8
     2015-11-30 13:16:22   state           cmd_2
     2015-11-30 11:46:22   timer_10_c3     30.11.2015 17:03:44|8
     2015-11-30 11:46:22   timer_11_c3     01.12.2015 08:15:00|7
     2015-11-30 11:46:22   timer_12_c3     30.11.2015 17:03:44|7
     2015-11-30 11:46:22   timer_1_c1      01.12.2015 07:38:56|8
     2015-11-30 11:46:22   timer_2_c1      30.11.2015 17:03:44|8
     2015-11-30 11:46:22   timer_3_c1      01.12.2015 08:15:00|7
     2015-11-30 11:46:22   timer_4_c1      30.11.2015 17:03:44|7
     2015-11-30 11:46:22   timer_5_c2      01.12.2015 07:38:56|8
     2015-11-30 11:46:22   timer_6_c2      30.11.2015 17:03:44|8
     2015-11-30 11:46:22   timer_7_c2      01.12.2015 08:15:00|7
     2015-11-30 11:46:22   timer_8_c2      30.11.2015 17:03:44|7
     2015-11-30 11:46:22   timer_9_c3      01.12.2015 07:38:56|8
     2015-11-30 11:46:21   wait_timer      no timer
   Condition:
     0          DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"8") or DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"7")
     1          !DOIF_time($hash,$hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"8") or !DOIF_time($hash,$hash->{realtime}{6},$hash->{realtime}{7},$wday,$hms,"7") and Advent==1 and ReadingValDoIf('Wetter','fc2_low_c','') < 0
     2          !DOIF_time($hash,$hash->{realtime}{8},$hash->{realtime}{9},$wday,$hms,"8") or !DOIF_time($hash,$hash->{realtime}{10},$hash->{realtime}{11},$wday,$hms,"7") and Advent==1 and ReadingValDoIf('Wetter','fc2_low_c','') >= 0
   Days:
     0          8
     1          8
     10         7
     11         7
     2          7
     3          7
     4          8
     5          8
     6          7
     7          7
     8          8
     9          8
   Devices:
     1           Wetter
     2           Wetter
     all         Wetter
   Do:
     0:
       0          set (ez|wz|ku|gb).*rollo.* auf
     1:
       0          set gb_103_rollo 40
       1          set wz_105_rollo_1 35
       2          set wz_105_rollo_2 20
       3          set ez_105_rollo_1 20
       4          set (ez_105_rollo_2|ez_105_rollo_3) 20
       5          set ku_104_rollo 30
     2:
       0          set wz_105_rollo_2 zu
       1          set ez_105_rollo_1 zu
       2          set (gb_103_rollo|wz_105_rollo_1|ez_105_rollo_2|ez_105_rollo_3|ku_104_rollo) zu
     3:
       0          set (ez|wz|ku|gb).*rollo.*:FILTER=level>0 zu
   Helper:
     globalinit 1
     last_timer 12
     sleeptimer -1
   Internals:
   Itimer:
   Readings:
     1           Wetter:fc2_low_c
     2           Wetter:fc2_low_c
     all         Wetter:fc2_low_c
   Realtime:
     0          07:38:56
     1          17:03:44
     10         08:15:00
     11         17:03:44
     2          08:15:00
     3          17:03:44
     4          07:38:56
     5          17:03:44
     6          08:15:00
     7          17:03:44
     8          07:38:56
     9          17:03:44
   State:
   Time:
     0          {sunrise(600,"06:15","08:00")}
     1          {sunset(300,"16:30","22:45")}
     10         {sunrise(0,"08:15","09:30")}
     11         {sunset(300,"16:30","23:00")}
     2          {sunrise(0,"08:15","09:30")}
     3          {sunset(300,"16:30","23:00")}
     4          {sunrise(600,"06:15","08:00")}
     5          {sunset(300,"16:30","22:45")}
     6          {sunrise(0,"08:15","09:30")}
     7          {sunset(300,"16:30","23:00")}
     8          {sunrise(600,"06:15","08:00")}
     9          {sunset(300,"16:30","22:45")}
   Timecond:
     0          0
     1          0
     10         2
     11         2
     2          0
     3          0
     4          1
     5          1
     6          1
     7          1
     8          2
     9          2
   Timer:
     0          0
     1          0
     10         0
     11         0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
     8          0
     9          0
   Timerfunc:
   Timers:
     0           0  1  2  3
     1           4  5  6  7
     2           8  9  10  11
   Trigger:
Attributes:
   wait       0;0,0,18900,10800,0,0;18900,10800,0;0

Vize

Kurzes update:

Um 17:03 Uhr sind nun alle Rollos komplett heruntergefahren.  :(

Dazu jede Menge Einträge im log, wonach wohl mehrere Zustände abgearbeitet werden:
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_1 off
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_2 off
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_3 off
2015.11.30 17:03:44 3: CUL_HM set ku_104_rollo off
2015.11.30 17:03:44 3: CUL_HM set wz_105_rollo_2 off
2015.11.30 17:03:44 3: CUL_HM set gb_103_rollo 40
2015.11.30 17:03:44 3: CUL_HM set wz_105_rollo_1 35
2015.11.30 17:03:44 3: CUL_HM set wz_105_rollo_2 20
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_1 20
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_2 20
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_3 20
2015.11.30 17:03:44 3: CUL_HM set ku_104_rollo 30
2015.11.30 17:03:44 3: CUL_HM set wz_105_rollo_2 off
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_1 off
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_2 off
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_3 off
2015.11.30 17:03:44 3: CUL_HM set gb_103_rollo off
2015.11.30 17:03:44 3: CUL_HM set ku_104_rollo off
2015.11.30 17:03:44 3: CUL_HM set wz_105_rollo_1 off
2015.11.30 17:03:44 3: CUL_HM set gb_103_rollo 40
2015.11.30 17:03:44 3: CUL_HM set wz_105_rollo_1 35
2015.11.30 17:03:44 3: CUL_HM set wz_105_rollo_2 20
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_1 20
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_2 20
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_3 20
2015.11.30 17:03:44 3: CUL_HM set ku_104_rollo 30
2015.11.30 17:03:44 3: CUL_HM set wz_105_rollo_2 off
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_1 off
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_2 off
2015.11.30 17:03:44 3: CUL_HM set ez_105_rollo_3 off
2015.11.30 17:03:44 3: CUL_HM set gb_103_rollo off
2015.11.30 17:03:44 3: CUL_HM set ku_104_rollo off
2015.11.30 17:03:44 3: CUL_HM set wz_105_rollo_1 off


Und noch das aktuelle list vom DOIF:
Internals:
   DEF        ([{sunrise(600,"06:15","08:00")}-{sunset(300,"16:30","22:45")}|8] or [{sunrise(0,"08:15","09:30")}-{sunset(300,"16:30","23:00")}|7]) (set (ez|wz|ku|gb).*rollo.* auf) DOELSEIF (![{sunrise(600,"06:15","08:00")}-{sunset(300,"16:30","22:45")}|8] or ![{sunrise(0,"08:15","09:30")}-{sunset(300,"16:30","23:00")}|7] and Advent==1 and [Wetter:fc2_low_c] < 0) (set gb_103_rollo 40) (set wz_105_rollo_1 35) (set wz_105_rollo_2 20) (set ez_105_rollo_1 20) (set (ez_105_rollo_2|ez_105_rollo_3) 20) (set ku_104_rollo 30) DOELSEIF (![{sunrise(600,"06:15","08:00")}-{sunset(300,"16:30","22:45")}|8] or ![{sunrise(0,"08:15","09:30")}-{sunset(300,"16:30","23:00")}|7] and Advent==1 and [Wetter:fc2_low_c] >= 0) (set wz_105_rollo_2 zu) (set ez_105_rollo_1 zu) (set (gb_103_rollo|wz_105_rollo_1|ez_105_rollo_2|ez_105_rollo_3|ku_104_rollo) zu) DOELSE (set (ez|wz|ku|gb).*rollo.*:FILTER=level>0 zu)
   NAME       di_eg_rollos_zeitautomatik_advent
   NR         251
   NTFY_ORDER 50-di_eg_rollos_zeitautomatik_advent
   STATE      cmd_4
   TYPE       DOIF
   Readings:
     2015-11-30 13:31:22   Device          Wetter
     2015-11-30 17:03:44   cmd_event       timer_4
     2015-11-30 17:03:44   cmd_nr          4
     2015-11-30 13:31:22   e_Wetter_fc2_low_c 8
     2015-11-30 17:03:44   state           cmd_4
     2015-11-30 17:03:44   timer_10_c3     01.12.2015 17:03:08|8
     2015-11-30 11:46:22   timer_11_c3     01.12.2015 08:15:00|7
     2015-11-30 17:03:44   timer_12_c3     01.12.2015 17:03:08|7
     2015-11-30 11:46:22   timer_1_c1      01.12.2015 07:38:56|8
     2015-11-30 17:03:44   timer_2_c1      01.12.2015 17:03:08|8
     2015-11-30 11:46:22   timer_3_c1      01.12.2015 08:15:00|7
     2015-11-30 17:03:44   timer_4_c1      01.12.2015 17:03:08|7
     2015-11-30 11:46:22   timer_5_c2      01.12.2015 07:38:56|8
     2015-11-30 17:03:44   timer_6_c2      01.12.2015 17:03:08|8
     2015-11-30 11:46:22   timer_7_c2      01.12.2015 08:15:00|7
     2015-11-30 17:03:44   timer_8_c2      01.12.2015 17:03:08|7
     2015-11-30 11:46:22   timer_9_c3      01.12.2015 07:38:56|8
     2015-11-30 11:46:21   wait_timer      no timer
   Condition:
     0          DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"8") or DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"7")
     1          !DOIF_time($hash,$hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"8") or !DOIF_time($hash,$hash->{realtime}{6},$hash->{realtime}{7},$wday,$hms,"7") and Advent==1 and ReadingValDoIf('Wetter','fc2_low_c','') < 0
     2          !DOIF_time($hash,$hash->{realtime}{8},$hash->{realtime}{9},$wday,$hms,"8") or !DOIF_time($hash,$hash->{realtime}{10},$hash->{realtime}{11},$wday,$hms,"7") and Advent==1 and ReadingValDoIf('Wetter','fc2_low_c','') >= 0
   Days:
     0          8
     1          8
     10         7
     11         7
     2          7
     3          7
     4          8
     5          8
     6          7
     7          7
     8          8
     9          8
   Devices:
     1           Wetter
     2           Wetter
     all         Wetter
   Do:
     0:
       0          set (ez|wz|ku|gb).*rollo.* auf
     1:
       0          set gb_103_rollo 40
       1          set wz_105_rollo_1 35
       2          set wz_105_rollo_2 20
       3          set ez_105_rollo_1 20
       4          set (ez_105_rollo_2|ez_105_rollo_3) 20
       5          set ku_104_rollo 30
     2:
       0          set wz_105_rollo_2 zu
       1          set ez_105_rollo_1 zu
       2          set (gb_103_rollo|wz_105_rollo_1|ez_105_rollo_2|ez_105_rollo_3|ku_104_rollo) zu
     3:
       0          set (ez|wz|ku|gb).*rollo.*:FILTER=level>0 zu
   Helper:
     globalinit 1
     last_timer 12
     sleeptimer -1
   Internals:
   Itimer:
   Readings:
     1           Wetter:fc2_low_c
     2           Wetter:fc2_low_c
     all         Wetter:fc2_low_c
   Realtime:
     0          07:38:56
     1          17:03:08
     10         08:15:00
     11         17:03:08
     2          08:15:00
     3          17:03:08
     4          07:38:56
     5          17:03:08
     6          08:15:00
     7          17:03:08
     8          07:38:56
     9          17:03:08
   State:
   Time:
     0          {sunrise(600,"06:15","08:00")}
     1          {sunset(300,"16:30","22:45")}
     10         {sunrise(0,"08:15","09:30")}
     11         {sunset(300,"16:30","23:00")}
     2          {sunrise(0,"08:15","09:30")}
     3          {sunset(300,"16:30","23:00")}
     4          {sunrise(600,"06:15","08:00")}
     5          {sunset(300,"16:30","22:45")}
     6          {sunrise(0,"08:15","09:30")}
     7          {sunset(300,"16:30","23:00")}
     8          {sunrise(600,"06:15","08:00")}
     9          {sunset(300,"16:30","22:45")}
   Timecond:
     0          0
     1          0
     10         2
     11         2
     2          0
     3          0
     4          1
     5          1
     6          1
     7          1
     8          2
     9          2
   Timer:
     0          0
     1          0
     10         0
     11         0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
     8          0
     9          0
   Timerfunc:
   Timers:
     0           0  1  2  3
     1           4  5  6  7
     2           8  9  10  11
   Trigger:
Attributes:
   wait       0;0,0,18900,10800,0,0;18900,10800,0;0


Bin immer noch ratlos...

Gruß
Andreas

Damian

Das Problem ist, dass du sehr viele Timer hast, die gleichzeitig triggern. Jeder Timer aber für sich separat das Modul triggert. Auch die Reihenfolge der gleichzeitigen Timer ist zufällig. Diese Problematik werde ich erst nächstes Jahr angehen, dann wird bei gleichen Timern nur einmal getriggert. Du könntest das Problem evtl. abmildern, indem du bei den Zeitintervallen, die nicht triggern sollen, das Fragezeichen angibst.

Gruß

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

Vize

Hi Damian,

hab mal deinen Tipp mit dem Fragezeichen z.B. so eingebaut:
...DOELSEIF ((![?{sunrise(600,"06:15","08:00")}-{sunset(300,"16:30","22:45")}|8] or ![?{sunrise(0,"08:15","09:30")}-{sunset(300,"16:30","23:00")}|7])...

Ergibt keine "Besserung"...
Kurioserweise wird das wait-Attribut auch vollständig ignoriert.

Gruß
Andreas

Damian

Zitat von: Vize am 30 November 2015, 20:27:13
Hi Damian,

hab mal deinen Tipp mit dem Fragezeichen z.B. so eingebaut:
...DOELSEIF ((![?{sunrise(600,"06:15","08:00")}-{sunset(300,"16:30","22:45")}|8] or ![?{sunrise(0,"08:15","09:30")}-{sunset(300,"16:30","23:00")}|7])...

Ergibt keine "Besserung"...
Kurioserweise wird das wait-Attribut auch vollständig ignoriert.

Gruß
Andreas

Wait gilt nicht für timer, sondern nur für Event-Trigger - steht so in der Commandref. Ansonsten musst du das Attribut timerWithWait setzen - steht auch in der Commandref ;)

Gruß

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

Vize

#10
Ja, aber das wait-Attribut setze ich doch für die (set gb_103_rollo 40) (set wz_105_rollo_1 35) usw., oder?
Klappt das, sobald ich eine Zeitangabe in die DOIF-Bedingung setze dann nicht mehr?

Puh, mein Hirn ist mittlerweile echt breiig...  :-\ und der Wanst voll mit griechischem Essen...das blockiert zusätzlich... ;D

Gruß
Andreas

*EDIT*
zusätzliches Attribut timerWithWait (1 wird automatisch gesetzt) half leider auch nicht...

Damian

Zitat von: Vize am 30 November 2015, 20:54:48
Ja, aber das wait-Attribut setze ich doch für die (set gb_103_rollo 40) (set wz_105_rollo_1 35) usw., oder?
Klappt das, sobald ich eine Zeitangabe in die DOIF-Bedingung setze dann nicht mehr?

Du hast recht, das gilt nur für das erste wait (ist bei dir sowieso Null). Für die kommagetrennten waits gilt die Einschränkung nicht.

Leider habe ich nicht die Zeit, die inzwischen recht komplexen Beispiele alle hier im Forum durchzudenken, denn mein Kopf arbeitet gerade noch an anderen Aufgaben.

Einfach mal etwas experimentieren, bis es so läuft, wie man es will, da lernt man am meisten.

Gruß

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

Vize

#12
Zitat von: Damian am 30 November 2015, 21:22:48
Einfach mal etwas experimentieren, bis es so läuft, wie man es will, da lernt man am meisten.

Das mach ich sowieso...ist ja auch ne nette Herausforderung.

Aber jetzt brauch ich erstmal noch n Ouzo. Morgen wird weiter experimentiert...Jamas!

Danke nochmal für deine Hilfe!

Gruß
Andreas

Vize

Hat mir trotz voller Plauze doch keine Ruhe gelassen...

Aber nun wird's peinlich  :-[

Ich schrieb ja:
Das wait-Attribut so:
0;0,0,18900,10800,0,0;18900,10800,0;0

Kaum ersetzt man die ";" durch ":" ... schon funktioniert es...

Ich sag ja, mein Hirn ist langsam breiig.

Flugs noch den Ausführungsteil im code passend sortiert und die Timer entsprechend aufgereiht, und schon passt das auch.

Danke trotzdem nochmal an alle für die Mühe und Mithilfe!!!

Gruß
Andreas

Vize

#14
N'Abend,

noch ein kleiner Nachtrag von mir:
Nachdem ich es nicht abschließend hinbekommen habe, die Jalousien mit dem hier gezeigten DOIF und den Timervarianten passig zu steuern, habe ich mir nun einfach einen dummy gebastelt und lasse verschiedene readings zur Tageszeit und Adventszeit dort hineinschreiben. Je nach Konstellation der readings habe ich dann mittels stateFormat einen eindeutigen STATE für den dummy definiert. Diesen frage ich nun in einem neuen DOIF ab, in dem somit keine (trigger)Timer mehr vorkommen. So kann ich alles weitere mit dem wait-Attribut abarbeiten, und die Schaltung funktioniert nun schon einige Tage einwandfrei.
Vielleicht etwas umständlicher als ein einzelnes DOIF, aber es funktioniert...

Gruß
Andreas