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?
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
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 (https://commandref.fhem.de/commandref_DE.html#DOIF_wait)
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
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.