Hallo Zusammen,
ist es möglich das ich ein Doif nicht reagieren lasse wenn z.B. der Status von einem Resident Device von asleep->home wechselt?
Es geht dabei im Hintergrund um diese Problematik: https://forum.fhem.de/index.php/topic,19040.msg644471.html#msg644471 (https://forum.fhem.de/index.php/topic,19040.msg644471.html#msg644471)
Update:
Da für mich die Sache eigentlich klar war habe ich es etwas zu kurz erläutert.
Hier nochmal ein Update.
Über ein Resident steuere ich bei mir u.a. die Rolladen.
Für jeden Aktor gibt es ein eigenes Doif da unter anderem auch eine Entertainment und Wetterschaltung integriert ist.
Im Prinzip ist es so das wenn ich nach Hause komme (Statewechsel von absent zu home) alle Rolladen hoch fahren und wenn ich weg oder am schlafen bin (Statewechsel von home zu absent) alle runter fahren.
Jedoch möchte ich das beim aufstehen (Statewechsel von asleep zu home) alle Rolladen an Türen nicht hochgefahren werden sollen.
Daher die Frage wie ich genau diesen Statuswechsel am besten Abfrage.
Ich hoffe das ist nun etwas klarer.
Warum sprichst Du das Thema 2mal an?
Zu Deiner Frage: ja klar.
Überlege Dir doch die Bedingungen für die Aktion und für nicht und baue danach das DOIF zusammen.
Wenn es nicht klappt, dann schreibe hier ausführlich was Du getan hast und was das DOIF tut.
(Das Ganze immer mit dem berühmtem List)
Zwei mal habe ich es angesprochen weil es einmal im Forum zum Resident Modul steht und mir vorhin gekommen ist das es ja auch auf Doif Ebene eine Lösung geben kann.
Ich stelle mir halt die Frage wie ich die Bedingung "war vorher asleep, jetzt aber home" in ein Doif bekomme. Wenn ich das wüsste würde es ja auch laufen.
finde ich toll, dass Du von den Helfern erwartest sich die Infos zusammenzusuchen!
ZitatIn der Nacht ist der Status des Resident Device asleep. Sobald morgens der Wecker für den ersten Bewohner geht wird dieser auf home gesetzt. Und jetzt kommt die Frage:
Wie kann ich dies am besten Abfangen das in dem Moment mindestens eine Rollade nicht geöffnet wird?
Ich versuche mich mal an einer Übersetzung.
Du möchtest eine Aktion nicht ausführen und zwar beim Wechsel von aslepp zu home.
Denke doch erstmal anderes rum: Wann soll die Aktion ausgeführt werden? Man programmiert kein "Nichtausführen".
Fragen:
Was bedeutet "mindestens eine Rollade "?
Ab wieviel Bewohner soll die Aktion ausgelöst werden?
Was ändert sich beim Wachwerden des ersten, zweiten....
Sorry das dies so mißverständlich war. In meinen Gedanken war es mit der Erklärung bereits wasserdicht.
Ich habe den ersten Beitrag um eine bessere Erklärung ergänzt.
Zitat von: ThiemoSt am 09 Juni 2017, 14:31:08
Hallo Zusammen,
ist es möglich das ich ein Doif nicht reagieren lasse wenn z.B. der Status von einem Resident Device von asleep->home wechselt?
Es geht dabei im Hintergrund um diese Problematik: https://forum.fhem.de/index.php/topic,19040.msg644471.html#msg644471 (https://forum.fhem.de/index.php/topic,19040.msg644471.html#msg644471)
Update:
Da für mich die Sache eigentlich klar war habe ich es etwas zu kurz erläutert.
Hier nochmal ein Update.
Über ein Resident steuere ich bei mir u.a. die Rolladen.
Für jeden Aktor gibt es ein eigenes Doif da unter anderem auch eine Entertainment und Wetterschaltung integriert ist.
Im Prinzip ist es so das wenn ich nach Hause komme (Statewechsel von absent zu home) alle Rolladen hoch fahren und wenn ich weg oder am schlafen bin (Statewechsel von home zu absent) alle runter fahren.
Jedoch möchte ich das beim aufstehen (Statewechsel von asleep zu home) alle Rolladen an Türen nicht hochgefahren werden sollen.
Daher die Frage wie ich genau diesen Statuswechsel am besten Abfrage.
Ich hoffe das ist nun etwas klarer.
ZitatDaher die Frage wie ich genau diesen Statuswechsel am besten Abfrage.
Genauso, wie Du den Statuswechse absent->home und home->absent abfragst, kannst Du den Statuswechsel von asleep->home abfragen, aber keine Befehle ausführen, im Prinzip so
(<absent->home>) (set ...)
DOELSEIF (home->absent) (set ...)
DOELSEIF (asleep->home) ## nix tun
Das verstehe ich nicht ganz.
Ich frage aktuell ja nicht einen bestimmten Statuswechsel ab sonder triggere nur auf das Event State=Home.
Dabei ist es ja egal welcher State vorher gesetzt war.
Wie wäre denn die genaue Syntax dafür?
Gesendet von iPhone mit Tapatalk
Zitat von: ThiemoSt am 11 Juni 2017, 07:26:50
Das verstehe ich nicht ganz.
Ich frage aktuell ja nicht einen bestimmten Statuswechsel ab sonder triggere nur auf das Event State=Home.
Dabei ist es ja egal welcher State vorher gesetzt war.
Wie wäre denn die genaue Syntax dafür?
Gesendet von iPhone mit Tapatalk
ZitatIm Prinzip ist es so das wenn ich nach Hause komme (Statewechsel von absent zu home) alle Rolladen hoch fahren und wenn ich weg oder am schlafen bin (Statewechsel von home zu absent) alle runter fahren.
Das hatte ich aber so verstanden.
Vielleicht funktioniert es, wenn Du die Funktion OldValue mit abfragst und and verknüpfst, s. Commandref Perl-Besonderheiten.
Zitat von: ThiemoSt am 11 Juni 2017, 07:26:50
Das verstehe ich nicht ganz.
Ich frage aktuell ja nicht einen bestimmten Statuswechsel ab sonder triggere nur auf das Event State=Home.
Dabei ist es ja egal welcher State vorher gesetzt war.
Wie wäre denn die genaue Syntax dafür?
Gesendet von iPhone mit Tapatalk
Dazu musst du dir den alten Zustand merken, um entscheiden zu können, wie sich der Zustand geändert hat. Das kannst du ggf. über die Zustände eines DOIF-Moduls regeln:
z. B.
DOIF ([myzustand] eq "absent" and $cmd == 1) (...)
DOELSEIF ([myzustand] eq "absent" and $cmd == 2) (...)
DOELSEIF ([myzustand] eq "home" and $cmd == 1) (...)
...
Zitat von: Damian am 11 Juni 2017, 17:48:07
Dazu musst du dir den alten Zustand merken, um entscheiden zu können, wie sich der Zustand geändert hat. Das kannst du ggf. über die Zustände eines DOIF-Moduls regeln:
z. B.
DOIF ([myzustand] eq "absent" and $cmd == 1) (...)
DOELSEIF ([myzustand] eq "absent" and $cmd == 2) (...)
DOELSEIF ([myzustand] eq "home" and $cmd == 1) (...)
...
Das ist glaube ich die Lösung, zu simpel um selber drauf zu kommen.
Ich habe es umgesetzt und werde es testen.
Danke!
ansonsten gibt's bei den Roommates ja auch noch das Reading laststate ... damit mach ich das ;-)
Gruß Michael
Zitat von: l2r am 12 Juni 2017, 13:20:32
ansonsten gibt's bei den Roommates ja auch noch das Reading laststate ... damit mach ich das ;-)
Wieso auch immer, das Reading habe ich bisher immer übersehen.
Das ist ja genau das was ich brauche. Im Beitrag zum Resident Modul hatte ich gehofft das mir jemand solch einen Wink geben kann.