[gelöst] WAIT möchte nicht so, wie ich es will

Begonnen von Loki, 21 Juli 2018, 15:12:06

Vorheriges Thema - Nächstes Thema

Loki

Hallo, ich habe folgendes DOIF:
([00:01-11:59] and [Lichtsensor:brightness] > 35) ( 
set Rollo_Gruppe 0,
({Log 1, "Rollos auf bei 35% Licht"})
)
DOELSEIF ([12:00-23:59] and [WETTER.klima:temperature] > 26) (

set teleBot send "ACHTUNG! Die Rollos schließen gleich.",

IF ([WOHN.garten] eq "closed") (set Rollo_Garten_tuer on),

set Rollo_Garten_links on,
set Rollo_Garten_rechts on,

({Log 1, "Rollos zu bei über 26°C"})
)
DOELSEIF ([12:00-23:59] and [Lichtsensor:brightness] < 40) (

set teleBot send "ACHTUNG! Die Rollos schließen gleich.",

IF ([WOHN.garten] eq "closed") (set Rollo_Garten_tuer on),

set Rollo_Garten_links on,
set Rollo_Garten_rechts on,
set Rollo_Sofa on,

({Log 1, "Rollos zu bei 40% Licht"})
)


Mein WAIT sieht dazu so aus:

wait 0:0,60,60,60:0,60,60,60,60

Ich möchte erreichen, dass der erste Block sofort ausgeführt wird. Im 2. und 3. Block soll der erste Befehlt (die teleBot Nachricht) sofort, alles andere 1 Minute später ausgeführt wird.
Aktuell werden aber alle Befehle sofort ausgeführt, als wenn das WAIT ignoriert wird.

Kann jemand einen Fehler erkennen?

Loki

Hier noch das komplette Listing:
Internals:
   DEF        ([00:01-11:59] and [Lichtsensor:brightness] > 35) ( 
set Rollo_Gruppe 0,
({Log 1, "Rollos auf bei 35% Licht"})
)
DOELSEIF ([12:00-23:59] and [WETTER.klima:temperature] > 26) (

set teleBot send "ACHTUNG! Die Rollos schliessen gleich.",

IF ([WOHN.garten] eq "closed") (set Rollo_Garten_tuer on),

set Rollo_Garten_links on,
set Rollo_Garten_rechts on,

({Log 1, "Rollos zu bei über 26°C"})
)
DOELSEIF ([12:00-23:59] and [Lichtsensor:brightness] < 40) (

set teleBot send "ACHTUNG! Die Rollos schliessen gleich.",

IF ([WOHN.garten] eq "closed") (set Rollo_Garten_tuer on),

set Rollo_Garten_links on,
set Rollo_Garten_rechts on,
set Rollo_Sofa on,

({Log 1, "Rollos zu bei 40% Licht"})
)
   MODEL      FHEM
   NAME       DOIF_Rollos_automatisch
   NR         607
   NTFY_ORDER 50-doif_Rollos_per_Licht
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2018-07-21 15:11:07   Device          Lichtsensor
     2018-07-21 12:33:26   cmd             2
     2018-07-21 12:33:26   cmd_count       3
     2018-07-21 12:33:26   cmd_event       WETTER.klima
     2018-07-21 12:33:26   cmd_nr          2
     2018-07-21 15:11:07   e_Lichtsensor_brightness 254
     2018-07-21 15:02:53   e_WETTER.klima_temperature 29.7
     2018-07-21 12:29:11   mode            enabled
     2018-07-21 12:33:26   state           cmd_2
     2018-07-21 12:29:11   timer_01_c01    22.07.2018 00:01:00
     2018-07-21 12:29:11   timer_02_c01    22.07.2018 11:59:00
     2018-07-21 12:29:11   timer_03_c02    22.07.2018 12:00:00
     2018-07-21 12:29:11   timer_04_c02    21.07.2018 23:59:00
     2018-07-21 12:29:11   timer_05_c03    22.07.2018 12:00:00
     2018-07-21 12:29:11   timer_06_c03    21.07.2018 23:59:00
     2018-07-21 12:34:26   wait_timer      no timer
   Regex:
   attr:
     cmdState:
     repeatcmd:
       60
       60
       60
     repeatsame:
       3
       3
       3
     wait:
       0:
         0
       1:
         0
         60
         60
         60
       2:
         0
         60
         60
         60
         60
     waitdel:
   condition:
     0          DOIF_time($hash,0,1,$wday,$hms) and ReadingValDoIf($hash,'Lichtsensor','brightness') > 35
     1          DOIF_time($hash,2,3,$wday,$hms) and ReadingValDoIf($hash,'WETTER.klima','temperature') > 26
     2          DOIF_time($hash,4,5,$wday,$hms) and ReadingValDoIf($hash,'Lichtsensor','brightness') < 40
   days:
   devices:
     0           Lichtsensor
     1           WETTER.klima
     2           Lichtsensor
     all         Lichtsensor WETTER.klima
   do:
     0:
       0            set Rollo_Gruppe 0, ({Log 1, "Rollos auf bei 35% Licht"})
     1:
       0            set teleBot send "ACHTUNG! Die Rollos schliessen gleich.",  IF ([WOHN.garten] eq "closed") (set Rollo_Garten_tuer on), set Rollo_Garten_links on, set Rollo_Garten_rechts on, ({Log 1, "Rollos zu bei über 26°C"})
     2:
       0            set teleBot send "ACHTUNG! Die Rollos schliessen gleich.", IF ([WOHN.garten] eq "closed") (set Rollo_Garten_tuer on), set Rollo_Garten_links on, set Rollo_Garten_rechts on, set Rollo_Sofa on, ({Log 1, "Rollos zu bei 40% Licht"})
     3:
   helper:
     event      battery: ok,brightness: 254,cover: closed
     globalinit 1
     last_timer 6
     sleepdevice WETTER.klima
     sleepsubtimer -1
     sleeptimer -1
     timerdev   WETTER.klima
     timerevent T: 29.7 H: 34,temperature: 29.7
     triggerDev Lichtsensor
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: WETTER.klima
       state: cmd_2
     timerevents:
       T: 29.7 H: 34
       temperature: 29.7
     timereventsState:
       state: T: 29.7 H: 34
       temperature: 29.7
     triggerEvents:
       battery: ok
       brightness: 254
       cover: closed
     triggerEventsState:
       battery: ok
       brightness: 254
       cover: closed
   internals:
   interval:
     0          -1
     1          0
     2          -1
     3          2
     4          -1
     5          4
   intervalfunc:
   itimer:
   localtime:
     0          1532210460
     1          1532253540
     2          1532253600
     3          1532210340
     4          1532253600
     5          1532210340
   readings:
     0           Lichtsensor:brightness
     1           WETTER.klima:temperature
     2           Lichtsensor:brightness
     all         Lichtsensor:brightness WETTER.klima:temperature
   realtime:
     0          00:01:00
     1          11:59:00
     2          12:00:00
     3          23:59:00
     4          12:00:00
     5          23:59:00
   time:
     0          00:01:00
     1          11:59:00
     2          12:00:00
     3          23:59:00
     4          12:00:00
     5          23:59:00
   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
   timers:
     0           0  1
     1           2  3
     2           4  5
   trigger:
   triggertime:
     1532210340:
       localtime  1532210340
       hash:
     1532210460:
       localtime  1532210460
       hash:
     1532253540:
       localtime  1532253540
       hash:
     1532253600:
       localtime  1532253600
       hash:
   uiState:
   uiTable:
Attributes:
   icon       helper_doif
   repeatcmd  60:60:60
   repeatsame 3:3:3
   room       00_Aussen,01_Wohnzimmer
   wait       0:0,60,60,60:0,60,60,60,60

czcbe

#2
Stichwort "Befehlssequenzen". Dein Befehlsblock mit mehreren Befehlen muss in einzelne sog. Befehlssequenzen aufgesplittet werden, auf welchen dann jeweils ein Wait angewendet wird...

https://commandref.fhem.de/commandref_DE.html#DOIF_wait
FHEM 5.9 mit TabletUI | Pagebuttonmenü | Win2012R2 | Lubuntu 18.04 | Load-Balancing/Failover 2xFHEM | cygwin | nanoCUL 433 | Harmony Hub | IT Funksteckdosen | Squeezebox-Server (LMS) | Kodi | Sprachsteuerung | Webcams | Wetteransage | Telegram Bot | Presence-Script | Winconnect-Powershell

Loki

#3
Ach Mensch... Soweit war ich gestern schon! Hatte alle Sets schön geklammert, aber irgendwo war ein Fehler und beim Speichern hat FHEM immer gemeckert. Da dachte ich es wäre alles falsch.

Nun nochmal schön von 0 an neu geschrieben und es läuft genau so wie gewünscht!

Danke für den Hinweis!

Eine Rückfrage habe ich aber noch:

Kann ich repeatcmd und repeatsame genau so wie wait auf Befehle einer Befehlskette herunterbrechen?
Also in etwas so:

repeatcmd 3:0,3,3,3:0,3,3,3,3

Damian

Zitat von: Loki am 21 Juli 2018, 17:51:46
Ach Mensch... Soweit war ich gestern schon! Hatte alle Sets schön geklammert, aber irgendwo war ein Fehler und beim Speichern hat FHEM immer gemeckert. Da dachte ich es wäre alles falsch.

Nun nochmal schön von 0 an neu geschrieben und es läuft genau so wie gewünscht!

Danke für den Hinweis!

Eine Rückfrage habe ich aber noch:

Kann ich repeatcmd und repeatsame genau so wie wait auf Befehle einer Befehlskette herunterbrechen?
Also in etwas so:

repeatcmd 3:0,3,3,3:0,3,3,3,3

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