Rolladensteuerung automatisieren mit Homematic und FHEM

wenn´s dunkel ist herunter, wenn´s hell wird herauf – was soll an der Automatisierung der Rolladensteuerung so schwer sein? Das war mein erster Gedanke als ich mich an die Programmierung unserer Raffstore im Haus machte. Doch wann genau wird es bei uns dunkel? Und wie gehe ich mit der Verschiebung dieser Zeit im Jahr um? Kann ich die Rolladen tagsüber im Sommer auch als Hitzeschutz nutzen? Und wie verhindere ich, dass mich ein heruntergefahrener Rolladen des Wohnzimmerfensters im Sommer auf der Terrasse aussperrt? Diese Fragen galt es zu klären bevor ich mich an die Programmierung unserer Rolladensteuerung machen konnte. Doch zunächst zur verwendeten Hardware.

Hardware

Die Fenster der Süd- und Westseite unseres Hauses sind mit Raffstoren der Firma Roma ausgestattet. Diese haben einen Elektromotor eingebaut mit dem die Raffstore sowohl rauf und runter gefahren, als auch der Winkel der Lamellen verändert werden kann. Zunächst soll es hier aber nur um die Position der Raffstore unabhängig von der Lamellenstellung gehen.

Homematic Funk-Rolladenaktor mit Gira E2 Adapterrahmen
Homematic Funk-Rolladenaktor mit Gira E2 Adapterrahmen

Angesteuert werden die Elektromotoren der Raffstore von einem HomeMatic Funk-Jalousieaktor. Dieser wird genau wie ein normaler Lichtschalter oder Rolladenschalter unter Putz verbaut und kann per Adapter auch mit unserem im Haus verbauten Schaltermaterial Gira E2 bedient werden. Optisch ist der HomeMatic Funk-Jalousieaktor also nicht von den herkömmlichen Lichtschaltern im Haus zu unterscheiden. Die Funkverbindung zu den Homematic Aktoren ist bidirektional. Das bedeutet, dass überprüft werden kann, ob ein Funkbefehl erfolgreich vom Sender zum Empfänger übertragen worden ist. Ich bin mit der Zuverlässigkeit der Homematic Funkbefehle äußerst zufrieden und hatte bislang fast gar keine Übertragungsprobleme.

Zur Automatisierung der Rolladensteuerung setze ich allerdings nicht auf die Zentrale von Homematic, sondern habe die open source Heimautomatisierungssoftware FHEM im Einsatz, über die ich schon einmal berichtet habe. Meine FHEM Serverhardware habe ich aber mittlerweile ausgetauscht. Statt meinem Tuxradio habe ich nun einen Cubietruck im Einsatz. An diesem ist per USB das Funkmodel CUL von busware.de angeschlossen, mit welchem FHEM die Homematic Funkbefehle versenden kann. So vernetzt, kann FHEM per Funkbefehl alle Rolladen in unserem Haus in eine beliebige Position fahren.

Busware CUL zum Versenden der Homematic Funkbotschaften via FHEM
Busware CUL zum Versenden der Homematic Funkbotschaften via FHEM

manuelle Bedienung

Als ich unsere Hausautomatisierung plante war meine erste Überlegung, dass ich durch die Automatisierung ja eigentlich gar keine Schalter mehr benötige. Das Haus steuert ja schließlich Licht und Rolladen automatisch. Diese Idee gefiel meiner Frau allerdings gar nicht und sie bestand auf eine zusätzliche manuelle Steuerung für jede Funktion – zum Glück! Durch eine zusätzliche manuelle Bedienung ist FHEM kein sogenannter „single point of failure“ mehr – ein Ausfall von FHEM ist also nicht so wild. Im schlimmsten Fall fällt man halt auf eine herkömmliche Bedienung von Licht und Rolladen zurück ist aber immer in der Lage weiterhin alle Aktoren zu bedienen.

In unserem Fall können die Raffstore auf drei Arten manuell gesteuert werden:

  • am Aktor selbst über den eingebauten Taster.
  • über Homematic Fernbedienungen. Ich habe eine 12 Tasten Fernbedienung im Einsatz
  • über die Weboberfläche von FHEM. Dort kann ich sowohl jeden Raffstore einzeln, als auch alle zusammen in eine bestimmte Position fahren. Die Weboberfläche kann sowohl am Laptop als auch am Handy aufgerufen werden.
Homematic Fernbedienung zur manuellen Steuerung der Rolladen
Homematic Fernbedienung zur manuellen Steuerung der Rolladen

Automatisierung

Bevor ich die Logik der Rolladenautomatisierung programmieren konnte musste ich mir erst einmal selbst darüber klar werden, in welcher Situation ich die Raffstore gerne in eine bestimmte Position fahren möchte. Und je mehr ich darüber nachdachte, desto mehr Situationen vielen mir ein. Dabei half mir zunächst einmal zu überlegen wofür die Lamellen vor dem Fenster überhaupt genutzt werden können:

  • Sichtschutz von außen in der Nacht
  • Sichtschutz von außen bei Tag
    In bestimmten Räumen möchte man sich tagsüber vielleicht auch vor eventuellen Blicken von außen schützen
  • Fluchtwege im Gefahrenfall
    Bei Feuer hilft es sicherlich, wenn alle möglichen Fluchtwege (wie z.B. Wohnzimmertüren) frei sind
  • Schutz der Raffstore bei Unwetter
    Bei starkem Sturm könnten die Raffstore beschädigt werden
  • Schutz vor ungewolltem Aussperren
    In die Situation, dass ich im Sommer mit einem Würstchen im Mund am Grill vom Haus ausgesperrt werden, weil der Rolladen an der Wohnzimmertür herunter fährt möchte ich nicht kommen…
  • Hitzeschutz im Sommer
    Durch große Fensterflächen kommt viel Wärme ins Haus. Im Winter top, im Sommer eher nicht. Also Rolladen herunter (oder in Hitzeschutzposition…)

Aus diesen Anforderungen heraus kann man schon ganz gut die verschiedenen Bedingungen für FHEM ableiten. Für die Steuerung innerhalb von FHEM habe ich das Modul DOIF verwendet. Damit die Logik nicht zu komplex wird, habe ich einige Berechnungen aus DOIF herausgezogen und vorab in Dummy Variablen abgelegt.

So gibt es z.B. die Variable D_Sturm, die nur denn wahr wird, wenn es draußen Windgeschwindigkeiten von mehr als 30 km/h gibt (abgefragt durch das FHEM weather Modul) gibt.

Die Variable D_hell beantwortet die Frage „Wann wird es dunkel“ durch das geniale FHEM Modul sunrise. Dort wird einfach eine bestimmter Sonnenstand definiert, bei dem die Rolladen herunterfahren sollen (D_hell ist dann false). Dieser bleibt das ganze Jahr über annähernd gleich und man hat keine Probleme mehr mit einer neuen Programmierung aller Rolladen bei Wechsel von Sommer- zur Winterzeit usw.

Und ja, ich gebe zu spätestens jetzt wird es etwas abgefahren:
Die Variable D_HitzeSued gibt an, dass auf der Südseite des Hauses heute Hitzeschutz notwendig ist, da der Himmel nicht bewölkt ist, die Tageshöchsttemperatur über 18°C liegt und der Azimuthwinkel der Sonne in einem Bereich liegt, in dem die Sonne auf die Südseite des Hauses scheint. Schließlich sollen die Rolladen ja nur dort in eine Hitzeschutzposition fahren wo es umbedingt notwendig ist. Es soll ja nicht einfach den ganzen Sommer über das Haus komplett abgedunkelt werden.

Automatisierung der Rolladensteuerung in der FHEM Weboberfläche
Automatisierung der Rolladensteuerung in der FHEM Weboberfläche

Nach einigem Herumprobieren erschien es für mich am einfachsten, wenn ich tatsächlich für jeden Raffstore im Haus eine eigene Logik schreibe. Vieles wiederholt sich zwar, aber es gibt doch für jeden Raum zumindest eine Kleinigkeit die etwas anders programmiert werden muss (z.B. die Azimuthwinkel der Sonne auf der Süd- oder Westseite des Hauses).

Als Beispiel hier einmal die Logik für die Esszimmertür auf der Südseite des Hauses:

  • Bei Feueralarm hochfahren.
  • Bei Sturm hochfahren, aber nur falls niemand zu Hause ist. Sind Bewohner im Haus anwesend fahren diese bei einem Unwetter schon früh genug die Rolladen selbst hoch.
  • Wenn es draußen hell ist und niemand zu Hause ist, dann hochfahren.
  • Wenn es draußen hell ist, aber Bewohner zu Hause sind, dann nicht ganz hochfahren, sondern auf eine Sichtschutzposition.
  • Wenn es draußen dunkel wird herunterfahren
  • Wenn es heute heiß wird, die Raffstore in eine Hitzeschutzposition fahren
  • Wenn die Esszimmertür offen ist dann die Rolladen nicht herunterfahren

Als DOIF Modul innerhalb von FHEM liest sich das dann wie folgt:

Ausblick

Auch wenn die Rolladensteuerung mit FHEM so wie oben beschrieben schon sehr gut funktioniert – so richtig fertig bin ich immer noch nicht. Als nächste Schritte habe ich mir vorgenommen, die Raffstore nicht nur in eine bestimmte Position zu fahren, sondern auch die Stellung der Lamellen automatisch ansteuern zu können. Schließlich ist ja genau das der Vorteil von Raffstoren gegenüber Rolladen. Damit könnte man den Hitzeschutz im Sommer noch deutlich verbessern und es gleichzeitig im Haus trotzdem ausreichend hell werden lassen. Auch wäre es zum Beispiel möglich bei Morgendämmerung die Raffstore schon mal leicht zu öffnen bevor sie ganz hoch gefahren werden. Hierzu aber später mehr.

Das wars erstmal zur Rolladensteuerung. Wie gefällt euch mein Ansatz? Habt ihr bei euch eine ähnliche Logik im Einsatz oder findet ihr das alles total überflüssig und kurbelt eure Rolladen lieber manuell? 😉

ähnliche Beiträge

Veröffentlicht von

Bernd

gefällt Dir dieser Artikel? Dann würde ich mich freuen, wenn Du einen Kommentar hinterlässt oder durch einen Klick auf den Flattr Button ein wenig in meinen Klingelbeutel wirfst. Durch einen Amazon Einkauf über diesen Link unterstützt Du diesen Blog ebenfalls. Vielen Dank dafür!

  • Michael

    Hallo Bernd,

    wirklich sehr interessant. Vielen Dank für deinen Artikel!

    Fange gerade erst mit Homematic an. Habe schon einige Rolläden und die Heizung automatisiert. Da es nun Sommer wird, bin ich anscheinend auf eine ähnliche „Anforderung“ gekommen ;-).

    Durch deinen Beitrag habe ich nun das Modul DOIF erstmals kennengelernt. Da ich mich als Java-Entwickler mit der FHEM Logik etwas schwer tue – gefällt mit DOIF schon viel besser 😉

    Wie bekommt man denn die Wetterinformationen in die Hilfsvariablen? Kann man dies nicht auch über das Twilight Modul realisieren?

    Beste Grüße

    Michael

    • tickerverbot

      Hallo Michael,

      die Wetterinformationen beziehe ich aus dem Modul weather.

      Der Dummy D_HitzeWest wird wiederum per DOIF gefüllt. Bei mir sieht die Definition folgendermaßen aus:

      ## dummy für Hitzeschutz West:

      define D_HitzeWest dummy
      attr D_HitzeWest group Hilfsvariablen
      attr D_HitzeWest room Automatik
      attr D_HitzeWest webCmd on:off
      attr D_HitzeWest devStateIcon on:rc_GREEN off:rc_STOP

      define DI_D_HitzeWest DOIF ( ( ( ( [Wetter:fc1_high_c] >= 16 ) and ( [Wetter:code] eq „32“ ) ) or ( ( [Wetter:fc1_high_c] > 16 ) and ( [Wetter:code] eq „32“ or [Wetter:code] eq „30“) ) or ( ( [Wetter:fc1_high_c] >= 18 ) and ( [Wetter:code] eq „32“ or [Wetter:code] eq „30“ or [Wetter:code] eq „28“ or [Wetter:code] eq „26“) ) ) and ([Sonnenstand:azimuth] > „225“ and [Sonnenstand:azimuth] < "293" ) ) (set D_HitzeWest on)
      DOELSE (set D_HitzeWest off)
      attr DI_D_HitzeWest cmdState Hitze | keine Hitze
      attr DI_D_HitzeWest do always
      attr DI_D_HitzeWest group Hilfslogik
      attr DI_D_HitzeWest room Automatik

      Abhängig von der aktuellen Tageshöchsttemperatur darf es also mehr oder weniger bewölkt sein (das sagt Wetter:code), damit der Hitzeschutz aktiv wird.

      Hoffe das hilft Dir ein wenig weiter.

      Viele Grüße,
      Bernd

      • Niklas Frey

        Hallo Bernd,

        ich habe deinen Code für meine SOMFY Rolladensterung übernommen.
        Nur leider läuft bei mir der Befehl ( [Wetter:fc1_high_c] >= 16 ) nicht.

        Kannst du mir deine Definition von „Wetter“ schicken?

        Das Wetter habe ich wie folgt definiert:
        define MyWeather Weather 642951
        attr MyWeather event-on-update-reading fc1_high_c,temperature,humidity,pressure,wind_speed,wind_chill,wind_direction
        attr MyWeather icon temp_windchill
        define MyWeatherWeblink weblink htmlCode { WeatherAsHtmlH(„MyWeather“) }
        attr MyWeatherWeblink room Wettervorhersage

        Gruß,
        Niklas

        • tickerverbot

          Hey Niklas,

          mein „Wetter“ ist wirklich als „Wetter“ definiert, bei Dir heißt es aber „MyWeather“. Daher müsste der Aufruf bei Dir lauten: ( [MyWeather:fc1_high_c] >= 16 ).

          Zur Sicherheit noch meine Wetter Definition:

          ##### weather #####
          define Wetter Weather 640831 600 de
          attr Wetter event-min-interval 600
          attr Wetter event-on-change-reading state
          attr Wetter room Wetter

          Viele Grüße,

          Bernd

          • Niklas Frey

            Hallo,
            Danke für die schnelle Antwort.
            Es lag aber daran, dass ich zu ungeduldig war. Die Wetterdaten werden Standardmäßig nur alle 60min aktualisiert. Nach dieser Zeit funktioniert auch die Routine.
            Gruß niklas

          • Sven

            Woher stammen denn, die Variablen D_Sturm, D_xxxxxx und rgr_residents ?

  • Chris

    Hallo Bernd,

    wirklich ein sehr guter Artikel. Ich habe nur eine kleine Frage dazu, falls du einmal manuell eingreifen solltest (Schalter, Fernbedieung..) wie wird die Automatik dann außer Kraft gesetzt? Ansonsten würden deine Rolläden wieder direkt in Ihre Automatik Stellung fahren oder?

    Grüße,
    Christopher

    • tickerverbot

      Hey Christopher,

      interessante Frage – darüber hab ich auch ne zeitlang nachgedacht.
      Die Lösung die bei mir sehr gut funktioniert besteht daraus, die Hauptlogik der Raffstore mit dem DOIF Attribut „do always“ zu versehen. Die DOIF-Hilfslogiken (zum Setzen der Dummys „Hitze“, „Hell“ oder „Sturm“) haben kein „do always“ Attribut.
      Das führt zu folgendem Verhalten:
      Ändert sich nach einem manuellen Eingriff in die Rolladensteuerung ein wesentlicher Hilfsdummy (z.B. es wird dunkel, oder es fängt an zu stürmen), dann übersteuert die Rolladenautomatik den manuellen Eingriff. Ansonsten bleiben die Rolladen in die manuell gefahrene Position.
      Das funktioniert in der Praxis ganz gut bei mir.
      Hoffe ich hab mich nicht zu verwirrend ausgedrückt?

  • Pingback: DSL Geschwindigkeit automatisch überwachen › Tickerverbot()

  • Ingo

    Hallo Bernd,
    möchte auch meine Steuerung mittels DOIF überarbeiten. Dabei bin ich auf deine Beispiele gestossen. Kannst du mir die Teile deiner fhem.cfg posten, die relevant sind für deine Steuerung (Hilfsvariablen, Hilfssteuerungen, etc.). Das würde mir sehr helfen beim Verstehen deines Beispiels.
    Danke und Gruss
    Ingo

  • Chris Linn

    Hallo Bernd,

    ein wirklich interessanter Beitrag, ich habe eine Frage dazu. Angenommen die Sonne scheint zwischen 13:00 und 18:00 Uhr auf dein Fenster und der Hitzeschutz ist aktiv. Wird dieser wieder deaktiviert, sprich fahren die Rolladen dann wieder hoch wenn die Sonne weg ist? Oder verbleiben diese bis zur Nach unten?

    Gruß

    • tickerverbot

      Hallo Chris,
      Sowohl als auch. In den Wohnräumen fahre ich die Rollladen wieder hoch, wenn kein Hitzeschutz mehr notwendig ist. Im Schlafzimmer und Kinderzimmer fahre ich die Rolladen eigentlich fast nie automatisch hoch wenn wir zu Hause sind.
      Viele Grüße,
      Bernd