seit dem ich do always eingefügt habe, werden meine Aktionen nicht mehr ausgeführt. Was stimmt daran nicht ?
([residents] eq "home") (set Modus_RL Auto)
DOELSEIF ([residents] eq "home" and (Fr-So[23:00-09:00])) (set Modus_RL AUS)
DOELSEIF ([residents] eq "absent") (set Modus_RL Away)
DOELSEIF ([residents] eq "gone") (set Modus_RL Holiday)
DOELSEIF (set Modus_RL AUS)
([Modus_RL] eq "Auto" and ([[du_WZ.Jalousie.Rechts.Up_WT]|8] or [[du_WZ.Jalousie.Rechts.Up_WE]|7])) (set WZ.Jalousie.Rechts 100)
DOELSEIF ([Modus_RL] eq "Auto" and ([[du_WZ.Jalousie.Rechts.Down]|8] or [[du_WZ.Jalousie.Rechts.Down]|7])) (set WZ.Jalousie.Rechts 0)
DOELSEIF ([Modus_RL] eq "Holiday" and [Tageslicht] eq "hell") (set WZ.Jalousie.Rechts 15)
DOELSEIF ([Modus_RL] eq "Holiday" and [Tageslicht] eq "dunkel") (set WZ.Jalousie.Rechts 0)
DOELSEIF ([Modus_RL] eq "Away" and [Tageslicht] eq "hell") (set WZ.Jalousie.Rechts 15)
DOELSEIF ([Modus_RL] eq "Away" and [Tageslicht] eq "dunkel") (set WZ.Jalousie.Rechts 0)
DOELSEIF ([Modus_RL] eq "XMas" and ([[du_WZ.Jalousie.Rechts.Up_WT]|8] or [[du_WZ.Jalousie.Rechts.Up_WE]|7])) (set WZ.Jalousie.Rechts 100)
DOELSEIF ([Modus_RL] eq "XMas" and [Tageslicht] eq "dunkel") (set WZ.Jalousie.Rechts 0)
bei beiden ist das attribut do always drin.
Ist der Resident absent sollte eigentlich das Rollo auf 15 gesetzt werden.
DOELSEIF ([Modus_RL] eq "Away" and [Tageslicht] eq "hell") (set WZ.Jalousie.Rechts 15)
wurde aber nicht.
Muss ich überhaupt do always nehmen ?
ZitatMuss ich überhaupt do always nehmen ?
Wenn eine Bedingung mehr als einmal direkt nacheinander wahr werden darf und schalten soll, dann ja, sonst nicht.
dann wäre das always ja eigentlich richtig.
poste doch mal ein list wenn es nicht gegangen ist aber hätte sollen. da sieht man die Zustände und events...
Gruß Otto
Erklärt das Ganze nicht wirklich, aber im ersten DOIF sind ein paar Unsauberkeiten:
1.) Du frägst einmal auf "home", einmal auf "home" und weitere Bedingungen ab - Die Zweige sollten eindeutig sein, sonst kann es zu komischem Verhalten kommen, je nachdem in welche Status sich das DOIF gerade befindet und ob do always gesetzt ist oder nicht.
2.) Das letzte DOELSEIF im ersten DOIF ist falsch, die Bedingung fehlt (eigentlich müsste das ein DOELSE sein)
Ist es dann eher ratsam, wenn ich neben der home Abfrage dann auch jeweils die gegeteilige Zeitangabe mit abfrage, um es eindeutiger zu machen ?
([residents] eq "home" and (So-Fr[09:30-22:30])) (set Modus_RL Auto)
DOELSEIF ([residents] eq "home" and (Fr-So[23:00-09:00])) (set Modus_RL AUS)
DOELSEIF ([residents] eq "absent") (set Modus_RL Away)
DOELSEIF ([residents] eq "gone") (set Modus_RL Holiday)
DOELSE (set Modus_RL AUS)
Ist der Syntax deiner Zeitangabe überhaupt richtig? Ich habe beim ersten mal nichts gesagt, weil sich bei DOIF ja alle Nasen lang was ändert ..
Aber aktuelle Doku:
ZitatWochentagsteuerung back
Hinter der Zeitangabe kann ein oder mehrere Wochentage getrennt mit einem Pipezeichen | angegeben werden. Die Syntax lautet:
[<time>|012345678] 0-8 entspricht: 0-Sonntag, 1-Montag, ... bis 6-Samstag sowie 7 für Wochenende und Feiertage (entspricht $we) und 8 für Arbeitstage (entspricht !$we)
alternativ mit Buchstaben-Kürzeln:
[<time>|So Mo Di Mi Do Fr Sa WE AT] WE entspricht der Ziffer 7 und AT der Ziffer 8
Edit: Naja ich habe es mal probiert, Scheint die Doku nicht auf dem aktuellen Entwicklungsstand ;)
Er nimmt es und setzt Timer
Gruß Otto
Zitat von: Otto123 am 10 März 2018, 20:47:08
poste doch mal ein list wenn es nicht gegangen ist aber hätte sollen. da sieht man die Zustände und events...
das wäre immer noch hilfreich....
andere frage:
warum baust du "do always" ein?
hat irgendwas nicht funktioniert?
lief es vorher??
soll nicht bedeuten, das es falsch ist "do always" zu benutzen. will nur den grund von dir verstehen? ;)
vielleicht habe ich auch den Sinn von do always nicht verstanden.
Zitat von: en-trust am 13 März 2018, 13:02:43
vielleicht habe ich auch den Sinn von do always nicht verstanden.
das kann ich nicht beurteilen, aber genau deshalb frage ich nach :)
das komplette list bist du noch schuldig.
hier mal das list des Modus Rolladen der derzeit vermutlich wegen der zusätzlichen Zeitangabe nicht funktioniert.
Internals:
CFGFN ./FHEM/fhem_activeactors.cfg
DEF ([residents] eq "home") (set Modus_RL Auto)
DOELSEIF ([residents] eq "home" and (Fr-So[23:00-09:00])) (set Modus_RL AUS)
DOELSEIF ([residents] eq "absent") (set Modus_RL Away)
DOELSEIF ([residents] eq "gone") (set Modus_RL Holiday)
DOELSE (set Modus_RL AUS)
NAME Modus_RL.Anwesenheit
NR 164
NTFY_ORDER 50-Modus_RL.Anwesenheit
STATE cmd_1
TYPE DOIF
READINGS:
2018-03-15 19:22:42 Device residents
2018-03-13 13:29:18 cmd 1
2018-03-13 13:29:18 cmd_event residents
2018-03-13 13:29:18 cmd_nr 1
2018-03-15 19:22:42 e_residents_STATE home
2018-03-15 17:59:26 error condition c02: Bareword "Fr" not allowed while "strict subs" in use, line 1.
2018-03-13 12:08:39 mode enabled
2018-03-13 13:29:18 state cmd_1
2018-03-15 09:00:00 timer_01_c02 15.03.2018 23:00:00
2018-03-15 09:00:00 timer_02_c02 16.03.2018 09:00:00
2018-03-13 14:34:53 wait_timer no timer
Regex:
condition:
0 InternalDoIf($hash,'residents','STATE') eq "home"
1 InternalDoIf($hash,'residents','STATE') eq "home" and (Fr-SoDOIF_time($hash,0,1,$wday,$hms))
2 InternalDoIf($hash,'residents','STATE') eq "absent"
3 InternalDoIf($hash,'residents','STATE') eq "gone"
days:
devices:
0 residents
1 residents
2 residents
3 residents
all residents
do:
0:
0 set Modus_RL Auto
1:
0 set Modus_RL AUS
2:
0 set Modus_RL Away
3:
0 set Modus_RL Holiday
4:
0 set Modus_RL AUS
helper:
DOIF_Readings_events
DOIF_eventas
event durTimerPresence_cr: 83,durTimerPresence: 01:23:14
globalinit 1
last_timer 2
sleeptimer -1
timerdev residents
timerevent durTimerPresence_cr: 83,durTimerPresence: 01:23:14
triggerDev residents
timerevents:
durTimerPresence_cr: 83
durTimerPresence: 01:23:14
timereventsState:
durTimerPresence_cr: 83
durTimerPresence: 01:23:14
triggerEvents:
durTimerPresence_cr: 83
durTimerPresence: 01:23:14
triggerEventsState:
durTimerPresence_cr: 83
durTimerPresence: 01:23:14
internals:
0 residents:STATE
1 residents:STATE
2 residents:STATE
3 residents:STATE
all residents:STATE
interval:
0 -1
1 0
itimer:
localtime:
0 1521151200
1 1521187200
readings:
realtime:
0 23:00:00
1 09:00:00
time:
0 23:00:00
1 09:00:00
timeCond:
0 1
1 1
timer:
0 0
1 0
timers:
1 0 1
trigger:
triggertime:
1521151200:
localtime 1521151200
hash:
1521187200:
localtime 1521187200
hash:
uiState:
uiTable:
Attributes:
group Anwesenheit
room Automation
wait 900:180
Der Heizungsmodus FHZ klappt wenn ich away bin.
([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)
RL bleibt hingegen auf Auto
([residents] eq "home") (set Modus_RL Auto)
DOELSEIF ([residents] eq "home" and (Fr-So[23:00-09:00])) (set Modus_RL AUS)
DOELSEIF ([residents] eq "absent") (set Modus_RL Away)
DOELSEIF ([residents] eq "gone") (set Modus_RL Holiday)
DOELSE (set Modus_RL AUS)
Da ist doch was mit dem Syntax faul ->
condition c02: Bareword "Fr" not allowed while "strict subs" in use, line 1.
das bezieht sich darauf -> DOELSEIF ([residents] eq "home" and (Fr-So[23:00-09:00])) (set Modus_RL AUS)
Eventuell so: [Fr-So|23:00-09:00]
Siehe mein Beitrag #6 dort habe ich die Definition probiert und die meckert nicht, aber die Ausführung scheint dann zu meckern.
Also ich würde es nach commandref machen
[23:00-09:00|Fr Sa So]
Gruß Otto
Zitat
define di_clock_radio DOIF ([06:30|Mo Di Mi] or [08:30|Do Fr Sa So]) (set radio on) DOELSEIF ([08:00|Mo Di Mi] or [09:30|Do Fr Sa So]) (set radio off)
Beispiel aus der Commandref
Der Umstieg vom WeekdayTimer ist nicht immer leicht define shutter WeekdayTimer bath 12345|05:20|up 12345|20:30|down