Raspberry Pi als Türöffner – Relais Modul schalten – Teil 2

Nachdem nun unsere Schaltung soweit fertig ist und getestet wurde können wir uns der Software zum Steuern des Relais widmen. Da ich plane meinen Pi3 nicht nur als Türöffner zu verwenden, sondern weitere HomeMatic Komponenten anzusteuern ist die Auswahl der Software zur Steuerung der Relais GPIOs via Webseite recht eingeschränkt.

Inhaltsverzeichnis

Steuerungssoftware

Auch weiterhin fehlt eine richtige Alternative zu FHEM für die Hausautomatisierung, daher verwende ich auch für dieses Projekt die zwar recht komplizierte aber modular erweiterbare Automatisierungslösung FHEM. Die aktuelle Version ist die 5.7 vom 15.11.2015.

Wer die Grundeinrichtung auf seinem Raspberry Pi noch erledigen muss kann hierzu die Einsteiger-Tutorials verwenden.

FHEM installieren

Die Installation von FHEM ist, da es Debian Pakete gibt, recht einfach. Als erstes aktualisieren wir unser System und installieren Perl, auf welchem FHEM basiert. Mit einem Reboot aktivieren wir die neue Firmware.

Dann holen wir uns das FHEM 5.7 Installationspaket von der Webseite

Die Installation von FHEM starten wir dann mit folgendem Kommando

Wenn die Installation erfolgreich durchgelaufen ist könnt ihr die FHEM Webseite über den Browser eures Rechners oder vom Raspberry Pi aufrufen, ersetzt ggf. die IP-Adresse mit der eures PIs (ifconfig gibt die IP aus).

  • Von eurem Rechner: http://raspberrypi:8083/fhem oder http://<IP-Adresse>:8083/fhem
  • Vom Raspberry Pi Desktop: http://localhost:8083/fhem

FHEM Webseite

FHEM absichern

Bei so einem sensiblen Aufgabenbereich wie der Türöffnung sollte euer Raspberry Pi zwinged abgesichert sein, passende Tutorials findet ihr hier:

Ebenfalls muss natürlich die FHEM Installation entsprechend abgesichert werden, das passiert indem wir den Zugang zur Webseite mit einem Benutzer und Passwort absichern. Es gibt verschiedene Seiten die wir absichern müssen.

  • URL für den Smartphone Zugriff – http://raspberrypi:8084/fhem
  • URL für den Zugriff via normalem Browser – http://raspberrypi:8083/fhem
  • URL für den Zugriff via Tablet – http://raspberrypi:8085/fhem

Wir kodieren nun in einer SSH Sitzung auf unserem RasPi den Benutzer und das Passwort im Format <Benutzer>:<Passwort> in einen einfachen Base64 String, ich verwende als Benutzer „raspberrytips“ und als Passwort „Passwort„.

Die Kombination ergibt bei mir „cmFzcGJlcnJ5dGlwczpQYXNzd29ydA==“. Die Einrichtung des Benutzer / Passwort  erledigen wir im Browser

FHEM Kommandozeile

Benutzer Passwort für die Smartphone Seite setzen

Benutzer Passwort für den normalen Webzugang setzen

Benutzer Passwort für den Zugang via Tablet s

Nach einem Neustart fragt euch der Webserver nach eurem Benutzername und Passwort.

FHEM Telnet absichern

Die Software bringt einen eigenen Telnet Server mit der auf Port 7072 lauscht, ohne Passwort ist das natürlich ein Einfallstor, daher vergeben wir auch hier ein Passwort, bei mir als Beispiel „Passwort“.

FHEM Tweaks

Da SD-Karten nicht für dauerhafte Schreib- und Lesevorgänge gemacht worden sind (sie gehen schneller kaputt) optimiere ich Raspbian noch mit zwei Einstellungen um unnötiges Schreiben auf die Kartenzu vermeiden.

Ich deaktiviere die SWAP Datei (Auslagerungsdatei für den Arbeitsspeicher)

Ich verlagere die Verzeichnisse /var/run und /var/log in dem Arbeitsspeicher, hierzu editiere ich die Datei /etc/fstab

Folgende Zeilen füge ich ans Ende der Datei an

GPIOs mit FHEM steuern

Das Prinzip beim Schalten der GPIO Pins mit FHEM auf dem Raspberry Pi ist recht einfach. Ich verwende hier ein Python Script, ein einfaches Shell Script ist natürlich auch möglich. Wichtig! Das Script muss zu eurem Öffner passen, laut Dokumentation erwartet mein Türöffner einen kurzen Schaltimpuls, er öffnet die Türe dann von selbst. Bei mir muss nicht dauerhaft durchgeschalten werden wie bei klassischen E-Öffnern. Ich habe eine Hörmann Türe mit AutoLock (Selbst-verriegelnd) und Komfortöffner, verbaut ist darin ein „GU-SECURY Automatic mit A-Öffner“ der Firma Gretsch-Unitas.

  1. Wir erstellen ein Python Script das unabhängig von FHEM die GPIO schalten kann
  2. Wir legen in FHEM einen Dummy Schalter an welcher das Script aufruft

Dummy Schalter anlegen

Als erstes erstellen wir daher unser Script unter /usr/sbin mit dem Editor Nano

Wir fügen dann folgenden Code ein

Speichert mit SRG+X, Y und Enter. Dann setzen wir noch +X und machen das Script ausführbar

Das Script wird mit zwei Parametern aufgerufen, -g (–gpioPin) für den Pin der geschalten werden soll und -s (–gpioPinDuration) für die Dauer. Zum Testen könnt ihr z.B. Pin 3 insg. 5 Sekunden schalten. Das Klackern des Relais sollte entsprechend zu hören sein.

Nachdem unser Python Script zum Schalten der GPIOs nun funktioniert müssen wir es in FEHM einbauen. Das erfolgt anhand eines Dummy Schalters. Wir fügen als erstes den Benutzer „fehm“ zur Gruppe „gpio“ hinzu, sonst darf FHEM die GPIOs nicht ansteuern.

Zum Anlegen des Schalters wechseln wir wieder auf die FHEM Webseite und geben folgendes Kommando ein

FHEM dummy Schalter

Wir landen auf den Einstellungen des erzeugten Dummy Schalters

FHEM Dummy Einstellungen

  • NAME ist der vergebene Name
  • TYPE ist der Typ des fhem-device, hier dummy.
  • STATE ist der Status des Geräts

Wir ordnen der Haustüre zum einfachen Verwalten noch einen Raum zu. Bei mir wird der Schalter „Haustüre“ nun einem zu erstellenden Raum „Flur“ zugeordnet

Dann erstellen wir quasi eine Beschreibung für den Schalter. Die erste Zeile hinterlegt eine Aktionen für den Schalter (Öffnen). Die zweite weißt der Aktion Öffnen den Status offen zu. Zusätzlich hinterlegen wir noch Icons für den Schalter und für den Status des Schalters.

Nach einem Klick auf „Save config“ und dann auf dem Raum „Flur“ sehen wir unseren erstellten Schalter

FHEM Relais Schalter

Schalter Ereignis definieren

Da der Zugriff auf die GPIOs via Python leider root Rechte benötigt müssen wir dem Benutzer FHEM leider noch rechte für das sudo Kommando geben.

Ganz unten fügen wir die Zeile ein und speichern mit STRG + X, Y und Enter

Den Schalter haben wir bereits via FHEM eingerichtet, nun müssen wir noch ein Ereignis hinterlegen. Das erstellte Python Script soll mit entsprechenden Parametern aufgerufen werden und die Türe öffnen. Daher Erstellen wir das Ereignis „haustuere_oeffnen, das auf den Tastendruck „Hastuere:Oeffnen“ lauscht und unser Python Script ausführt.

Nach dem Speichern des Ereignisses durch „Save config“ solltet ihr beim Klicken auf „Öffnen“ das gewünschte Klicken eures Relais hören. Glückwunsch, jetzt könnt ihr eure Haustüre via Raspberry Pi öffnen!

Relais verkabeln

Als letztes muss noch das gebaute Relais aus dem ersten Teil der Serie mit dem Türöffner verbunden werden, bei mir ist die Verbindung recht simpel, der G-U Autmatic Öffner hat drei Anschlüsse, Plus, Minus und eine Schaltleitung. Wenn zwischen Plus und der Schaltleitung durchgeschalten wird öffnet sich die Haustüre. Meine vorhandene Sprechanlage macht nichts anderes als 12V zwischen Plus und der Schaltleitung durchzuschalten.

Die Lösung ist also recht simpel, wir verbinden Pin 2 und Pin 3 des Relais als parallelen sSchließer zwischen Plus und der Schaltleitung. Vereinfacht dargestellt ergibt sich bei mir folgende Schaltung:

Relais Anschliessen

Einbau in den Sicherungskasten

Den Einbau war nach entfernen der Schutzabdeckung recht einfach, die Hutschienen Gehäuse an die Schiene Klemmen und alles sauber verkabel. Zusätzlich habe ich, da in meinem Sicherungskasten natürlich weder WLAN noch LAN verfügbar war, eine Schuko-Steckdose für Hutschienen besorgt und daran einen Powerline Adapter angeschlossen. Somit hat mein Pi auch im Sicherungskasten Netzwerkzugang.

Zur Optimierung des Powerline habe ich übrigens die Schucko Steckdose auf die Sicherung hängen müssen, auf welcher auch der andere Adapter an meinem Router hing, sonst war keine Übertragung möglich.

raspberry pi im sicherungskasten

Wichtig! Netzspannung ist lebensgefährlich! Lasst die Finger vom Sicherungskasten wenn ihr euch unsicher seit und arbeitet grundsätzlich niemals unter Last!

FHEM Tuning für den Raspberry Pi

Zur Optimierung von FHEM auf dem Raspberry Pi 3 habe ich noch folgende Optionale Konfigurationen erledigt.
Da ich LAN verwende deaktiviere ich WLAN und Bluetooth durch das Eintragen folgender Zeilen in die Datei „/etc/modprobe.d/raspi-blacklist.conf“, das spart etwas Strom.

Um Raspbian für den Dauerbetrieb zu optimieren deaktiviere ich noch swap

und leite durch editieren von /etc/fstab die sehr oft benutzten Verzeichnisse in dem RAM um. Fügt einfach folgende Zeile ans Ende der Datei an.

Zusätzlich benutze ich in FHEM noch die SYSMON Funktion, um Parameter wie Temperatur, CPU-Frequenz, RAM, Dateisystem auf der SD-Karte bzw. dem ggf. angeschlossenen USB Stick sowie den Datentransfer über Ethernet bzw. ggf. WLAN anzuzeigen. Details gibt es im FHEM WiKi