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

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.

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

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (5 votes, durchschnittlich: 3,60 von 5)
Loading...

Über raspberry.tips

16 Kommentare

  1. Tolle Anleitung.

    Aber dein Netzteil mit 1,2mA wage ich zu bezweifeln.
    Das würde beim ersten Bootversuch sofort in die Knie gehen.
    Denke es sind eher 1,2A

    Gruß Elektrickser

  2. Hey, tolle Seite.

    Kannst du schon sagen, wann du den Teil 3 “Steuerung von HomeMatic Geräten mit FHEM (folgt in Kürze)” Online bringst?

  3. Hey bis hier super Anleitung es Pi2 läuft nur bekomme ich FHEM nicht heruntergeladen Fehlermeldung immer wget ungültige option — 0

    Kann wer helfen so einfahch supper

  4. Hallo,

    mein erster FHEM versuch mit einem Raspi.

    RASPBIAN JESSIE
    Based on Debian Jessie
    Version:September 2015
    Release date:2015-09-24
    Kernel version:4.1
    Release notes:Link

    Es sind keinerlei Probleme während der Installation aufgetreten. Status

    pi@raspifhem / $ sudo /etc/init.d/fhem status
    fhem is running

    Ich erreiche dennoch nicht das Webinterface mit

    http://192.168.178.xx:8083/fhem

    unter dem Raspi desktop funktioniert
    localhost:8083/fhem
    ebenfalls nicht.

    Ich habe keine Veränderung an den Configs vorgenommen.
    Der Raspi ist normal über ssh im Netzwerk erreichbar

    Würde mich über hilfe seht freuen…
    mmiii

  5. Hallo,
    ich lese mich auch seit Tagen durch die Tutorials, weil ich mich gerne mit Hausautomatisierung über einen RPI beschäftigen möchte. Da ich nicht der König des Lotkolbens bin würde ich mich für den verlinkten “CC1101-USB-Lite 868MHz (CUL)” entscheiden und diesen “fertig” kaufen. Gilt es dort noch etwas zu beachten? Gibt da ja noch etliche Optionen (Abschirmung / Antenne).
    Dann würde mich natürlich der 3. Teil mit der Integration von Homeatic brennend interessieren, denn irgendwie muss ich ja auch noch Geräte ansteuern. Wäre super, wenn hier noch ein Update oder zumindest ein Verweis auf eine vernünftige, alternative Anleitung käme.
    Danke und Gruß

  6. Hallo
    Wozu brauche ich eigentlich den arduino? Kann ich den 800 mhz Sender nicht irgendwie direkt über den gpio ansprechen?

  7. Hallo,

    vielen Dank für die tolle Anleitung.

    Es klappt alles ganz hervorragend bis zum den Punkt, an dem ich versuche, die FHEM Tweaks einzuspielen.

    Leider bleibt mein Raspi nach dem Auslagern der beiden Verzeichnisse /var/log und /var/run in den Arbeitsspeicher sowie dem Deaktivieren der Swap-Datei mit der Meldung “Start job is running for dev-mmcblk0p1.device (dev-ttyAMA0.device)’ mit einem Time-out hängen und ist dann nicht mehr bedienbar.

    Ich kann mich nach einer ‘Emergency’-Meldung zwar als root mit angeschlossener Tastatur einloggen, jedoch nicht mehr über Putty, und auch FHEM wird nicht mehr gestartet.

    Ich verwende einen Raspi B+, der direkt an der Fritzbox hängt.

    Hast du evtl. eine Ahnung, was mein Fehler sein könnte und vor allem, wie ich diesen wieder beheben kann?

    Viele Grüße
    Mischa

  8. P.S. In meiner fstab stand vor der Ergänzung:

    proc /proc proc defaults 0 0
    /dev/mmcblk0p1 /boot vfat defaults 0 2
    /dev/mmcblk0p2 / ext4 defaults,noatime 0 1

    Dort ist genau das Device aus der Fehlermeldung aufgeführt.

  9. P.P.S. Habe jetzt die beiden Zeilen

    none /var/run tmpfs size=5M,noatime 00
    none /var/log tmpfs size=5M,noatime 00

    wieder aus der fstab gelöscht – nun läuft wieder alles o.O

    Lag also wohl nicht an der Auslagerungsdatei. Aber wie bekomme ich den Tweak mit den ausgelagerten Verzeichnissen denn hin?

    Danke für deine Hilfe!

  10. Hi,

    vielen Dank für Das How-To.
    Hab da ne Frage zum Backup.

    Wo wird denn: “set SYS_Backup Ausführen” eingerichtet (bzw. SYS_Backup)
    Wenn ich den Befehl ausführe bekomme ich folgende Meldung:
    “Please define SYS_Backup first”

    Muss das in der aktuellen Version nur “Backup” heissen?

    MfG
    Sebastian

  11. Funktioniert dieses Tutorial auch bei OSMC anstatt Raspian?

  12. Hallo,

    ich habe eine Frage zu folgendem. Dies funktioniert bei mir nicht:

    “Wir kodieren nun in einer SSH Sitzung auf unserem RasPi den Benutzer und das Passwort im Format : in einen einfachen Base64 String, ich verwende als Benutzer “raspberrytips” und als Passwort “MeinPasswort“.
    echo -n raspberrytips:MeinPasswort| base64

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

    Wo gebe ich die Befehlszeile “echo -n raspberrytips:MeinPasswort| base64” ein und wie gebe ich den Strich vor base 64 ein? Bekomme ich den Code “cmFzcGJlcnJ5LnRpcHM6UGEyMjAwd29ydA==“ dann automatisch angezeigt?

    Ich bitte um Hilfe Danke.

  13. Hi & Danke für die Doku.
    Was bei mit nicht funktioniert ist das Swapfile deaktivieren und ins RAM auslagern.
    Da ich mit Network Shares arbeite wartet der RASPI beim booten auf das LAN um beim Booten zu mounten.
    Ist das Swapfile im Memory bootet das System nicht mehr richtig durch und stirbt!

    Es kommt nur noch die Meldung Ctrl-D

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.