Raspian Jessie und FHEM – FHEM Start in systemd integrieren

Heute beginne ich damit, ein Pferd von hinten aufzuzäumen. Eigentlich beschäftige ich mich schon länger mit Hausautomation (November 2014 IIRC), habe aber noch nie einen Artikel in meinem Blog dazu verewigt. Aber heute ist es soweit. 🙂

Meine bisherige FHEM Installation läuft auf einem Raspberry Pi 2 unter Raspbian Wheezy, ist also Betriebssystem seitig nicht mehr ganz auf dem Stand der Zeit. Auf einem zweiten Raspberry habe ich daher das aktuelle Image von Raspbian Jessie Lite auf die SD-Karte geworfen und FHEM installiert. Nun kommt die FHEM Standardinstallation nach wie vor mit den klassischen SysV Startskripten daher, Rasbian/Debian Jessie setzt aber mittlerweile auf den systemd statt auf den klassischen SysV init. Nach der FHEM Installation wird FHEM zwar gestartet aber eben über das /etc/init.d/fhem Skript. Das wollte ich ändern und ich beschreibe hier, wie ich das tat.

FHEM systemd Unitfile erstellen

Der richtige Platz für eigene systemd Unitfiles ist /etc/systemd/system. Grundsätzlich unterscheidet systemd zwischen verschiedenen Arten von Unitfiles, eine Übersicht über die verschiedenen Arten können hier nachgelesen werden. Für unser Vorhaben wird ein Unitfile vom Typ .service benötigt, da wir einen Dienst starten wollen. Also die Datei /etc/systemd/system/fhem.service angelegt mit folgendem Inhalt:

Das Unitfile ist in 3 Bereiche eingeteilt: [Unit], [Service] und [Install]. Unter [Unit] werden allgemeine Informationen hinterlegt, wie Beschreibung, oder auch wo Dokumentation (manpage) gefunden werden kann (in obigem Beispiel nicht umgesetzt). Im [Service] Teil wird der eigentliche Start|Stop usw. des Dienstes konfiguriert.

Zum testen kann FHEM danach bereits mit dem Befehl systemctl start fhem.service  gestartet werden. Mit dem Befehl systemctl status fhem.service wird kontrolliert, ob der Dienst läuft:

Sieht gut aus, und FHEM kann über die IP oder den Hostnamen über den Browser aufgerufen werden. Die Ausgabe des Statusbefehls zeigt, dass FHEM nicht automatisch beim Systemstart gestartet wird. Das „disabled“ in Zeile 4 aus obigem Listing verrät uns dies.

FHEM bei Systemstart automatisch starten

Damit FHEM beim Systemstart automatisch gestartet wird, muss das erstellte Unitfile aktiviert werden. Dies geschieht über folgenden Befehl:

Der erste Befehl prüft ob das Unitfile evtl. bereit aktiviert ist, was nicht der Fall ist. Der zweite Befehl aktiviert das Unitfile. Beim nächsten Start des Systems würde FHEM automatisch gestartet werden. Die Aktivierung des Dienstes startet aber diesen nicht und muss mit systemctl start fhem.service nachgeholt werden.

Wichtig:
Damit es nicht zu Vermischungen von SysV Startskripten und systemd kommt, sollte das mit der FHEM Installation installierte Skript /etc/init.d/fhem entsorgt werden (besser: an einen anderen Platz verschoben werden, z.B. ~/backup/).

Wer weitere Informationen zu systemd haben will, dem empfehle ich einen Blick in die schön aufbereitete Dokumentation bei RedHat: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7

Veröffentlicht in Hausautomation Getagged mit: , ,

Schreibe einen Kommentar

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

*