Hallo zusammen
ich bin recht neu mit fhem unterwegs, habe schon einfache Sachen realisiert und wollte das jetzt gern ein wenig feintunen. Damit ich mich strukturiert damit beschäftigen kann, würde mir eine grobe Richtung und ein paar Stichworte, wie ich das folgende realisieren kann, sehr helfen.
Aktuelles Szenario:
- Jalousien fahren (zu unterschiedlichen Zeiten) runter
Wunschszenario
- Jalousien fahren nur herunter, wenn das jeweiligen Fenster nicht geöffnet ist
- sobald das Fenster dann geschlossen wird, fährt die Jalousie (ggf. mit ein wenig Zeitverzug) runter.
Mir geht es nur um ein paar Stichworte, wie das Wunschszenario möglichst elegant softwareseitig realisiert werden kann. Hardware existiert (Homematic und funktioniert getrennt voneinander super). Vermutlich ist es ja sinnvoll, die Logik (check des Öffnungszustands, nicht runterfahren, runterfahren sobald geschlossen) zentral zu hinterlegen, damit ich das nicht hartkodiert für jede einzelne Kombination von Sensor und Jalousieaktor separat machen muss.
Vielen Dank im Voraus!
Mario
Hi,
das kommt ein bisschen darauf an, mit was Du das "aktuelle Szenario" realisiert hast. Sag mal was dazu.
Mein Ansatz wäre ansonsten, vor dem Herunterfahren, z.B. mit IF den Zustand des Fensterkontakts zu prüfen und dann eben nicht oder halt doch zu schließen. Dann noch ein notify auf den Fensterkontakt, der prüft, ob es Zeit ist, die Jalousie zu schließen.
Wenn man das ganze mit geschickten Namen und RegExen macht, dann muss man da auch nicht verfielfältigen. Ansonsten kann man bestimmt etwas in die 99_myUtils.pm auslagern.
Möglicherweise kann man da auch was mit DOIF machen, aber dann müsstest Du in den DOIF-Bereich wechseln.
Gruß,
Thorsten
Hallo Thorsten,
Vielen Dank! Aktuell läuft das über eine Gruppe (insofern Korrektur meines ersten Posts - alle fahren zur gleichen Zeit runter; nur in unterschiedlichen Gruppen zu anderen Zeiten hoch):
define JalousienSonnenuntergang at *{sunset_abs()} set alle_Jalousien off
Wenn ich Dich richtig verstehe könnte ich die Prüfung des Schließzustands mit RegEx in Richtung "fahre *.Jalousie runter, wenn *.Tuersensor = closed" realisieren (Alle Bezeichungen folgen der gleichen Logik: WoZ.Jalousie, WoZ.Tuersensor | KiZ.Jalousie, KiZ.Tuersensor etc.)
Lese mich basierend auf Deinen Stichworten mal weiter ein.
Vielen Dank und Grüße!
Mario
Zitat von: onkel25 am 22 Februar 2017, 20:01:15Wenn ich Dich richtig verstehe könnte ich die Prüfung des Schließzustands mit RegEx in Richtung "fahre *.Jalousie runter, wenn *.Tuersensor = closed" realisieren
Im Prinzip ja, aber ganz so einfach ist es dann doch nicht. Im Trigger des notify geht das schon, aber dann wird man wahrscheinlich mit ein bisschen Zeichenkettenverarbeitung tricksen müssen.
Gruß,
Thorsten
Ich habe jetzt als Zwischenstand eine Lösung mit DOIF gefunden, mit der ich erstmal ganz zurfrieden bin.
define BiB.Jalousie.close DOIF ([{sunset()}] and [BiB.Tuersensor] eq "closed") (set BiB.Jalousie off) DOELSEIF ([BiB.Tuersensor] eq "open") (set BiB.Jalousie on) DOELSEIF ([BiB.Tuersensor] eq "closed" and [{sunset()}-{sunrise_abs(0,"7:15")}]) (set BiB.Jalousie off) DOELSEIF ([{sunrise_abs(0,"7:15")}]) (set BiB.Jalousie on)
Da es nur um 6 Jalousien geht, habe ich mich erstmal für die "händische" Version entschieden, das einzeln für jede anzulegen. Dadurch bin ich mit den Schließzeiten variabel und eine Verallgemeinerung wäre vermutlich komplexer. Zusätzlich öffnen jetzt noch die Jalousien, wenn man das Fenster öffnet und - sofern es nachts ist - schließt anschließend wieder.
Meine Frau ist begeistert #WAF
Viele Grüße, Mario
Zitat von: onkel25 am 25 Februar 2017, 16:57:12
Ich habe jetzt als Zwischenstand eine Lösung mit DOIF gefunden, mit der ich erstmal ganz zurfrieden bin.
define BiB.Jalousie.close DOIF ([{sunset()}] and [BiB.Tuersensor] eq "closed") (set BiB.Jalousie off) DOELSEIF ([BiB.Tuersensor] eq "open") (set BiB.Jalousie on) DOELSEIF ([BiB.Tuersensor] eq "closed" and [{sunset()}-{sunrise_abs(0,"7:15")}]) (set BiB.Jalousie off) DOELSEIF ([{sunrise_abs(0,"7:15")}]) (set BiB.Jalousie on)
Da es nur um 6 Jalousien geht, habe ich mich erstmal für die "händische" Version entschieden, das einzeln für jede anzulegen. Dadurch bin ich mit den Schließzeiten variabel und eine Verallgemeinerung wäre vermutlich komplexer. Zusätzlich öffnen jetzt noch die Jalousien, wenn man das Fenster öffnet und - sofern es nachts ist - schließt anschließend wieder.
Meine Frau ist begeistert #WAF
Viele Grüße, Mario
Hier ist ein Beispiel für Verallgemeinerung https://forum.fhem.de/index.php/topic,46327.msg592816.html#msg592816, setzt allerdings voraus, dass du dich schon mit Regex-Syntax beschäftigt hast.