Wie ich schon in einem anderen Artikel beschrieben habe, können mit pilight kostengünstig Steckdosen geschaltet werden. Dabei können im Heimnetzwerk mehrere pilight-Dienste gestartet werden. Die Schaltvorgänge werden dann an alle pilight-Instanzen im Netzwerk übermittelt und von dort per Funk an die Aktoren übertragen. Auf diese Weise lässt sich vor allem die Reichweite der Funkmodule erweitern.

Da pilight seit einiger Zeit auch einen Transmitter auf Basis eines Arduino Nano über USB ansteuern kann und ich seit kurzem einen Turris Omnia besitze, wollte ich meine Hausautomatisierungslösung auf eine virtuelle Maschine auf dem Turris umziehen. Im ersten Schritt habe ich daher ein Debian in einem LXC-Container aufgesetzt. Damit ich nun auch pilight in diesem Container nutzen kann muss zunächst der pilight USB Nano eingebunden werden.

Hinweis: Auch wenn der Adruino Nano USB fast genauso angeschlossen und eingerichtet wird wie der Z-Wave-Stick (siehe Artikel ‘Turris Omnia: Z-Wave-Stick in LXC nutzen’) habe ich alle Einrichtungsschritte in dieser Anleitung wieder mit aufgenommen, damit nicht unnötig zwischen den Artikeln hin und her gesprungen werden muss.

Anmerkung: Im Folgenden müssen alle Kommandozeilen die mit host # beginnen im OpenWRT auf dem Turris Omnia, also dem Host, ausgeführt werden. Beginnt die Kommandozeile mit lxc #, müssen die Befehle innerhalb des LXC-Containers ausgeführt werden.

1| Kernel Modul installieren

Zunächst muss auf dem Host das fehlendes Kernel-Modul für Serial FTDI Devices installiert werden:

Danach wird der pilight USB Nano angeschlossen und per dmesg  kann überprüft werden, ob das Device /dev/ttyUSB0  korrekt erkannt und angelegt wird:

Wichtig ist dabei die Nummer 188 in der letzten Zeile. Diese muss in der LXC-Konfiguration angegeben werden, damit das Device entsprechend an LXC durchgereicht wird.

2| LXC-Config anpassen

Jetzt kann das das Device dem entsprechenden LXC-Container zugeordnet werden. Dazu wird in der Datei /srv/lxc/<container>/config  auf dem Host folgende Zeilen ergänzen ( <container>  muss natürlich mit dem eigenen Container-Namen ausgetauscht werden):

3| hotplug einrichten

Auch wenn es nicht zwingend erforderlich ist weil der pilight-Daemon in der Standardkonfiguration mit root-Rechten läuft, habe ich die Berechtigungen für das Device angepasst. Leider nutzt OpenWRT hotplug und nicht udev, so dass ich für die Einrichtung das Script /etc/hotplug.d/usb/10-usb_permissions  auf dem Host angelegt habe (siehe auch Artikel ‘Turris Omnia: Z-Wave-Stick in LXC nutzen’):

4| Gruppe einrichten

Jetzt muss noch die Gruppe plugdev auf dem Host und dem Gast-Systeme angelegt werden, falls diese nicht sowieso schon existiert.

Wichtig: Die Group-ID der plugdev-Gruppe muss auf dem Gast und Host-Betriebssystem identisch sein. Daher muss die Gruppen-ID im zweiten Kommando (-g Parameter) ggf. angepasst werden.

Wenn der Arduino Nano jetzt nochmal neu angesteckt wird, so sollte das Device folgende Berechtigungen auf dem Host zugewiesen bekommen:

5| Container neu starten

Passt alles kann der LXC-Container neu gestartet werden:

Sobald der Container wieder erreichbar ist sollte das Device nun auch im Gast-OS mit den korrekten Berechtigungen verfügbar sein:

Danach sollte die Einrichtung soweit abgeschlossen sein und pilight kann im Gast-System wie üblich installiert werden (siehe auch Steckdosen fernsteuern mit pilight – Teil 1 und Teil2). Bei der Konfiguration von pilight muss lediglich der Abschnitt hardware  in der Datei /etc/pilight/config.json  angepasst werden: