Relais über OpenHAB am Raspberry Pi steuern (Rollladen, Lichter, etc.)

OpenHAB ist eine einfache aber starke Möglichkeit sein Haus zu automatisieren. Sobald man allerdings mehr als nur Software steuern will, so braucht man die Unterstützung des Raspberry Pi’s oder ähnlichem System. Oft sollen Stromkreise (wie Rollläden und Jalousien) per Software geöffnet oder geschlossen werden, daher wollen wir über OpenHAB Relais steuern.

Daher erstellen wir in diesem Tutorial die Oberfläche um mit OpenHAB Relais zu steuern und lassen diese gegebenenfalls auch nach einer bestimmten Zeit wieder abschalten.

 

Zubehör

Einbau Schaltrelais

Neben einem Raspberry Pi brauchst du noch bestimmte Relais, welche wir im Folgenden ansteuern werden. Es gibt unterschiedliche Modelle, die für unterschiedliche Einsatzmöglichkeiten gedacht sind:

 

Darüber hinaus benötigen wir noch Kabel (Jumper Kabel nur um zu Testen).

 

Vorbereitung und Verkabelung

Sofern du Geräte mit 230V Netzspannung schalten willst, möchte ich zunächst einen Hinweis geben:
Da Netzspannung lebensgefährlich sein kann, solltest du wissen was du tust! Falls du dir unsicher bist, lass dir von einem Fachmann helfen. Ich übernehme keine Haftung für Schäden! Sei bitte vorsichtig.

Raspberry Pi GPIO Pin Belegung

Raspberry Pi GPIO Pin Belegung

Fangen wir nun also an. Im ersten Schritt ist es wichtig zu wissen, ob die Relais sich mit 3.3V oder nur 5V schalten lassen. Dazu kannst du diesem Tutorial folgen, oder einfach das Relais anschließen: GND kommt an GND vom Raspberry Pi, VCC an 5V des Pi’s (Pin 2) und IN kommt an 3.3V (Pin 1). Das Lämpchen des Relais sollte ausgehen. Verbindest du IN mit GND vom Raspberry Pi, so sollte die LED vom Relais aufleuchten.

Hier der schematische Aufbau:

Relais über OpenHAB am Raspberry Pi steuern (Rollladen, Licht) Steckplatine mit Transistor

An das andere Ende des Relais kommt das angeschlossene Gerät (rechts oder links) und die Spannung bzw. Masseanschluss (Mitte). Für weitere Infos sieh dir dieses Tutorial an.

Für spezielle Arten von Relais (wie das für Rolladen und Jalousien Motoren) sind in deren Datenblättern noch weitere mögliche Schaltungen genannt (insbesondere wie die Motoren angeschlossen werden müssen):

Beispielhafte Schaltung von speziellen Relais für Motoren von Rollläden und Jalousien

 

Code zum Steuern des OpenHAB Relais

Zunächst einmal müssen wir das Exec Binding installieren. Dafür gehen wir unter http://openhabianpi:8080/paperui/index.html#/extensions unter Add-ons -> Bindings und suchen nach „Exec Binding“. Dies installieren wir.

Das GPIO Python Package ist nicht auf allen OpenHAB  Images installiert, daher müssen wir dieses vorher ggf. noch nachinstallieren. Wechsle zur Konsole und gib folgendes ein:

sudo apt-get install python-rpi.gpio python3-rpi.gpio --yes

Wir erstellen als erstes das Python Skript:

sudo nano /etc/openhab2/scripts/relais.py

Es bekommt folgenden Inhalt:

Damit wir es benutzen können, müssen wir noch Rechte vergeben:

sudo chmod +x /etc/openhab2/scripts/relais.py

 

Weiter geht es mit den zu definierenden Things. Dies ist im Grunde genommen nur eines, welches wir anlegen:

sudo nano /etc/openhab2/things/relais.things

Folgende Zeile kommt hier hinein (dadurch wird das Skript mit entsprechendem Parameter aufgerufen:

Thing exec:command:relais1-control [ command="/etc/openhab2/scripts/relais.py 23 %2$s", interval=0, autorun=true ]

Gespeichert wird mit STRG+O und zurück zur Shell geht es mit STRG+X. Als nächstes ist das benötigte Item dran:

sudo nano /etc/openhab2/items/relais.items

Folgender Inhalt:

Group grp_relais "Relais Gruppe" <poweroutlet>
String relais1Switch "Relais 1" <poweroutlet> (grp_relais) [ "Switchable" ] { channel="exec:command:relais1-control:input", autoupdate="true" }

Nach dem Speichern fehlt nur noch eine Sitemap, damit wir den Schalter des Relais auch setzen können. Du kannst natürlich auch eine existierende Sitemap erweitern.

 sudo nano /etc/openhab2/sitemaps/relais.sitemap

 

Rufen wir nun http://openhabianpi:8080/basicui/app?sitemap=relais auf, so sehen wir einen Switch, mit dem wir das Relais schalten können:

Das war es bereits. Durch drücken des Buttons kannst du nun dein Relais an- bzw. ausschalten.

 

Automatische Abschaltung

Bei manchen Projekten, wie bspw. Rollläden macht es Sinn, dass sich die mit OpenHAB verbundenen Relais nach kurzer Zeit automatisch abschalten. Beispielsweise dauert das Rollladen hoch- / runterfahren maximal 10 Sekunden – danach muss der Motor nicht mehr angeschaltet sein. Daher stellen wir nun noch einen zusätzlichen Abschaltmechanismus ein. Dazu benötigen wir OpenHAB 2 Rules.

Wir erstellen dazu eine neue Datei mit unserer Regel:

sudo nano /etc/openhab2/rules/relais_auto_off.rules

Speichere die Datei mit Strg+O. Kehre anschließend zur Kommandozeile zurück (Strg+X).

Teste das ganze, indem du das Relais per Oberfläche anschaltest. Nach wenigen Sekunden sollte es sich automatisch ausschalten.

 

Bedenke, dass bei Rollläden üblicherweise zwei Motoren (zum runter- und hochfahren) vorhanden sind, daher werden auch zwei Relais benötigt oder eben ein spezielles Relais.

Damit der Status der Relais auch bei einem Neustart gespeichert bzw. erneut gesetzt wird, kannst du das Persistance Add-on sowie Regeln (für nach dem Neustart) nutzen.

12 Kommentare

  1. Hallo Felix,

    vielen Dank für den Artikel.

    Wir führen grade eine Kernsanierung in einem alten Haus durch und verlegen dementsprechend auch die komplette Elektrik neu. Ich möchte das Licht im Haus mit den Relais uns dem Raspberry Pi steuern. Allerdings möchte ich dennoch das Licht konventionell mit einem Lichtschalter ein- bzw. ausschalten können. Ist dies generell möglich und wie weiß der Raspberry Pi, dass der Lichtschalter betätig wurde?

    Antworten
      • Vielen Dank für die Antwort. Leider nein, da ich soweit ich weiß keine Möglichkeit habe ebenfalls per Raspberry Pi das Licht zu steuern. Ich glaube aber die Lösung des Problems liegt in der Verwendung von Tastern, die das Relais steuern. Die Relais wiederum können dann wie von dir beschrieben mit dem Raspberry Pi gesteuert werden. Bin mir über den genauen Aufbau aber noch nicht im klaren und plane noch. Eventuell muss ich mir mal einen Testaufbau erstellen und probieren.

      • Hallo Michael,
        ich habe zwar openHab noch nicht im Einsatz, steuere aber einige Leuchten per „ElTako“ (Stromstoßschalter.). Diese benötigen offline (im Raum) einen Taster, parallel dazu kann ich über ein Python-Script einen kurzen Impuls auf das Relais schalten.
        Unschön dabei ist, dass Du nicht siehst ob das Relais eingeschaltet oder ausgeschaltet ist. Dazu habe ich dann Koppelrelais installiert. Diese schalten bei Stromfluss einen Kontakt den ich wiederum mit dem pi einlese.
        Bisschen viel Aufwand, tut’s aber.
        In Zukunft werde ich mich mal mit openHab beschäftigen, mal sehen ob’s schöner geht.

      • Hallo Stefan,

        vielen Dank für die Info. Ich fürchte auf soetwas läuft es hinaus. Dann kann ich erstmal alles Lichter über Relais einplanen und im nachhinein dann mit des Raspberry Pi experimentieren.

      • Und nochmal ich: Stefan wie hast du denn die normalen EITAKO-Relais an den Raspberry angeschlossen. Irgendwie will mir das nicht einleuchten, da diese ja anders sind als die vorinstallierten auf den Boards.

  2. Hallo Michael,
    mich hat vor ein paar Jahren diese Frage auch beschäftigt. Ich habe vom Elektriker einfach eins machen lassen. Zu den Schaltern der Brennstellen, die zusätzlich vom Raspberry zu steuern sind, habe ich vom Sicherungskasten ein zusätzlich Kabel ziehen lassen, da am Schalterausgang (also z. B. die Phase zu einer Lampe) angeschlossen ist. Dieses Kabel kann man dann über ein vom Raspberry geschaltetes Relais mit „Plus“ schalten und somit den Schalter „überbrücken“.

    Hier muß man nur darauf achten, dass die zusätzlichen Kabel homogen zur übrigen Verkabelung sind (Sicherungskreise und FI-Kreise).

    Für Rolläden geht man wie folgt vor. Zu dem Rolladenschalter verlegt man vom Rolladenkasten ein 5-adriges Kabel. Wir lassen mal Erde und Null bei dieser Betrachtung aussen vor.
    Der Rolladenschalter hat einen Eingang (Phase i. d. braun) und 2 Ausgänge ( hoch und runter zur Rollade, z. B. schwarz und grau). Dabei schliesst man an den Ausgängen des Rolladenschalters jeweils 2 Kabel an. Am Ausgang „Rollade hoch“, das Kabel zum Rolladenmotor und schwarz des 5-adrigen Kabels, das vom Sicherungskasten kommt. Analog der Ausgang „Rollade runter; ein Kabel zum Rolladen-Motor und das graue des 5-adrigen Kabels, was vom Sicherungskasten kommt.

    Nun kannst Du „braun“ an die Sicherung anschliessen und die Rollade normal über den Schalter bedienen oder Du trennst braun von der Sicherung und schließt entweder das schwarze oder graue Kabel im Sicherungskasten an die Phase der Sicherung und die Rollade fährt auf oder ab.
    Diese Schaltung läßt mit 2 Wechselrelais -siehe oben in den Ausführungen von Felix- leicht realisieren. Ich schalte in meinem Haus damit 9 Rollädenmotoren und habe darüber auch die „Zeitsteuerung“ realsiert, so dass ich einfache Schalter im Wohnraum montiert habe und auf „Zeitrelais“ -die ja alle einzeln zu programmieren wären, verzichtet habe.

    Antworten
  3. Hallo,

    ich habe mit dem Tutorial ein 8er 5v Relais am Pi verbunden und Teste nur mit einem angeschlossenen Relais. Es leuchtet dauerhaft.
    Wenn ich auf der erstellten Seite in openHab den Schalter „Relais 1“ aktiviere, tut sich nichts. Sollte ist nicht klacken?
    Das o.g. Tutorial basiert auf dem GPIO 23 also auf Pin 16 gesteckt wie auf dem Foto oben, ja?

    Antworten
  4. Hallo, habe das selbe Problem wie Thorsten, nach eingabae aller skripts leuchtet die LED des Relais dauerhaft, allerdings erst nach 5 sec. also nach dem Programmierten Timeout. Ich habe einen kleinen Testaufbau mit meinem Experimentierboard gebaut, auch hier leuchtet die LED erst nach betätigen des Schalters nach 5sec.

    #Thorsten: ja ist pin 16 GPIO 23

    Antworten
  5. Frage in die Runde: Ich habe mir bei Amazon auch diese 4fach Relais Karte geklickt, 3 Stück. Jetzt habe ich schon mit dem zweiten Rolladen-Motor immer wieder das Phänomen, dass die Relais „kleben“ bleiben: Obwehl es noch klickt und die LED den gewünschten Schaltzustand richtig ausweist, bleibt der Kontakt zum Motor weiter geschlossen. Das führt dazu, dass sich der Rolladen eben nicht mehr bewegt, bzw. nur noch ruckelt, weil ja ein Relais (das kaputte, „verklebte“) immer an ist und der Motor nicht mehr laufen kann. Ich habe eine wirklich kleine Jalousie und der Motor ist mit unter 1A Stromaufnahme angegeben. Die Relais sind laut Aufdruck bis 10A ausgelegt.
    Kennt das jemand oder kann mir jemand einen Grund dafür nennen?

    Antworten
  6. Kleiner Hinweis an diejenigen, die irgendwo Relais zwischen schalten. Wie Jago schon sagte steht auf seinen Relais „10 A“ drauf. Ich vermute mal, sein Sicherungskasten ist konventionell aufgebaut, also mit 16 A Sicherungen. Auch wenn der Rollo-Motor hier nur 1 A benötigt, möchte man an anderer Stelle vielleicht eine Steckdose schalten, deren Verbraucher noch nicht feststeht oder gibt es einen Kurzschluss am Verbraucher, brennt im günstigsten Fall das Relais durch, bevor die Sicherung auslöst, im ungünstigsten Fall das ganze Haus.

    Ich habe zu Hause auch mit Relais für jeden einzelnen Verbraucher gearbeitet. Da ich aber keine Relaisboards mit höherwertigeren Relais gefunden habe, habe ich kurzer Hand mein eigenes Board designed und zu einem guten Preis professionel fertigen lassen. Das ganze hatte für mich folgende Vorteile:
    – Anzahl der Relais auf meine Bedürfnisse angepasst
    – Relais vertragen 16 A
    – Auf dem Board sind direkt auch Optokoppler verbaut, die die Taster einlesen
    – Für Rollos sind die Relais so angeordnet, dass immer nur Phase 1 oder Phase 2 geschaltet sein kann und niemals beide gleichzeitig (sonst geht der Motor auf Dauer kaputt).
    – Kommunikation mit den GPIOs des Raspberry Pi erfolgt über eine Flachbandleitung

    Antworten
  7. @Jago
    Wenn Du die Relaisboards (mit blauen Relais) verwendet hast, die man zu Hauf im Internet für nur wenige EUR findet, dann kommen die mit großer Wahrscheinlichkeit aus China und sind von minderer Qualität. Wenn ich mich richtig erinnere gibt es genügend schlechte Bewertungen über Boards, die bereits bei der Anlieferung defekt waren.

    Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Blog abonnieren

Abonniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!