Die ersten Schritte mit FHEM

FHEM ist kein typisches Klicki-Bunti-Programm, dass von Grund auf dem Anwender alle Arbeit abnimmt. Allein schon die initialen Schritte nach der Installation sind für einen Anfänger eine Hürde, die viele abschrecken, sich näher mit der Programm zu beschäftigen und ihm eine Chance zu geben, seine Mächtigkeit zu demonstrieren.

Was wird benötigt?

Für die grundlegende Installation von FHEM wird erst einmal nur ein Raspberry Pi in der Version 3 benötigt. FHEM läuft auch auf den älteren Raspberrys, aber bedingt durch den schnelleren Prozessor, macht das Arbeiten auf dem Pi 3 einfach mehr Spaß. Außerdem sind Bluetooth und WLAN schon an Board und somit wird hier keine weitere Hardware benötigt.

Hier die benötigten Komponenten:

 

Raspberry Pi 3 Netzteil micro SD-Karte

 

Installation von FHEM

Als Grundlage soll hier ein fertig installierter Raspberry Pi dienen. Wir nutzen die Linux-Distribution Raspbian in der Version „Stretch“ (aktuelle Version kann unter https://www.raspberrypi.org/downloads/raspbian/ heruntergeladen werden). Es genügt hier die lite-Version ohne grafischen Desktop, denn FHEM an sich wird über den Browser konfiguriert und genutzt.

Prinzipiell würden für FHEM die folgende zwei Pakete reichen:

sudo apt-get install libdevice-serialport-perl
sudo apt-get install libio-socket-ssl-perl

da wir aber später noch mehr machen wollen (z.B. das Funkmodul HM-MOD-RPI-PCB für HomeMatic, SSL, Mailversand, usw.), installieren wir gleich in einem Rutsch ein paar Pakete mehr mit.

Zu Beginn fehlende Abhängigkeiten auflösen:

sudo apt-get -f install

Benötigte Pakete (die beiden oben angeführen sind auch wieder dabei) installieren:

sudo apt-get -y install libdevice-serialport-perl libio-socket-ssl-perl 
sudo apt-get -y install perl-base libwww-perl libcgi-pm-perl libjson-perl libtext-diff-perl sqlite3 libdbd-sqlite3-perl libtimedate-perl libmail-imapclient-perl libgd-graph-perl libtext-csv-perl libxml-simple-perl liblist-moreutils-perl libimage-info-perl libusb-1.0-0-dev ttf-liberation libimage-librsvg-perl libgd-text-perl libsocket6-perl libio-socket-inet6-perl libmime-base64-perl libnet-server-perl

Zum Schluss dann noch FHEM herunterladen und installieren. Bei der Erstellung dieser Anleitung war die Version 5.8 die aktuellste Version. Auf der FHEM-Homepage kann nach einer neueren Version gesucht werden.

sudo wget http://fhem.de/fhem-5.8.deb
sudo dpkg -i fhem-5.8.deb

Zum Abschluß sollte der Raspberry neu gestartet werden und nach dem Reboot kann FHEM im Browser über die IP des Raspberrys geöffnet werden:

http://192.168.178.113:8083

Die jeweilige IP des Raspberry kann im Router (Fritzbox, Speedport, …) ausgelesen werden. Wichtig ist der Port (:8033) nach der IP-Adresse

Erste Schritte auf der Oberfläche

Hat man FHEM erfolgreich installiert, begrüßt FHEM den Anwender mit

SecurityCheck:
WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth.
telnetPort has no associated allowed device with password/globalpassword.

und schon ist der Anfänger überfragt. Was soll ich jetzt machen?

Die Fehlermeldung soll uns sagen, dass aktuell kein Passwortschutz für die unterschiedlichen Ausspielungs-Kanäle (Web, Tablett und Handy) gesetzt wurde. Auch Telnet ist noch komplett offen. Wird FHEM nur im lokalen Netzwerk betrieben werden und nie von außen erreichbar gemacht, dann kann diese Warnung ignoriert bzw. stumm geschaltet werden.

Hinweis: Die folgenden Kommandos müssen in das Feld in FHEM eingegeben und mit Return abgeschickt werden!

Option 1: Stumm schalten

attr global motd none

Option 2: Passwörter setzen

Über die Konsole muss ein Base64-kodierter String aus Benutzername und Passwort erzeugt werden

echo -n frank:geheimes_passwort | base64

Natürlich sollte hier ein anderer Benutzername und Passwort verwendet werden.

Als Ausgabe erhält man einen base64-String:

ZnJhbms6Z2VoZWltZXNfcGFzc3dvcnQ=

Die Authentifizierung für Web in FHEM setzen:

define allowed_WEB allowed
attr WEB basicAuth ZnJhbms6Z2VoZWltZXNfcGFzc3dvcnQ=

Daraufhin erscheint das Browser-Fenster für Benutzer/Passwort

Analog dazu kann bzw. sollte das auch für den Tablet- und Handy-Zugang gemacht werden:

define allowed_WEBtablet allowed
attr WEBtablet basicAuth ZnJhbms6Z2VoZWltZXNfcGFzc3dvcnQ=
define allowed_WEBphone allowed
attr WEBphone basicAuth ZnJhbms6Z2VoZWltZXNfcGFzc3dvcnQ=

Nun müssen diese Änderungen noch gespeichert werden. Dies kann entweder über „Safe config“ im Menü geschehen oder per Befehl

save

Hinweis: Wenn hinter dem Menüeintrag „Safe config“ ein rotes Fragezeichen steht, dann stehen offene Änderungen an, die noch gespeichert werden müssen. Ein Klick auf das „?“ ziegt die offenen Änderungen.

Abschließend muss FHEM noch mal neu gestartet werden. Dies geschieht über

shutdown restart

Nach dem Neustart sieht der Warnhinweis schon anders aus:

SecurityCheck:
telnetPort has no associated allowed device with password/globalpassword.

Die erste Hürde wurde geschafft. Abschließend setzen wir noch das Telnet-Passwort:

define allowed_telnetPort allowed
attr allowed_telnetPort globalpassword geheimespasswort
attr allowed_telnetPort validFor telnetPort

Hier muss nun das Klartextpasswort eingegeben werden!

Wiederum die Änderungen speichern und FHEM neu starten

save
shutdown restart

Geschafft! Nach dem Neustart kommen nun keine Warnmeldungen mehr!

HTTPS aktivieren

Zum Abschluß wollen wir noch FHEM über eine sichere Verbindung (HTTPS) aufrufen. Die dazu notwendigen Module wurden bereits installiert.

Wir gehen wieder auf die Konsole und legen ein neues Verzeichnis an

cd /opt/fhem
sudo mkdir certs

In diesem Verzeichnis erstellen wir unser SSL Zertifikat

cd certs
sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem

Die Ausgabe sollte so aussehen:

Generating a 2048 bit RSA private key
.....+++
............................................................................................+++
writing new private key to 'server-key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:

Hier kommen nun ein paar Fragen zur Person bzw. Standort. Die Felder können aus gefüllt werden, müssen aber nicht.

Es werden zwei neue Dateien erzeugt, denen noch die notwendigen Rechte gegeben werden muss, damit das SSL-Modul die Dateien lesen kann:

sudo chmod 644 /opt/fhem/certs/*.pem
sudo chmod 711 /opt/fhem/certs

Nun noch HTTPS in FHEM aktivieren

attr WEB HTTPS
attr WEBphone HTTPS
attr WEBtablet HTTPS

und abschließend noch

save
shutdown restart

Danach muss FHEM über https:// aufgerufen werden!

Da das Zertifikat selbst erstellt wurde, kommt eine Warnung des Browsers. Hier „Ausnahme hinzufügen“ (beim Firefox), dauerhaft zulassen und bestätigen. Nun ist die Verbindung per SSL verschlüsselt!

 

 

 

 

 

Schreibe einen Kommentar

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

 
x