SmartHomeNG als Dienst einrichten update

Um SmartHomeNG als Dienst zu betreiben muss eine Startup-Datei für systemd erstellt werden.

Warnung

Bevor man als Neuling SmartHomeNG als Dienst einrichtet, sollte man das System verstanden haben und es sollte fehlerfrei laufen.

Zum Einrichten den Texteditor starten mit

sudo nano /etc/systemd/system/smarthome.service

und folgenden Text hineinkopieren:

[Unit]
Description=SmartHomeNG daemon
After=network.target
After=knxd.service
After=knxd.socket

[Service]
Type=forking
ExecStart=/usr/bin/python3 /usr/local/smarthome/bin/smarthome.py
WorkingDirectory=/usr/local/smarthome
User=smarthome
PIDFile=/usr/local/smarthome/var/run/smarthome.pid
Restart=on-failure
TimeoutStartSec=900
RestartForceExitStatus=5

[Install]
WantedBy=default.target

Achtung

Die Angabe RestartForceExitStatus=5 ist notwendig, damit der automatische Restart bei der Nachinstallation von Python Packages und der durch die AdminGUI ausgelöste Neustart auch für ein als Service laufendes SmartHomeNG funktionieren.

Der so vorbereitete Dienst kann über den systemctl Befehl gestartet werden.

sudo systemctl start smarthome.service

Im Log schauen, ob keine Fehlermeldung beim Starten geschrieben wurde.

tail /usr/local/smarthome/var/log/smarthome-warnings.log

Wenn alles ok ist, kann der Autostart aktiviert werden:

sudo systemctl enable smarthome.service

Bei Systemstart wird nun SmartHomeNG automatisch gestartet.

Um den Dienst wieder auszuschalten und den Neustart bei Systemstart zu verhindern nutzt man:

sudo systemctl disable smarthome.service

Um zu sehen, ob SmartHomeNG läuft, genügt ein

sudo systemctl status smarthome.service

Läuft es noch nicht und man möchte sozusagen manuell starten reicht ein:

sudo systemctl start smarthome.service

Ein Neustart von SmartHomeNG würde mit

sudo systemctl restart smarthome.service

funktionieren, ein Stop von SmartHomeNG entsprechend

sudo systemctl stop smarthome.service