HOWTO: Heizungssteuerung und Fenster-auf-Regeln in OpenHAB

  • Hallo zusammen,


    ich wollte euch hier einmal kurz zeigen, wie ich die Heizungssteuerung und Fenster-auf-Szenarien in OpenHAB umgesetzt habe. Hintergrund ist der, dass ich, wie vermutlich viele andere, das System nur noch laufen lassen will, bis die Hardware den Geist aufgibt, ich habe keine Ersatzgeräte. Wenn nun ein Heizkörperthermostat oder ein Fenstersensor aufgibt, dann benötige ich einen neuen von einem anderen Hersteller und kann somit nicht mehr die Szenarien von der SHC nutzen. Deswegen habe ich alles in OpenHAB umgezogen und muss im Zweifel nur den ITem-Namen in den Rules wechseln und alles läuft wie vorher. Daher hier meine Rules für die doch sehr wichtigen Heizungs-Szenarien:


    1. Vorbereitung


    Als erstes benötigen wir für jeden Raum ein extra Item, welches die Temperatur in bestimmten Fällen zwischenspeichert. Hier ein kleines Beispiel, wie die bei mir aussehen:



    2. Regeln Heizungssteuerung


    Ich zeige das hier jetzt mal Beispielhaft an meinem Wohnzimmer, welches ein Fenster und eine Terassentür hat, somit müssen zwei Sensoren mit in die Regeln aufgenommen werden. Kommen wir aber zuerst zur Heizungssteuerung selbst, in diesem Beispiel mit unterschiedlichen Regeln für Montag-Donnerstag, Freitag, Samstag, Sonntag:



    Die Regel wird alle halbe Stunde ausgeführt und prüft dann, ob ein Zeitpunkt erreicht ist, an dem die Temperatur umgestellt werden soll.

    Direkt umgestellt wird nur, wenn alle Fenster zu sind und der Zustand Heizen aktiv ist. Wenn aber ein Fenster offen ist, dann wird die neue Temperatur nur in unseren Zwischenspeicher geschrieben. Wieso das so ist, sehen wir bei den nächsten Regeln.



    3. Regeln Fenster auf und zu


    Wenn nun ein Fenster geöffnet wird, soll die aktuelle Temperatur gespeichert werden und die Heizung ausgeschaltet werden:



    Wenn dann wieder beide Fenster geschlossen sind, soll die abgespeicherte Temperatur wieder ans HKT gesendet werden.


    Code
    rule "Wohnzimmer Fenster geschlossen"
    when
        Item Wohnzimmer_Fenster_OffenGeschlossen changed to CLOSED or
        Item Wohnzimmer_Tur_OffenGeschlossen changed to CLOSED
    then
        if (Status_Heizen.state == ON && Wohnzimmer_Fenster_OffenGeschlossen.state == CLOSED && Wohnzimmer_Tur_OffenGeschlossen.state == CLOSED) {
            RST2_Wohnzimmerheizung_Wohnzimmer_Solltemperatur.sendCommand(Stored_Temperature_Wohnzimmer.state as Number)
        }
    end


    Und hier kommt auch die Heizungssteuerung wieder ins Spiel: Wenn nämlich, während das Fenster geöffnet ist, ein Zeitpunkt erreicht wird, in dem die Temperatur geändert werden soll, wird dies nach schließen des Fensters mit berücksichtigt, da der Zwischenspeicher von der Steuerung überschrieben wurde.


    Die Regeln funktionieren bei mir wunderbar und ich hoffe, dass ich hiermit einigen helfen konnte.

    Der Vorteil ist natürlich, dass ich wenn ein Gerät kaputt geht, nur z.B. "RST2_Wohnzimmerheizung_Wohnzimmer_Solltemperatur" durch den neuen Gerätenamen austauschen muss und alles läuft wieder nach einer Sekunde Arbeit.

  • Hallo M1K , ich bin aktuell ebenfalls dabei alles auf openHab umzustellen. Zwar hab ich mir Aufgrund der aktuelle stark gefallenen Preise tatsächlich noch ein paar Ersatzgerät in die Ecke gelegt und werd so hoffentlich noch einige Jahre um eine kompl. Neuanschaffung herumkommen... möchte aber die Innogy-Zentrale eigentlich nur noch als Hub nutzen und ziehe daher auch alle Szenarien nach openHub rüber.


    Dabei bin ich jetzt auf deine Skript gestoßen... vielen dank dafür, erspart mit denk ich jede Menge Denkarbeit. :D

    Dazu noch eine Frage. Du führst in deinem Skript jeden Tür-/Fenstersensor separat auf. Würde es nicht auch gehen, wenn du die Sensoren je Raum in einer Gruppe zusammenfast (so hab ich es z.B. gemacht)



    und dann in Skript einfach den Status der gesamten Gruppe abfragen mittels


    Item Fenster_Wohnzimmer received update OPEN

    oder

    Item Fenster_Wohnzimmer received update CLOSED


    Wenn ich das richtig Verstanden habe, hat die Gruppe Fenster_Wohnzimmer so lange der Staus OPEN; so lange eins der 4 Fenster/Türen geöffnet ist.


    Das sollte den Vorteil haben, dass du die Skripe nicht immer anpassen musst, wenn mal ein zusätzlicher Sensor dazukommen sollte, oder einer rausfliegen sollte. Ok, so häufig wird das nicht vorkommen, aber wäre ja auch weniger Schreibkram... oder hab ich einen Denkfehler?


    Gruß André

  • Hab das jetzt mal mit Fenster_Wohnzimmer received update OPEN versucht. Klappt leider nicht, denn der Wert von Fenster_Wohnzimmer bleibt bei mir immer NULL, auch wenn ein Festern geöffent wird.


    Hab das jetzt aber über einen Umweg gelöst, mittels HilfsItem. Hab mir ne Regel gebaut die ein Item Fenstersensoren_Wohnzimmer entweder auf OPEN oder CLOSED setzt, wenn ein Fenster im Wohnzimmer geöffnet ist. Beim schließen der einzelnen Sensoren wird geprüft, ob alle den Status CLOSED haben.


    Im Heizungsskript muss ich dann jeweils nur den Status von Fenstersensoren_RAUMNAME abfragen und nicht jeden Sensor einzeln.


    Dann muss ich im Falle eines Austausches bzw. einen Hinzufügen eines Sensors nur ein Skript anpassen und nicht überall, wo ich auf offene Fenster reagieren muss.

  • Damit habe ich keinen Schmerz. Ich habe ein kleines Skript "change_item_name.sh", welches mir bei einem geänderten Item-Name diesen in allen Regeln austauscht (openHAB unter Linux):




Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!