IoT-Rolladen Steuerung

Ein seit langem schwelendes Problem im Büro wurde jetzt mal angegangen. Die “nervige” Rolladensteuerung: Warum an den Schalter stellen und eine ganze Minute lang den Knopf drücken? Da kann man doch auch nen Servomotor hinmachen und dann vom Rechner ansteuern! Gesagt getan, oder besser gesagt überlegt, gezeichnet und gekauft.

Folgende Schritte waren notwendig:

  1. Hardware bestellen
  2. Software-Code schreiben
  3. In Homeautomation einbinden

Hardware

TLTR: Am Ende des Abschnitts gibt es die Teileliste der Rolladensteuerung.

Nach ein paar empirischen Erfahrungen hatte ich einen passenden Servo bestellt, welcher auch genug Kraft besitzt um die Schalter zu betätigen. Für einen Schalter genügt hier ein Servo, da dieser wechselseitig entweder nach oben oder unten drückt. Die entsprechenden Winkel werden später in der Software festgelegt.

Um diesen anzusteuern habe ich mich für den ESP8266 Chip mit NodeMCU entschieden. Dieser ist sehr kostengünstig zu erwerben (um die 2€) und enthält bereits einen integrierten WLAN Chip für die spätere MQTT Kommunikation. Zudem kann er mittels USB mit Strom versorgt werden und wird eines der vielen rumliegenden Micro-USB Netzteile als Stromquelle bekommen.

ESP8266 NodeMCU
ESP8266 NodeMCU

Nach einigen ersten Gehversuchen in Fusion 360 und ein paar Testdrucken am 3D Drucker ist der finale Entwurf für einen neuen Schalterrahmen entstanden. Als Muster stand mir hierfür ein Exemplar von Busch & Jaeger aus dem Schlaterprogramm Reflex Si. Dieser ersetzt den vorhandenen Rahmen und besitzt zudem eine Halterung für den Servo und die Platine. (Model auf Thingiverse) Mit diesem eingesetzten Rahmen ist weiterhin auch eine manuelle Betätigung möglich.

3D Model des Rahmens
3D Model des Rahmens

Beim Zusammenbau der Komponenten ist lediglich auf die richtige Verbindung des Servo mit den Pins zu achten. Die braune und rote Leitung des Servos sind immer der Ground und der +5V Anschluss. Der gelbe Draht erwartet somit das Steuersignal, welches in der Standardkonfiguration auf dem Pin D1 ausgegeben wird. Ich habe aus dem Stecker vorsichtig mit einem Schraubenzieher den Steuerdraht herausgezogen und kann diesen nun flexibel verbinden. Wo sich die Pins genau befinden steht auf der Platine und ihr seht im linken Bild die verbundene Rückseite.

Für die Befestigung am Rahmen habe ich die beim Servo mitgelieferten Schrauben verwendet (Den Servo selbst auch nur 2x angeschraubt.)

Einkaufsliste

Software

Da ich immer noch bei der Embeddedentwicklung auf eher ungewohnten Pfade wandele benutze ich aktuell auch immer noch die Arduino Plattform zum compilieren. Für das eigentliche Schreiben verwende ich allerdings Sublime, da ich hier meine gewohnte Umgebung mit Syntax-highlighting (farbliche Hervorhebung von Befehlen und Paramatern, …) habe.

Arduino Code
Arduino Code

Am Anfang der Datei ist der Konfigurationsabschnitt um einige Einstellungen wie die WLAN oder MQTT Einstellungen festzulegen. Auch lässt sich hier der Pin für den Servomotor und die jeweiligen Auslenkungen justieren. Der Code sowie eine genauere Beschreibung lässt sich auf Github unter Poeschl/Window-shutter-control finden.

Einbindung der Rolladensteuerung in die Homeautomation Ich verwende für die Automatisierung privat als auch im Büro den Home Assistant und davon das auf den Raspberry Pi ausgelegte Linux Distribution Hass.io. Diese erlaubt auf dem Raspi sehr schnell eine voll funktionsfähige und erweiterbare Plattform aufzuziehen. Um zwischen dem System auf dem Raspberry und dem NodeMCU eine Verbindung herzustellen, müssen sich beide Geräte in einem gemeinsamen Netzwerk befinden. Nach diesem Schritt muss ein MQTT Broker zur Verfügung stehen. Dieser ist als zentraler Server zu verstehen, welcher zwischen IoT-Geräten und dem Home Assistant vermittelt. Hass.io bietet dafür ein Addon “Mosquitto broker” an, welches sich mit einem Klick installieren lässt.

Um den “Shutter-Controller” einzubinden ist noch ein kleiner Eintrag in der Konfiguration von Home Assistant nötig. Damit wird die richtige Topic für den Home Assistant festgelegt, auf welchen die Steuerbefehle hinterlegt werden müssen. In die Konfiguration schreibt man folgende Zeilen:

cover:
  - platform: mqtt
    command_topic: window-shutter-control/1234/command
    optimistic: true
    device_class: shutter
    retain: true

Nach einem Reboot steht die Rolladensteuerung auf der Oberfläche zur Verfügung und sollte ihren Dienst tun.