Trådfri-Beleuchtungssystem von IKEA mit Linux steuern

Trådfri ist das schwedische Wort für „drahtlos“ und damit eine passende Bezeichnung für ein „smartes“ Beleuchtungssystem. Im einfachsten Fall kombiniere ich ein Leuchtmittel mit einem Aktor. Davon gibt es drei:

Eine Fernbedienung, einen Dimmer und einen Bewegungsmelder. Will ich  zusätzlich meine Leuchtmittel bequem vom Smartphone steuern, benötige ich  noch ein Gateway. Das Gateway ist eine kleine Steuerzentrale, die am  Ethernet hängt und ihre Kommandos an die Leuchtmittel funkt. Als  Protokoll kommt dabei ZigBee Light Link zum Einsatz.

Kompatible Leuchten gibt es mit den Sockeln E14, E27 und GU10, außerdem  werden LED-Panele angeboten, die an die Wand gehängt oder in Möbel  integriert werden können. Bei den meistenLeuchtmittel kann nicht nur die Helligkeit, sondern auch die Lichtfarbe von kalt- bis warmweiß angepasst werden. In der App, die es für Android und iOS gibt, lassen sich Lichtstimmungen abspeichern und schnell wieder abrufen.

Alles nett, aber nicht automatisch genug, und natürlich möchte ich das ganze System nicht per App steuern. Statt dessen möchte ich, dass das Beleuchtungssystem sich dynamisch dem Umgebungslich anpasst, also bei einsetzender Abenddämmerung etwa langsam heller wird. Wann es dunkel wird, weiß der Linux-PC, der die Daten der Photovoltaik auswertet (und natürlich tut’s ansonsten auch ein simpler Helligkeitssensor). Eben jener Linux-PC soll nun dem Ikea-Gateway Kommandos geben, die dieses wiederum an die Leuchten durchreicht.

Das erreiche ich durch den Einsatz von libcoap. CoAP, das Constrained Application Protocol, ist auf Maschine-zu-Maschine-Kommunikation spezialisiert. Die Installation erfordert diese Kommandos:

Installation von libcoap

sudo apt -fym install libtool autoconf automake buid-essential
git clone --recursive https://github.com/obgm/libcoap.git
cd libcoap
git checkout dtls
git submodule update --init --recursive
./autogen.sh
./configure --disable-documentation --disable-shared
make
sudo make install

Dass libcoap auf Maschine-zu-Maschine-Kommunikation optimiert ist, macht die Syntax für uns Menschen leider recht sperrig. Das folgende Kommando schaltet ein Leuchtmittel aus:

coap-client -m put -u "Client_identity" -k "laskuhgoACBUWHG" -e '{ "3311": [{ "5850": 0 }] }' "coaps://10.0.0.42:5684/15001/65537"

Der String „Client_identity“ ist fix. Der Buchstabensalat hinter „-k“ ist ein Sicherheitsschlüssel. Er steht auf einem Aufkleber auf der Unterseite des Gateways. Die „3311“ ist ein Aktor, die 3311 steht für einen Dimmer. Die „5850“ ist der Code für „Ein-/Ausschalten“, gefolgt von 0 für aus oder 1 für ein.

Es fehlen noch die Adressaten. Das Gateway wird mit seiner IP-Adresse (hier 10.0.0.42) und dem Port 5684 angesprochen. Die „15001“ bedeutet, dass wir ein einzelnes Leuchtmittel ansprechen möchte (15004 adressiert eine Gruppe). Die letzte Zahl, 65537, ist die ID des Leuchtmittel, die Zahl 65537 ist immer das erste angelernte Leuchtmittel. Weitere erhalten 65538, 65539 und so weiter.

Dankenswerterweise gibt es einen Python-Wrapper, der die libcoap-Aufrufe wesentlich erleichtert.

Der Python-Wrapper

Die zusätzliche Software, die uns die Leuchtensteuerung wesentlich erleichtern wird, ist mit wenigen Kommandos installiert:

sudo pip install tqdm
git clone https://github.com/sandyjmacdonald/ikea-smartlight
cd ikea-smartlight

Im Verzeichnis „ikea-smartlight“ legen wir eine Datei mit dem Namen tradfri.cfg an, die die IP-Adresse des Gateways und dessen Sicherheitscode enthält (klebt unter dem Gehäuse):

[tradfri]
hubip = 10.0.0.42
securityid = laskuhgoACBUWHG

Jetzt stehen uns simple Kommandos zur Steuerung und Statusabfrage zur
Verfügung. Der Screenshot zeigt die Ausgabe des Kommandos „tradfri-status.py“:

 

Es wurden acht Leuchtmittel gefunden, die zu einer Gruppe zusammengefasst sind. Um ein einzelnes Leuchtmittel zu steuern, benutze ich das Kommando tradfri-lights.py.

Die folgenden drei Beispiele zeigen, wie man das Leuchtmittel zuerst einschaltet, dann auf die Hälfte der maximalen Leuchtkraft dimmt, und schließlich die Lichtfarbe zu warmweiss ändert:

#einschalten
tradfri-lights.py -l 65538 -a power -v on

#auf 50 Prozent Leuchtkraft dimmen
tradfri-lights.py -l 65538 -a brightness -v 50

#Lampe warmweiss leuchten lassen
tradfri-lights.py -l 65538 -a color -v warm

Achtung: die Änderung der Farbtemperatur wird nicht von allen Leuchtmitteln unterstützt.

Mit dem Kommando tradfri-groups.py funktioniert das gleiche auch für ein Gruppe von Leuchtmitteln. Anstelle von „-l <ID der Leuchte>“ wird hier der Parameter „-g <ID der Gruppe>“ verwendet, der Rest ist identisch.

Damit steht einem schwedischen Luciafest im eigenen Wohnzimmer nichts mehr im Wege.

 

4 Gedanken zu „Trådfri-Beleuchtungssystem von IKEA mit Linux steuern“

  1. Sehr cool, danke für die Info.
    Die Datei sollte den Namen „tradfri.cfg“ haben – vielleicht kannst Du das noch ergänzen.

    Viele Grüße,
    Michael

  2. Beim Kommando
    sudo apt -fym install libtool autoconf automake buid-essential
    fehlt nur ein „l“ bei build-essential.

    Die Optionen -fym würde ich nicht übergeben – du weißt nicht, was bei anderen Rechnern sonst noch an offenen Baustellen vorliegt.

Kommentare sind geschlossen.