Hausautomatisierung mit FHEM Teil 2 – FHEM installation und Einrichtung auf dem Raspberry Pi

Im ersten Teil der Tutorial Serie haben wir einen eigenen CUL, das Herzstück für die drahtlose Kommunikation mit Geräten, gebaut und am Raspberry Pi angebunden. Mein CUL funkt auf 868MHz mit dem Ziel Geräte auf Basis des HomeMatic Protokoll in FHEM zu integrieren.

In diesem Artikel der Serie installieren wir die OpenSource Hausautomations-Software FHEM auf unserem Raspberry Pi mit dem Ziel einen möglichst stabilen, langlebigen und Verbrauchs-armen Hausautomation-Server aufzubauen. Die Software bietet neben einer breiten Unterstützung an Protokollen viele Funktionen die ich schon immer in einem System zusammenfassen wollte. Bislang betreibe ich noch zwei einzelne Lösungen für die Temperaturaufzeichnung (EmonCMS) und für die Steuerung von Geräten mit pilight die ich gerne in einer Lösung zusammenfassen möchte.

Inhaltsverzeichnis

Hardware

Ich verwende neben meinem selbstgebauten CUL folgende Hardware, es ist auch ein RasPi 1 B oder B+ möglich.

Zu überlegen für den langzeit Betrieb

  • Eine aktive oder passive Kühlung
  • Eine Ersatz SD-Karte (die gehen gerne kaputt)
  • Eine USB-Festplatte oder NAS zur Speicherung der Daten / Konfiguration / Backups

Vorbereitungen

Wer den ersten Artikel der Serien nicht durchgearbeitet hat, oder nur FHEM installieren möchte, muss folgende Vorbereitungen treffen

Installation von FHEM

Die Installation von FHEM ist dank verfügbarer Pakete für Debian von fhem.de unter Raspbian recht einfach, es werden alle notwendigen Abhängigen direkt mit installiert.

Nach dem Reboot können wir via Browser direkt auf die FHEM Weboberfläche Zugreifen,

  • http://<IP-Adresse-RasPi>:8083/fhem bei mir geht auch http://raspberrypi:8083/fhem

fhem-erster-start

Als erstes prüfen wir auf Updates, tippt hierzu in der Textbox „update“ ein und drückt Enter.

fhem-update

Nachdem das Update durchgelaufen ist müssen wir einmal den Server neu starten, tippt hierzu „shutdown restart“ in die Textbox ein und drückt Enter. Nach ein paar Sekunden ist die Webseite wieder erreichbar.

Die zentrale Konfigurationsdatei für FHEM ist die fhem.cfg diese kann entweder auf der Kommandozeile (/opt/fhem/fhem.cfg) mit einem Texteditor oder über die Weboberfläche unter „Edit Files“ > „fhem.cfg“ bearbeitet werden. Alternativ ist für fast alles auch ein passendes Kommando verfügbar.

FHEM Grundeinrichtung

Bevor wir mit der Einrichtung unseres CUL starten erledigen wir noch einige grundsätzliche Dinge um die man sich bei Inbetriebnahme einer Software kümmern sollte. Da mir Sicherheit wichtig kümmere ich mich als erstes darum.

Obligatorisches

FHEM Webseite absichern – SSL aktivieren

Da die Kommunikation mit der Webseite im Standard unverschlüsselt stattfindet, ich später aber meine FHEM Installation über das Internet erreichen will, richte ich als erstes eine SSL Verschlüsselung ein. Hierfür generiere ich erst ein selbst signiertes Zertifikat via SSH Kommandozeile mit dem Tool OpenSSL, hierfür benötigen wir erst einen privaten Schlüssel

Aus dem privaten Schlüssel generieren wir einen öffentlichen Schlüssel der für das SSL Zertifikat verwendet wird

Am wichtigsten ist die Option “Common Name”, gebt hier den Hostnamen, oder falls ihr DynDns verwendet die DynDNS Adresse ohne http, Namen eures RasPi ein. Der Hostname ist, falls ihr diesen nicht geändert habt, “raspberrypi”. Mit Ausnahme einer E-Mail Adresse und einem Passwort könnt ihr alles andere leer lassen.

openssl-csr

Wir entfernen noch das Passwort von der Datei um zu verhindern das uns der Webserver immer danach fragt und generieren dann das Zertifikat server.crt

Wir erstellen für FHEM nun noch das Verzeichnis in welchem die Zertifikate liegen sollen und ändern die Rechte

Dann kopieren wir unsere gerade erstellen Dateien dort hinein

Auf der Weboberfläche in der Befehlsbox werden folgende Befehle abgesetzt um SSL für FHEM zu aktivieren.

Danach ist die Webseite via verschlüsselter Verbindung erreichbar – https://raspberrypi:8083

FHEM Webseite absichern – Benutzer einrichten

Wer gerne seinen FHEM Server mit dem Smartphone oder Tablet von unterwegs steuert muss noch ein Kennwort für den Zugriff einrichten, zusätzlich sollte die Seite für den Gebrauch aus dem Browsder ebenfalls abgesichert werden.

  • URL für den Smartphone Zugriff – https://raspberrypi:8084/fhem
  • URL für den Zugriff via normalem Browser – https://raspberrypi:8083/fhem
  • URL für den Zugriff via Tablet – https://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 „MeinPasswort„.

Die Kombination ergibt bei mir „cmFzcGJlcnJ5LnRpcHM6UGEyMjAwd29ydA==„. Die weitere Einrichtung erledigen wir direkt über die FHEM Kommandoeile im Browser

fhem-kommandozeile

Für die Smartphone Seite

Für den normalen Zugang

Für den Zugang via Tablet

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 für jedermann, daher vergeben wir auch hier ein Passwort. Ein Base64 String ist hier nicht notwendig.

FHEM Tweaks

Da die SD-Karten nicht für dauerhafte Schreib- und Lesevorgänge geeignet sind (sie gehen schneller kaputt) optimiere ich das Raspbian Betriebssystem noch mit zwei kleinen Einstellungen um unnötiges Schreiben zu verhinden.

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

FHEM Sicherung

Als äußerst wichtig empfinde ich noch eine regelmäßige Datensicherung, diese sollte nach Möglichkeit automatisch auf einer externen Festplatte oder auf einem NAS (zum Beispiel der FritzBox) gespeichert werden. Ein automatisches tägliches Backup um 23:59 richten wir mit folgenden beiden Kommandos über die FHEM Oberfläche ein.

Die Backups landen nun automatisch in /opt/fhem/backup als komprimierte Tar Datei, ich plane die Dateien dann automatisch in meiner Dropbox zu speichern, mehr hierzu bei nächster Gelegenheit.

FHEM CUL einrichten und Geräte verbinden

Nachdem nun die langwierige aber notwendige Grundeinrichtung abgeschlossen ist können wir endlich unseren Selbstbau CUL in FHEM einbinden.

Wie wir bereits wissen hängt sich der CUL als /dev/ttyUSBx an unserem Raspberry Pi ein, da sich dieses Device aber nach einem Reboot oder durch anstecken weiterer Geräte ändern kann verwenden wir die eindeutige ID. Die Dateien finden sich unter /dev/serial/by-id (falls ihr mehrere Nanos ohne FTDI Chip verwendet funktioniert die Methode u.U. nicht da sich manche Chips keine eindeutige ID haben).

serial-by-id

Zeigt mir die eindeutige ID des USB-Serial welche ich zum Einrichten des CUL in FHEM verwende, folgendes gebe ich in die Kommandozeile auf der FHEM Webseite ein.

Das @38400 gibt die Baudrate an (verwendet für den Busware CUL 9600 Baud) und 1234 steht hier für eine vierstellige Hexadezimal Zahl für FHT80b Thermostate, da ich keinen habe verwende ich 0000. Vergesst nicht das Kommando save.

Danach müsste euer CUL über „Everything“ > „NanoCUL“ auf der Webseite auftauchen und den Status initialized haben.

cul-in-fhem

Ob die Kommunikation klappt könnt ihr ganz einfach über den Befehl get uptime auf der Oberfläche kontrollieren.

CUL Get Uptime

Für alles weitere stelle ich mir erst mal das Logging auf den verbose Modus (später wieder entfernen) und

Dann setze ich meinen CUL in den HomeMatic Modus und aktiviere das „Pairing (verbinden)“ von HM Geräten.

Bei meinem HomeMatic 105155 Funk-Stellantrieb für Heizkörper drücke ich zum initiieren des Pairing für ein paar Sekunden die mittlere Taste. Im Log sehe ich nun schön den Pairing Vorgang,

Im nächsten Tutorial der Serie beschäftige ich mich dann mit der Steuerung der HomeMatic Geräte via FHEM.

Weitere Tutorials aus dieser Serie