Heimautomatisierungsbasisoffensive, Teil 5 – der eigene Service

Die Lösung etherwake über SSH auf dem Host zu starten hat mir überhaupt nicht gefallen, vor allem weil man sie bei jeder Änderung am FHEM Image manuell nachziehen musste. Jetzt gibt es eine wirklich smarte Lösung, nämlich einen RemoteStart Dienst via HTML Schnittstelle, eingehangen in Systemd. Hört sich kompliziert an, ist aber relativ einfach.

Bottle, den Mini-Webserver in Python, hatte ich vor einem Jahr schon mal für die Aquariumsteuerung verwendet. Jetzt lauscht er auf Port 8080 vom Host und wartet dass ihm jemand aufruft (Zeile 14). Standardmäßig gibt er ein Smily zurück (Zeile 10-12). Ruft man aber den Pfad /startServer (Zeile 6) macht er einen Systemaufruf und versendet das Magic Paket (Zeile 8). Fertig ist der Lack:

#!/usr/bin/python
import os
from bottle import route, run, template
@route('/startServer')
def startServer():
    return os.system("/usr/bin/wakeonlan 30:9c:23:46:36:xx")
@route('/')
def hello():
    return ':-)'
run(host='192.168.178.3', port=8080)

Damit der Server auch bei jedem Neustart automatisch gestartet wird, muss man einen Systemd-Service einrichten. Dazu legt man eine kurze Service-Konfiguration an sudo vim /etc/systemd/system/remoteStart.service, das war es dann auch schon:

After=network.target
[Service]
ExecStart=/home/christian/docker/smarthome/remote_start/remote_start.py
[Install]
WantedBy=default.target

Sau coole Geschichte! Jetzt überlege ich schon was man damit noch anstellen könnte, das ist ja so eine Art Schweizer-Taschenmesser-Panzertape-MacGyver-Nummer in Code gegossen.

Schreibe einen Kommentar