Hauptmenü

DOIF Tür Offen Automatik

Begonnen von Steffen, 27 September 2018, 07:46:11

Vorheriges Thema - Nächstes Thema

Steffen

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

Per

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.

pc1246

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
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

Steffen

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

pc1246

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
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div