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.

Schaltaktor-Rolladenaktor

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

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

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.

rolladen-konfig-fhem

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:

define DI_Raff_EsszimmerGross DOIF  	( ( [Raffstore_Automatik_aktiv] eq "on") and \
										( \
 									  		( ( [D_Sturm] eq "on") and ([rgr_Residents] eq "absent") ) or \
 									  		( [D_Feuer] eq "on") or \
 									  		( [D_FensterOffenEZ] eq "on") or \
 									  		( ( [D_hell] eq "on") and ([D_HitzeSued] eq "off") and ([rgr_Residents] eq "absent")  ) \
 									  	) \
 									) \
 									(define RaffstoreEsszimmerGrossAutom_verz_rauf at +00:00:06 set RaffstoreGrossEsszimmer 100  ) \
 						  DOELSEIF  ( ( [Raffstore_Automatik_aktiv] eq "on" ) and \
 						  			  ( [D_Feuer] eq "off") and \
 						  			  ( [D_FensterOffenEZ] eq "off") and \
 						  			  ( ( [D_Sturm] eq "off") or ([rgr_Residents] eq "home") ) and \
 						  			  	( \
 						  			  		( [D_hell] eq "off") or \
 						  			  		( ( [D_HitzeSued] eq "on") and ([rgr_Residents] eq "absent") ) \
										) \
 						  			) \
 						  			(define RaffstoreEsszimmerGrossAutom_verz_runter at +00:00:06 set RaffstoreGrossEsszimmer 0  ) \
						  DOELSEIF  ( ( [Raffstore_Automatik_aktiv] eq "on" ) and \
 						  			  ( [D_Feuer] eq "off") and \
 						  			  ( [D_FensterOffenEZ] eq "off") and \
 						  			  ( ( [D_Sturm] eq "off") or ([rgr_Residents] eq "home") ) and \
 						  			  	( \
 						  			  		( ( [D_HitzeSued] eq "on") and ([rgr_Residents] eq "home") ) \
										) \
 						  			) \
 						  			(define RaffstoreEsszimmerGrossAutom_verz_hitze at +00:00:06 set RaffstoreGrossEsszimmer 20  )  \
 						  DOELSEIF  ( ( [Raffstore_Automatik_aktiv] eq "on" ) and \
 						  			  ( [D_Feuer] eq "off") and \
 						  			  ( [D_FensterOffenEZ] eq "off") and \
 						  			  ( ( [D_Sturm] eq "off") or ([rgr_Residents] eq "home") ) and \
 						  			  	( \
 						  			  		( ( [D_hell] eq "on") and ([D_HitzeSued] eq "off") and ([rgr_Residents] eq "home")  ) \
										) \
 						  			) \
 						  			(define RaffstoreEsszimmerGrossAutom_verz_sicht at +00:00:06 set RaffstoreGrossEsszimmer 65  )
attr DI_Raff_EsszimmerGross alias Raffstore Esszimmer groß
attr DI_Raff_EsszimmerGross room Automatik
attr DI_Raff_EsszimmerGross group 1: Automatisierung Raffstore
attr DI_Raff_EsszimmerGross cmdState Hoch | Runter | Hitzeschutz | Sichtschutz | Error

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? 😉

Bernd Dornieden

Read more posts by this author.

Braunschweig, Germany https://dornieden.me