Hallo!
Ich wende mich mal mit meinem DOIf an euch, denn ich komme nun nach schon Monaten mit dem DOIF nicht so recht weiter und hoffe hier auf eure Hilfe.
hier erstmal das doif:
(([HomeStatus] eq "Anwesend") and ([HomeStatus:LastDevice] eq "Katja") and ([Katja:state] eq "present") and ([Steffen:state] eq "absent") and ([Eingangstuer] eq "locked"))
(set Eingangstuer open) ({system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:50")}) ({system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e speak:'Hallo Katja, schön das du wieder zu Hause bist, Wir haben in der Wohnung eine Temperatur von, [Heizung_Wohnzimmer:Temperatur],, grad ,, und heute gibt es noch , , [HF_GCalView:c-term] , , Termine , , und das wären , , [HF_GCalView:alleTermine] , ,'")}) ({system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:30")})
DOELSEIF (([HomeStatus] eq "Anwesend") and ([HomeStatus:LastDevice] eq "Steffen") and ([Steffen:state] eq "present") and ([Katja:state] eq "absent") and ([Eingangstuer] eq "locked"))
(set Eingangstuer open) ({system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:50")}) ({system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e speak:'Hallo Steffen, schön das du wieder zu Hause bist, Wir haben in der Wohnung eine Temperatur von, [Heizung_Wohnzimmer:Temperatur],, grad ,, und heute gibt es noch , , [HF_GCalView:c-term] , , Termine , , und das wären , , [HF_GCalView:alleTermine] , ,'")}) ({system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:30")})
DOELSEIF ((([Steffen:state] eq "present") and ([Katja:state] eq "present")) and ([Eingangstuer] eq "unlocked"))
(set Eingangstuer open)
DOELSEIF ([HomeStatus] eq "Abwesend")
(set Eingangstuer lock)
attr:
checkReadingEvent 0
wait 0,5,10,60:0,5,10,60:0:0:0
Readings:
READINGS:
2018-09-27 07:32:50 Device Eingangstuer
2018-09-27 07:33:55 cmd 2.4
2018-09-27 07:33:55 cmd_event HomeStatus
2018-09-27 07:33:55 cmd_nr 2
2018-09-27 07:33:55 cmd_seqnr 4
2018-09-27 07:32:50 e_Eingangstuer_STATE unlocked
2018-09-27 07:32:36 e_HomeStatus_LastDevice Steffen
2018-09-27 07:32:36 e_HomeStatus_STATE Anwesend
2018-09-27 07:32:36 e_Steffen_state present
2018-09-27 07:33:55 error {system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:30")}: -1
2018-09-27 07:23:44 mode enabled
2018-09-27 07:33:55 state cmd_2
2018-09-27 07:33:53 wait_timer no timer
Das Ziel ist eine Automatische Erkennung(G-Tag) und Tür Öffnung und die Ersten zwei DOIF abfragen funktionieren gut.
Ich komme nur an der Stelle nicht weiter das wenn "immer" jemand kurz absent(rausgeht) wird und gleich wieder present(wiederkommt) das cmd 3 ausgeführt wird egal wie oft!
Das Problem das wenn das cmd 3 einmal ausgeführt wird dann ich aber nochmal rausgehe und wieder komme nicht nochmal ausgeführt wird.
Ich habe es auch schon mit do-always ausprobiert aber dann öffnet Fhem in dauer schleife die Tür.
Vielleicht hat ja jemand von euch eine Idee?
Mfg Steffen
Zitat von: Steffen am 27 September 2018, 07:46:11Ich habe es auch schon mit do-always ausprobiert aber dann öffnet Fhem in dauer schleife die Tür.
Wahrscheinlich über cmd_3, weil in 1 und 2 wird es ja abgefangen (and ([Eingangstuer] eq "locked")).
Alternativ kannst du es mit einem leeren DOELSE versuchen.
Moin
Warum hast Du uns nicht ein list gegeben? Der zerstueckelte Abschnitt ist irgendwie doof zu lesen!
Was ich sehe, dass Du beim wait eins zuviel hast!? Ob das Probleme bringt weiss ich nicht.
Da Du es mehrmals ausfuehren willst, ist das do always schon wichtig. Lies aber noch mal https://fhem.de/commandref_DE.html#DOIF_repeatcmd
Ich werde nicht ganz schlau draus, aber ich denkr das ist das was du brauchst!
Gruss Christoph
Hallo!
Ok ich dachte eine "list" wäre unübersichtlicher aber reiche ich noch gerne nach:
Internals:
DEF (([HomeStatus] eq "Anwesend") and ([HomeStatus:LastDevice] eq "Katja") and ([Katja:state] eq "present") and ([Steffen:state] eq "absent") and ([Eingangstuer] eq "locked"))
(set Eingangstuer open) ({system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:50")}) ({system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e speak:'Hallo Katja, schön das du wieder zu Hause bist, Wir haben in der Wohnung eine Temperatur von, [Heizung_Wohnzimmer:Temperatur],, grad ,, und heute gibt es noch , , [HF_GCalView:c-term] , , Termine , , und das wären , , [HF_GCalView:alleTermine] , ,'")}) ({system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:30")})
DOELSEIF (([HomeStatus] eq "Anwesend") and ([HomeStatus:LastDevice] eq "Steffen") and ([Steffen:state] eq "present") and ([Katja:state] eq "absent") and ([Eingangstuer] eq "locked"))
(set Eingangstuer open) ({system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:50")}) ({system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e speak:'Hallo Steffen, schön das du wieder zu Hause bist, Wir haben in der Wohnung eine Temperatur von, [Heizung_Wohnzimmer:Temperatur],, grad ,, und heute gibt es noch , , [HF_GCalView:c-term] , , Termine , , und das wären , , [HF_GCalView:alleTermine] , ,'")}) ({system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:30")})
DOELSEIF ((([Steffen:state] eq "present") and ([Katja:state] eq "present")) and ([Eingangstuer] eq "unlocked"))
(set Eingangstuer open)
DOELSEIF ([HomeStatus] eq "Abwesend")
(set Eingangstuer lock)
MODEL FHEM
NAME AutoTuerOpenLocked2
NR 273
NTFY_ORDER 50-AutoTuerOpenLocked2
STATE initialized
TYPE DOIF
READINGS:
2018-09-27 18:44:36 cmd 0
2018-09-27 18:44:36 mode enabled
2018-09-27 18:44:36 state initialized
Regex:
attr:
cmdState:
wait:
0:
0
5
10
60
1:
0
5
10
60
2:
0
3:
0
4:
0
waitdel:
condition:
0 (InternalDoIf($hash,'HomeStatus','STATE') eq "Anwesend") and (ReadingValDoIf($hash,'HomeStatus','LastDevice') eq "Katja") and (ReadingValDoIf($hash,'Katja','state') eq "present") and (ReadingValDoIf($hash,'Steffen','state') eq "absent") and (InternalDoIf($hash,'Eingangstuer','STATE') eq "locked")
1 (InternalDoIf($hash,'HomeStatus','STATE') eq "Anwesend") and (ReadingValDoIf($hash,'HomeStatus','LastDevice') eq "Steffen") and (ReadingValDoIf($hash,'Steffen','state') eq "present") and (ReadingValDoIf($hash,'Katja','state') eq "absent") and (InternalDoIf($hash,'Eingangstuer','STATE') eq "locked")
2 ((ReadingValDoIf($hash,'Steffen','state') eq "present") and (ReadingValDoIf($hash,'Katja','state') eq "present")) and (InternalDoIf($hash,'Eingangstuer','STATE') eq "unlocked")
3 InternalDoIf($hash,'HomeStatus','STATE') eq "Abwesend"
devices:
0 HomeStatus Katja Steffen Eingangstuer
1 HomeStatus Steffen Katja Eingangstuer
2 Steffen Katja Eingangstuer
3 HomeStatus
all HomeStatus Katja Steffen Eingangstuer
do:
0:
0 set Eingangstuer open
1 {system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:50")}
2 {system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e speak:'Hallo Katja, schön das du wieder zu Hause bist, Wir haben in der Wohnung eine Temperatur von, [Heizung_Wohnzimmer:Temperatur],, grad ,, und heute gibt es noch , , [HF_GCalView:c-term] , , Termine , , und das wären , , [HF_GCalView:alleTermine] , ,'")}
3 {system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:30")}
1:
0 set Eingangstuer open
1 {system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:50")}
2 {system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e speak:'Hallo Steffen, schön das du wieder zu Hause bist, Wir haben in der Wohnung eine Temperatur von, [Heizung_Wohnzimmer:Temperatur],, grad ,, und heute gibt es noch , , [HF_GCalView:c-term] , , Termine , , und das wären , , [HF_GCalView:alleTermine] , ,'")}
3 {system ("sudo /root/alexa_remote_control_jq.sh -d Wohnzimmer -e vol:30")}
2:
0 set Eingangstuer open
3:
0 set Eingangstuer lock
4:
0
helper:
globalinit 1
last_timer 0
sleeptimer -1
internals:
0 HomeStatus:STATE Eingangstuer:STATE
1 HomeStatus:STATE Eingangstuer:STATE
2 Eingangstuer:STATE
3 HomeStatus:STATE
all HomeStatus:STATE Eingangstuer:STATE
itimer:
readings:
0 HomeStatus:LastDevice Katja:state Steffen:state
1 HomeStatus:LastDevice Steffen:state Katja:state
2 Steffen:state Katja:state
all HomeStatus:LastDevice Katja:state Steffen:state
uiState:
uiTable:
Attributes:
checkReadingEvent 0
room Logik
wait 0,5,10,60:0,5,10,60:0:0:0
habe das "do-always" mit allen möglichkeiten versucht, endet aber leider immer wieder in eine Tür-Öffner dauerschleife bist Homematic aufgibt.
Ein Tip war ein leeres DOELSE zu nehmen, wie kann ich das verstehen, ganz am Ende ohne Cmd?
Wie gesagt ich probiere wirklich schon lange alles mögliche aus bin aber mit meinem Wissen hier am Ende und deswegen wollte ich mich an euch hier wenden.
Mfg Steffen
Moin Steffen
Also ich finde es so besser!
Jetzt musst du aber noch mal Dein Problem beschreiben! Ein do always bewirkt ja nicht, dass er staendig durch alles durchlaeuft! Wer triggert denn in
DOELSEIF ((([Steffen:state] eq "present") and ([Katja:state] eq "present")) and ([Eingangstuer] eq "unlocked"))
(set Eingangstuer open)
Wenn Du Dir mal den Event Monitor ansiehst, dann vermute ich, dass einer von den Dreien regelmaessig triggert! Und damit dann das set open staendig ausloest!
Gruss Christoph