Hallo.
Ich möchte mehrere DOF´s schalten und habe folgenden Code:
([04:00-05:40|8] and [myCalView:today_001_summary] eq "Arbeit Torsten Frueh") (set Oldesloe_0430 start) DOELSE (set Oldesloe_0430 stop)
DOELSEIF
([06:50-08:40|7] and [myCalView:today_001_summary] eq "Arbeit Torsten WE") (set Oldesloe_0730 start) DOELSE (set Oldesloe_0730 stop)
DOELSEIF
([10:00-12:40|8] and [myCalView:today_001_summary] eq "Arbeit Torsten Spaet") (set Oldesloe_1200 start) DOELSE (set Oldesloe_1200 stop)
DOELSEIF
([13:00-15:40|8] and [myCalView:today_001_summary] eq "Arbeit Torsten Frueh") (set Rahlstedt_1400 start) DOELSE (set Rahlstedt_1400 stop)
DOELSEIF
([17:30-19:40|7] and [myCalView:today_001_summary] eq "Arbeit Torsten WE") (set Rahlstedt_1830 start) DOELSE (set Rahlstedt_1830 stop)
DOELSEIF
([20:30-22:40|8] and [myCalView:today_001_summary] eq "Arbeit Torsten Spaet") (set Rahlstedt_2155 start) DOELSE (set Rahlstedt_2155 stop
Leider wurde heute am Samstag nichts geschaltet, obwohl eigentlich alles erfüllt sein müßte.
Könnt Ihr mir sagen, ob ich irgendwo etwas falsch geschrieben habe in der DOIF Anweisung?
List DOIF:
Internals:
DEF ([04:00-05:40|8] and [myCalView:today_001_summary] eq "Arbeit Torsten Frueh") (set Oldesloe_0430 start) DOELSE (set Oldesloe_0430 stop)
DOELSEIF
([06:50-08:40|7] and [myCalView:today_001_summary] eq "Arbeit Torsten WE") (set Oldesloe_0730 start) DOELSE (set Oldesloe_0730 stop)
DOELSEIF
([10:00-12:40|8] and [myCalView:today_001_summary] eq "Arbeit Torsten Spaet") (set Oldesloe_1200 start) DOELSE (set Oldesloe_1200 stop)
DOELSEIF
([13:00-15:40|8] and [myCalView:today_001_summary] eq "Arbeit Torsten Frueh") (set Rahlstedt_1400 start) DOELSE (set Rahlstedt_1400 stop)
DOELSEIF
([17:30-19:40|7] and [myCalView:today_001_summary] eq "Arbeit Torsten WE") (set Rahlstedt_1830 start) DOELSE (set Rahlstedt_1830 stop)
DOELSEIF
([20:30-22:40|8] and [myCalView:today_001_summary] eq "Arbeit Torsten Spaet") (set Rahlstedt_2155 start) DOELSE (set Rahlstedt_2155 stop)
NAME DBPlan_AnAus
NR 283
NTFY_ORDER 50-DBPlan_AnAus
STATE cmd_2
TYPE DOIF
Readings:
2016-07-09 19:45:00 Device myCalView
2016-07-09 06:48:29 cmd 2
2016-07-09 06:48:29 cmd_event myCalView
2016-07-09 06:48:29 cmd_nr 2
2016-07-09 19:45:00 e_myCalView_today_001_summary Arbeit Torsten WE
2016-07-09 06:48:29 state cmd_2
2016-07-09 06:48:20 timer_1_c1 10.07.2016 04:00:00|8
2016-07-09 06:48:20 timer_2_c1 10.07.2016 05:40:00|8
Condition:
0 DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"8") and ReadingValDoIf($hash,'myCalView','today_001_summary','','',AttrVal($hash->{NAME},'notexist',undef)) eq "Arbeit Torsten Frueh"
Days:
0 8
1 8
Devices:
0 myCalView
all myCalView
Do:
0:
0 set Oldesloe_0430 start
1:
0 set Oldesloe_0430 stop
Helper:
event t_001_bdate: 27.06.2016,t_001_btime: 10:00:00,t_001_summary: Arbeit Torsten spät,t_001_source: Arbeit_Torsten,t_001_edate: 27.06.2016,t_001_etime: 11:00:00,t_001_mode: next,t_002_bdate: 28.06.2016,t_002_btime: 13:00:00,t_002_summary: Arbeit Torsten Spaet,t_002_source: Arbeit_Torsten,t_002_location: abcd,t_002_edate: 28.06.2016,t_002_etime: 21:30:00,t_002_mode: next,t_003_bdate: 05.07.2016,t_003_btime: 05:00:00,t_003_summary: Arbeit Torsten Frueh,t_003_source: Arbeit_Torsten,t_003_location: abcd,t_003_edate: 05.07.2016,t_003_etime: 13:45:00,t_003_mode: next,today_001_bdate: heute,today_001_btime: 07:45:00,today_001_summary: Arbeit Torsten WE,today_001_source: Arbeit_Torsten,today_001_edate: 09.07.2016,today_001_etime: 18:30:00,today_001_mode: next,t: 3 td: 1 tm: 0,c-term: 3,c-tomorrow: 0,c-today: 1
globalinit 1
last_timer 2
sleeptimer -1
timerdev myCalView
timerevent t_001_bdate: 27.06.2016,t_001_btime: 10:00:00,t_001_summary: Arbeit Torsten spät,t_001_source: Arbeit_Torsten,t_001_edate: 27.06.2016,t_001_etime: 11:00:00,t_001_mode: next,t_002_bdate: 28.06.2016,t_002_btime: 13:00:00,t_002_summary: Arbeit Torsten Spaet,t_002_source: Arbeit_Torsten,t_002_location: abcd,t_002_edate: 28.06.2016,t_002_etime: 21:30:00,t_002_mode: next,t_003_bdate: 05.07.2016,t_003_btime: 05:00:00,t_003_summary: Arbeit Torsten Frueh,t_003_source: Arbeit_Torsten,t_003_location: abcd,t_003_edate: 05.07.2016,t_003_etime: 13:45:00,t_003_mode: next,today_001_bdate: heute,today_001_btime: 07:45:00,today_001_summary: Arbeit Torsten WE,today_001_source: Arbeit_Torsten,today_001_edate: 09.07.2016,today_001_etime: 18:30:00,today_001_mode: next,t: 3 td: 1 tm: 0,c-term: 3,c-tomorrow: 0,c-today: 1
triggerDev myCalView
timerevents:
t_001_bdate: 27.06.2016
t_001_btime: 10:00:00
t_001_summary: Arbeit Torsten spät
t_001_source: Arbeit_Torsten
t_001_edate: 27.06.2016
t_001_etime: 11:00:00
t_001_mode: next
t_002_bdate: 28.06.2016
t_002_btime: 13:00:00
t_002_summary: Arbeit Torsten Spaet
t_002_source: Arbeit_Torsten
t_002_location: abcd
t_002_edate: 28.06.2016
t_002_etime: 21:30:00
t_002_mode: next
t_003_bdate: 05.07.2016
t_003_btime: 05:00:00
t_003_summary: Arbeit Torsten Frueh
t_003_source: Arbeit_Torsten
t_003_location: abcd
t_003_edate: 05.07.2016
t_003_etime: 13:45:00
t_003_mode: next
today_001_bdate: heute
today_001_btime: 07:45:00
today_001_summary: Arbeit Torsten WE
today_001_source: Arbeit_Torsten
today_001_edate: 09.07.2016
today_001_etime: 18:30:00
today_001_mode: next
t: 3 td: 1 tm: 0
c-term: 3
c-tomorrow: 0
c-today: 1
timereventsState:
t_001_bdate: 27.06.2016
t_001_btime: 10:00:00
t_001_summary: Arbeit Torsten spät
t_001_source: Arbeit_Torsten
t_001_edate: 27.06.2016
t_001_etime: 11:00:00
t_001_mode: next
t_002_bdate: 28.06.2016
t_002_btime: 13:00:00
t_002_summary: Arbeit Torsten Spaet
t_002_source: Arbeit_Torsten
t_002_location: abcd
t_002_edate: 28.06.2016
t_002_etime: 21:30:00
t_002_mode: next
t_003_bdate: 05.07.2016
t_003_btime: 05:00:00
t_003_summary: Arbeit Torsten Frueh
t_003_source: Arbeit_Torsten
t_003_location: abcd
t_003_edate: 05.07.2016
t_003_etime: 13:45:00
t_003_mode: next
today_001_bdate: heute
today_001_btime: 07:45:00
today_001_summary: Arbeit Torsten WE
today_001_source: Arbeit_Torsten
today_001_edate: 09.07.2016
today_001_etime: 18:30:00
today_001_mode: next
state: t: 3 td: 1 tm: 0
c-term: 3
c-tomorrow: 0
c-today: 1
triggerEvents:
t_001_bdate: 27.06.2016
t_001_btime: 10:00:00
t_001_summary: Arbeit Torsten spät
t_001_source: Arbeit_Torsten
t_001_edate: 27.06.2016
t_001_etime: 11:00:00
t_001_mode: next
t_002_bdate: 28.06.2016
t_002_btime: 13:00:00
t_002_summary: Arbeit Torsten Spaet
t_002_source: Arbeit_Torsten
t_002_location: abcd
t_002_edate: 28.06.2016
t_002_etime: 21:30:00
t_002_mode: next
t_003_bdate: 05.07.2016
t_003_btime: 05:00:00
t_003_summary: Arbeit Torsten Frueh
t_003_source: Arbeit_Torsten
t_003_location: abcd
t_003_edate: 05.07.2016
t_003_etime: 13:45:00
t_003_mode: next
today_001_bdate: heute
today_001_btime: 07:45:00
today_001_summary: Arbeit Torsten WE
today_001_source: Arbeit_Torsten
today_001_edate: 09.07.2016
today_001_etime: 18:30:00
today_001_mode: next
t: 3 td: 1 tm: 0
c-term: 3
c-tomorrow: 0
c-today: 1
triggerEventsState:
t_001_bdate: 27.06.2016
t_001_btime: 10:00:00
t_001_summary: Arbeit Torsten spät
t_001_source: Arbeit_Torsten
t_001_edate: 27.06.2016
t_001_etime: 11:00:00
t_001_mode: next
t_002_bdate: 28.06.2016
t_002_btime: 13:00:00
t_002_summary: Arbeit Torsten Spaet
t_002_source: Arbeit_Torsten
t_002_location: abcd
t_002_edate: 28.06.2016
t_002_etime: 21:30:00
t_002_mode: next
t_003_bdate: 05.07.2016
t_003_btime: 05:00:00
t_003_summary: Arbeit Torsten Frueh
t_003_source: Arbeit_Torsten
t_003_location: abcd
t_003_edate: 05.07.2016
t_003_etime: 13:45:00
t_003_mode: next
today_001_bdate: heute
today_001_btime: 07:45:00
today_001_summary: Arbeit Torsten WE
today_001_source: Arbeit_Torsten
today_001_edate: 09.07.2016
today_001_etime: 18:30:00
today_001_mode: next
state: t: 3 td: 1 tm: 0
c-term: 3
c-tomorrow: 0
c-today: 1
Internals:
Interval:
0 -1
1 0
Itimer:
Localtime:
0 1468116000
1 1468122000
Readings:
0 myCalView:today_001_summary
all myCalView:today_001_summary
Realtime:
0 04:00:00
1 05:40:00
Regexp:
0:
All:
State:
Time:
0 04:00:00
1 05:40:00
Timecond:
0 0
1 0
Timer:
0 0
1 0
Timers:
0 0 1
Trigger:
Triggertime:
1468116000:
localtime 1468116000
Hash:
1468122000:
localtime 1468122000
Hash:
Attributes:
room ÖPNV
Vielen Dank
Hoffi
Du bist sehr grosszügig im Einsatz von DOELSE. Woraus leitest Du die mehrfache Verwendung in einem DOIF ab?
Zur Erinnerung, die Syntax aus der Befehlsreferenz:
define <name> DOIF (<Bedingung>) (<Befehle>) DOELSEIF (<Bedingung>) (<Befehle>) DOELSEIF ... DOELSE (<Befehle>)
Das DOIF endet nach dem ersten DOELSE.
mmh. macht Sinn.
Das mit dem "Schluß" nach dem DOELSE ist mir gar nicht so bewusst gewesen.
Dann müßte ich also entweder, alle als einzelne DOIF´s oder ganz zum Schluß ein
DOELSE set Oldesloe_.* stop; Rahlstedt_.* stop
setzen?
Hoffi
Zitat von: Ellert am 10 Juli 2016, 06:58:29
Du bist sehr grosszügig im Einsatz von DOELSE. Woraus leitest Du die mehrfache Verwendung in einem DOIF ab?
Zur Erinnerung, die Syntax aus der Befehlsreferenz:
define <name> DOIF (<Bedingung>) (<Befehle>) DOELSEIF (<Bedingung>) (<Befehle>) DOELSEIF ... DOELSE (<Befehle>)
Das DOIF endet nach dem ersten DOELSE.
da steht es doch..... DOELSEIF so viele wie du willst. DOELSE ist optional, dass muss nicht. Der DOELSE-Fall wird immer dann wahr, wenn keine der anderen Bedingungen die im DOIF oder DOELSEIF stehen zutreffen. Da muss man halt selber wissen, ob man das haben möchte oder nicht. Das erklärt dann ja auch warum nur
ein DOELSE pro DOIF geht.
Eine generelle Frage...
DO IF... ist eine Stapelverarbeitung, arbeitet von oben nach unten.
Wenn sich eine Bedingung ändert springt er zum nächsten Else bis fhem unten angekommen ist. Wie bekommt man es aber hin, dass fhem immer wieder von vorne anfängt ?
attr DBPlan_AnAus do always
Zitat von: en-trust am 28 März 2018, 09:47:38
Eine generelle Frage...
DO IF... ist eine Stapelverarbeitung, arbeitet von oben nach unten.
Wenn sich eine Bedingung ändert springt er zum nächsten Else bis fhem unten angekommen ist. Wie bekommt man es aber hin, dass fhem immer wieder von vorne anfängt ?
Hi,
ich würde das nicht als Stapelverarbeitung benennen. Und FHEM arbeitet Eventbasiert und nicht in Schleifen.
Erzeugt eines der im DOIF beteiligten Devices einen Event wird das DOIF getriggert, ist eine Bedingung erfüllt (DOIF oder DOELSEIF Zweig) ist dort Ende.
Ist keine erfüllt wird eine vorhandene DOELSE abgearbeitet, ansonsten passiert nichts.
Beim nächsten Event geht das Spiel von vorn los.
Siehe Doku (der "langweilige" Text am Anfang) ;D -> https://fhem.de/commandref_DE.html#DOIF
Gruß Otto
Otto war schneller
do always hab ich bereits drin. Macht aber nicht was es soll.
([HomeOffice.OnOff] eq "on") (set Modus_FHZ Auto)
DOELSEIF ([residents] eq "home" and [HomeOffice.OnOff] ne "on") (set Modus_FHZ Auto)
DOELSEIF ([residents] eq "absent" and [HomeOffice.OnOff] ne "on") (set Modus_FHZ Away)
DOELSEIF ([residents] eq "gone" and [HomeOffice.OnOff] ne "on") (set Modus_FHZ Holiday)
DOELSEIF ([HomeOffice.OnOff] ne "on") (set Modus_FHZ AUS)
DOELSE (set Modus_FHZ AUS)
Habe folgendes versucht. Habe manuell mal residents auf absent gestellt, springt auf cmd_3 dann wieder zurück auf home, springt auf cmd_6
List...
Internals:
CFGFN ./FHEM/fhem_activeactors.cfg
DEF ([HomeOffice.OnOff] eq "on") (set Modus_FHZ Auto)
DOELSEIF ([residents] eq "home" and [HomeOffice.OnOff] ne "on") (set Modus_FHZ Auto)
DOELSEIF ([residents] eq "absent" and [HomeOffice.OnOff] ne "on") (set Modus_FHZ Away)
DOELSEIF ([residents] eq "gone" and [HomeOffice.OnOff] ne "on") (set Modus_FHZ Holiday)
DOELSEIF ([HomeOffice.OnOff] ne "on") (set Modus_FHZ AUS)
DOELSE (set Modus_FHZ AUS)
NAME Modus_FHZ.Anwesenheit
NR 269
NTFY_ORDER 50-Modus_FHZ.Anwesenheit
STATE cmd_6
TYPE DOIF
Helper:
DBLOG:
cmd:
logdb:
TIME 1522225901.55681
VALUE 6
cmd_event:
logdb:
TIME 1522225901.55681
VALUE residents
cmd_nr:
logdb:
TIME 1522225901.55681
VALUE 6
mode:
logdb:
TIME 1522222923.01689
VALUE enabled
state:
logdb:
TIME 1522225901.55681
VALUE cmd_6
wait_timer:
logdb:
TIME 1522224278.92304
VALUE no timer
READINGS:
2018-03-28 10:31:41 Device residents
2018-03-28 10:31:41 cmd 6
2018-03-28 10:31:41 cmd_event residents
2018-03-28 10:31:41 cmd_nr 6
2018-03-28 10:31:41 e_residents_STATE home
2018-03-28 09:42:02 mode enabled
2018-03-28 10:31:41 state cmd_6
2018-03-28 10:04:38 wait_timer no timer
Regex:
condition:
0 InternalDoIf($hash,'HomeOffice.OnOff','STATE') eq "on"
1 InternalDoIf($hash,'residents','STATE') eq "home" and InternalDoIf($hash,'HomeOffice.OnOff','STATE') ne "on"
2 InternalDoIf($hash,'residents','STATE') eq "absent" and InternalDoIf($hash,'HomeOffice.OnOff','STATE') ne "on"
3 InternalDoIf($hash,'residents','STATE') eq "gone" and InternalDoIf($hash,'HomeOffice.OnOff','STATE') ne "on"
4 InternalDoIf($hash,'HomeOffice.OnOff','STATE') ne "on"
devices:
0 HomeOffice.OnOff
1 residents HomeOffice.OnOff
2 residents HomeOffice.OnOff
3 residents HomeOffice.OnOff
4 HomeOffice.OnOff
all HomeOffice.OnOff residents
do:
0:
0 set Modus_FHZ Auto
1:
0 set Modus_FHZ Auto
2:
0 set Modus_FHZ Away
3:
0 set Modus_FHZ Holiday
4:
0 set Modus_FHZ AUS
5:
0 set Modus_FHZ AUS
helper:
DOIF_Readings_events
DOIF_eventas
event durTimerPresence_cr: 56,durTimerPresence: 00:56:09
globalinit 1
last_timer 0
sleepdevice Modus_FHZ.Anwesenheit
sleepsubtimer 0
sleeptimer -1
timerdev residents
timerevent durTimerPresence_cr: 56,durTimerPresence: 00:56:09
triggerDev residents
timerevents:
durTimerPresence_cr: 56
durTimerPresence: 00:56:09
timereventsState:
durTimerPresence_cr: 56
durTimerPresence: 00:56:09
triggerEvents:
durTimerPresence_cr: 56
durTimerPresence: 00:56:09
triggerEventsState:
durTimerPresence_cr: 56
durTimerPresence: 00:56:09
internals:
0 HomeOffice.OnOff:STATE
1 residents:STATE HomeOffice.OnOff:STATE
2 residents:STATE HomeOffice.OnOff:STATE
3 residents:STATE HomeOffice.OnOff:STATE
4 HomeOffice.OnOff:STATE
all HomeOffice.OnOff:STATE residents:STATE
itimer:
readings:
trigger:
uiState:
uiTable:
Attributes:
do always
group Anwesenheit
room Automation
wait 900:180
ZitatHabe manuell mal residents auf absent gestellt, springt auf cmd_3 dann wieder zurück auf home, springt auf cmd_6
und die 2. Bedingung?
Momentan steht er auf cmd_2, weil HomeOffice auf off und Resident auf home stehen. Dann habe ich HomeOffice auf On gesetzt und er sprach auf cmd_1.
Dann habe ich resident auf absent gesetzt und fhem sprach auf cmd_6, obwohl HomeOffice On ist.
Internals:
CFGFN ./FHEM/fhem_activeactors.cfg
DEF ([HomeOffice.OnOff] eq "on") (set Modus_FHZ Auto)
DOELSEIF ([residents] eq "home" and [HomeOffice.OnOff] ne "on") (set Modus_FHZ Auto)
DOELSEIF ([residents] eq "absent" and [HomeOffice.OnOff] ne "on") (set Modus_FHZ Away)
DOELSEIF ([residents] eq "gone" and [HomeOffice.OnOff] ne "on") (set Modus_FHZ Holiday)
DOELSEIF ([HomeOffice.OnOff] ne "on") (set Modus_FHZ AUS)
DOELSE (set Modus_FHZ AUS)
NAME Modus_FHZ.Anwesenheit
NR 269
NTFY_ORDER 50-Modus_FHZ.Anwesenheit
STATE cmd_6
TYPE DOIF
Helper:
DBLOG:
cmd:
logdb:
TIME 1522239341.63453
VALUE 6
cmd_event:
logdb:
TIME 1522239341.63453
VALUE residents
cmd_nr:
logdb:
TIME 1522239341.63453
VALUE 6
mode:
logdb:
TIME 1522222923.01689
VALUE enabled
state:
logdb:
TIME 1522239341.63453
VALUE cmd_6
wait_timer:
logdb:
TIME 1522239281.18882
VALUE no timer
READINGS:
2018-03-28 14:15:41 Device residents
2018-03-28 14:15:41 cmd 6
2018-03-28 14:15:41 cmd_event residents
2018-03-28 14:15:41 cmd_nr 6
2018-03-28 14:14:08 e_HomeOffice.OnOff_STATE on
2018-03-28 14:15:41 e_residents_STATE absent
2018-03-28 09:42:02 mode enabled
2018-03-28 14:15:41 state cmd_6
2018-03-28 14:14:41 wait_timer no timer
Regex:
condition:
0 InternalDoIf($hash,'HomeOffice.OnOff','STATE') eq "on"
1 InternalDoIf($hash,'residents','STATE') eq "home" and InternalDoIf($hash,'HomeOffice.OnOff','STATE') ne "on"
2 InternalDoIf($hash,'residents','STATE') eq "absent" and InternalDoIf($hash,'HomeOffice.OnOff','STATE') ne "on"
3 InternalDoIf($hash,'residents','STATE') eq "gone" and InternalDoIf($hash,'HomeOffice.OnOff','STATE') ne "on"
4 InternalDoIf($hash,'HomeOffice.OnOff','STATE') ne "on"
devices:
0 HomeOffice.OnOff
1 residents HomeOffice.OnOff
2 residents HomeOffice.OnOff
3 residents HomeOffice.OnOff
4 HomeOffice.OnOff
all HomeOffice.OnOff residents
do:
0:
0 set Modus_FHZ Auto
1:
0 set Modus_FHZ Auto
2:
0 set Modus_FHZ Away
3:
0 set Modus_FHZ Holiday
4:
0 set Modus_FHZ AUS
5:
0 set Modus_FHZ AUS
helper:
DOIF_Readings_events
DOIF_eventas
event durTimerAbsence_cr: 1,durTimerAbsence: 00:01:00
globalinit 1
last_timer 0
sleepdevice HomeOffice.OnOff
sleepsubtimer 0
sleeptimer -1
timerdev residents
timerevent durTimerAbsence_cr: 1,durTimerAbsence: 00:01:00
triggerDev residents
timerevents:
durTimerAbsence_cr: 1
durTimerAbsence: 00:01:00
timereventsState:
durTimerAbsence_cr: 1
durTimerAbsence: 00:01:00
triggerEvents:
durTimerAbsence_cr: 1
durTimerAbsence: 00:01:00
triggerEventsState:
durTimerAbsence_cr: 1
durTimerAbsence: 00:01:00
internals:
0 HomeOffice.OnOff:STATE
1 residents:STATE HomeOffice.OnOff:STATE
2 residents:STATE HomeOffice.OnOff:STATE
3 residents:STATE HomeOffice.OnOff:STATE
4 HomeOffice.OnOff:STATE
all HomeOffice.OnOff:STATE residents:STATE
itimer:
readings:
trigger:
uiState:
uiTable:
Attributes:
do always
group Anwesenheit
room Automation
wait 900:180
Du fragst HomeOffice.OnOff auf on ab, schreibst aber HomeOffice ist On. Ich hoffe Du schreibst nur technisch unsauber.
Zitatsprach auf cmd_6, obwohl HomeOffice On ist.
Du hast in Deinen Bedingungen festgelegt: Wenn residents entspricht "absent" und HomeOffice.OnOff entspricht NICHT "on", dann...
Somit bleibt ihm ja nur cmd_6!
Es gibt da auch einen Unterschied zwischen Event und Zustand.
ZitatDann habe ich resident auf absent gesetzt
Das ist das Event.
Zitatobwohl HomeOffice On ist
Das ist der Zustand.
Moin
Endlich mal wieder ein gekaperter thread!
@en-trust: Hast du das wait 900:180 mit Absicht eingebaut? Ich weiss nicht was DOIF dann in der Zwischenzeit macht, sprich die 180 Sekunden bis es zu cmd_2 geht. Und das DOELSE schlaegt ja immer zu, wenn die anderen Bedingungen nicht erfuellt sind. DOalways scheint mir auch unnoetig zu sein, da Du ja immer sauber wechselst!
Gruss Christoph
ergänzend zum Beitrag von rabehd wollt ich noch sagen:
Es hält absolut fit wenn man in dem einen Zweig auf eq und im anderen auf ne testet.
Auch immer die Logiktabelle im Kopf haben (0 and irgendwas) ist immer 0 nur (1 and 1) ist 1 bzw: (1 or irgendwas) ist immer 1 nur (0 or 0) ist 0!
Was soll den wirklich das Ziel sein? Ich denke der Ansatz ist falsch:
Die erste Bedingung ist für mich fragwürdig ([HomeOffice.OnOff] eq "on") ich denke hier fehlt eine weitere Bedingung sonst behakt sich das immer mit den (jetzt falschen) Alternativen.
Wie gesagt: Er geht NICHT von oben nach unten durch, er bleibt beim Zweig mit der wahren Bedingung hängen!!!
Gruß Otto
Vielleicht ist auch mein Ansatz falsch oder es geht einfacher.
Ausgangsitutation war...
([residents] eq "home") (set Modus_FHZ Auto)
DOELSEIF ([residents] eq "absent") (set Modus_FHZ Away)
DOELSEIF ([residents] eq "gone") (set Modus_FHZ Holiday)
DOELSE (set Modus_FHZ AUS)
Das funktionierte auch soweit, bis mein A5 sich ständig vom Netz (trotz hping oder wlan Prüfung) abgemeldet hat und die Jalousie permanent schloss bzw in dem Fall die FHZ auf den away Modus ging.
Also habe ich einen dummy HomeOffice.OnOff erstellt, wo ich fhem explizit sage, dass ich wirklich zu Hause bin (Status = On) und er somit die Regeln außer Kraft setzen soll.
Vielleicht geht es auch mit disabled und enable, statt auf HomeOffice abzufragen ?
#HomeOffice.OnOff definieren
define HomeOffice.OnOff dummy
attr HomeOffice.OnOff room 3.2_Anwesenheit,Automation
attr HomeOffice.OnOff webCmd on:off
#HomeOffice.Modus.OnOff definieren
define HomeOffice.Modus.On notify HomeOffice.OnOff:on.* { fhem ("set Modus_FHZ disable; set Modus_RL disable") }
define HomeOffice.Modus.Off notify HomeOffice.OnOff:off.* { fhem ("set Modus_FHZ enable; set Modus_RL enable") }
Dann binde doch deinen festen dummy einfach in deine residents als Bewohner ein?
Man sollte die Ursache beheben und nicht die Symptome überdecken. Wenn Deine Anwesenheitserkennung nicht stabil ist, dann musst Du dort ran.
Bei mir schaltet Tasker auf den Handy die Anwesenheit, zusätzlich kann ich das noch per telegram und seit ein paar Wochen sind iButton die Hauptlösung.
Auf jeden Fall würde ich über Otto's Vorschlag nachdenken.