Altes IKEA Trådfri Modul für FHEM

Wichtig: Die hier beschriebene Modulversion basiert auf veralteter Software und ist auch nicht mit neuesten IKEA-Tradfri-Updates kompatibel. Schaut euch die aktuelle Version hier an.

Dieser Artikel beschreibt eine Erweiterung für die FHEM Hausautomatisierungssoftware. Es ermöglicht die Verbindung mit einem IKEA Trådfri Gateway.

Links & Repository

Das Modul installieren

Führe folgende Kommandos in FHEM aus um die Trådfri-Repository hinzuzufügen.

update add https://raw.githubusercontent.com/peterkappelt/Tradfri-FHEM/master/src/controls_tradfri.txt
update
shutdown restart

Voraussetzungen

Zusammenfassung:

  • Perl JSON packages (JSON.pm), auf meinem Systemen können sie mit sudo apt-get install libjson-perl installiert werden
  • libcoap, und die enthaltene Software coap-client
  • IKEA-Geräte: ein Gateway, eine Lampe und eine Fernbedienung/ ein Dimmer

Ihr braucht eine IKEA Trådfri  Lampe oder ein Panel, ein Steuergerät (wie ein Dimmer oder die Fernbedienung und ein Gateway.
Der Gateway muss mit der Trådfri-App eingerichtet werden, das Steuergerät und die Lampen müssen mit dem Gateway verbunden sein.
Achtung: Macht nicht denselben Fehler, den ich gemacht habe.  Ihr könnt nicht nur eine Lampe und ein Gateway kaufen. Ein Steuergerät, wie der runde Dimmer, ist auch notwendig.

Die JSON-Perl Pakete sind notwendig.

Weiterhin muss auf dem System die Software „libcoap“ installiert werden. Ihr könnt die Repository hier finden: https://github.com/obgm/libcoap
Um diese Software zu kompillieren empfehle ich, die Dokumentation der Software zu konsultieren. Ich führte folgende Kommandos in der Shell des Systemes aus:

sudo apt-get install libtool

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

Hinweis: Ein Nutzer hat berichtet, dass er „autoconf“ auf seinem System installieren musste. Ihr müsst dafür einfach nur sudo apt-get install autoconf ausführen, wenn euer System Apt nutzt.

Was diese Modul kann

Momentan könnt ihr Folgendes mit dem Modul anfangen. Das Modul ist noch in Entwicklung, weitere Features werden künftig dazukommen.

Geräte („Devices“) Gruppen („Groups“)
Ein-/ Ausschalten X X
Ein-/ Aus-Status lesen X X
Ein-/ Aus-Status periodisch lesen X X
Ein-/ Aus-Status in Echtzeit aktualisieren
Helligkeit setzen X X
Helligkeit lesen X X
Helligkeit periodisch lesen X X
Helligkeit in Echtzeit aktualisieren
Farbtemperatur setzen X
Farbtemperatur lesen X
Farbtemperatur periodisch lesen X
Farbtemperatur in Echtzeit aktualisieren
Stimmung setzen X
Stimmung lesen
Informationen über eine Stimmung anzeigen
Stimmung periodisch lesen
Stimmung in Echtzeit aktualisieren

Weitere Funktionen:

  • Informationen über Lampen anzeigen, wie Firmware-Version, Typ, Erreichbarkeitsstatus, …
  • Die IDs aller Geräte anzeigen, die mit dem Gateway verbunden sind
  • Die IDs aller Gruppen anzeigen, die im Gateway konfiguriert sind
  • Die IDs aller Stimmungen anzeigen, die für eine Gruppe definiert sind

…und einige andere Funktionen, die hier nicht gelistet sind (aber in der FHEM commandreference)

Was das Modul nicht kann

Diese Punkte sind noch nicht implementiert:

  • Neue Geräte verbinden, Gruppenmitgliedschaften zuweisen
  • Verändern und Hinzufügen von Stimmungen

Einstieg

Ihr müsst das Folgende tun um eine Lampe zu steuern:

1. Die Gatewayverbindung deklarieren

  • Ein neues Gerät in FHEM definieren: define TradfriGW TradfriGateway
  • Libcoap muss auf dem System installiert sein (siehe oben)
  • Vergesst nicht, die Perl JSON-Pakete (JSON.pm) zu installieren (siehe „Voraussetzungen“ für einen Hinweis, wie ich sie installierte)
  • Ihr könnt die IP des Gateways oder dessen DNS-Adresse nutzen
  • Der „Secret-Key“ (Sicherheitsschlüssel) steht auf einem Aufkleber auf der Unterseite des Gateways
  • Die Einstellungen durch Ausführen von save in FHEM speichern
  • Prüft durch das ausführen von get TradfriGW coapClientVersion, ob das Module die gerade installierte Software „coap-client“ aufrufen und ausführen kann. Wenn etwas ausgegeben wird, dass wie eine Versionsnummer aussieht, sollte alles in Ordnung sein. Bei der Ausgabe von „UNKNOWN“ lief irgendetwas schief. Vermutlich ist die Software coap-client nicht in der Umgebungsvariable PATH vorhanden.

Debugging von get coapClientVersion = UNKNOWN

  • Führt which coap-client in der Konsole des Systems aus. Wenn dieses Kommando nichts ausgiebt gab es wahrscheinlich einen Fehler beim kompillieren oder installieren von libcoap.
  • Auf meinen System wird „/usr/local/bin/coap-client“ ausgegeben
  • Entfernt den letzten Teil des Pfades, was bei mir „/usr/local/bin“ ergibt
  • Bearbeitet die Definition des Gateway-Gerätes in FHEM und fügt den Pfad des Coap-Clients hinzu: defmod TradfriGW TradfriGateway /usr/local/bin
  • Für die, die sich etwas mit Linux auskennen: Der dritte Parameter fügt etwas zu der FHEM-internen PATH-Umgebungsvariable hinzu, so dass coap-client gefunden wird.

2. Ein einzelnes Gerät steuern

  • Lasst euch eine Liste aller Geräte anzeigen: get TradfriGW deviceList. Eine möglich Ausgabe sieht so aus:
    - 65536: IKEA of Sweden TRADFRI wireless dimmer (TRADFRI wireless dimmer) 
    - 65537: IKEA of Sweden TRADFRI bulb E27 opal 1000lm (Fenster Links) 
    - 65538: IKEA of Sweden TRADFRI bulb E27 opal 1000lm (Fenster Rechts) 
    

    Bei mir sind drei Geräte vorhanden: Zwei Lampen und ein Dimmer. Die Geräte sind mit den Namen, die ihr in der App eingestellt habt, markiert.

  • Definiert ein neues Gerät mit einer der Adressen, die ihr gerade herausgefunden habt (es muss eine Lampenadresse sein, das Modul kann nicht mit Steuergeräten interagieren): define Bulb1 TradfriDevice 65537
  • Prüft, ob das Gateway-Gerät in FHEM korrekterweise als IODev zugeordnet wurde.
  • Nun kann das Gerät gesteuert werden:
    set Bulb1 on schaltet die Lampe ein
    set Bulb1 off schaltet die Lampe aus
    set Bulb1 dimvalue x setzt die Helligkeit der Lampe, dabei ist x eine ganze Zahl zwischen 0 und 254
    set Bulb1 color warm setzt die Farbtemperatur auf Warm-Weiß (wenn unterstützt)
  • Wenn die Farbtemperatur direkt im FHEM Webinterface gesteuert werden soll muss das Attribut webCmd auf dimvalue:color gesetzt werden
  • Weitere Informationen über das Steuern von Geräten ist in der automatisch generierten FHEM HTML commandref verfügbar, unter TradfriDevice

3. Eine Gruppe steuern

  • Lasst euch die Liste aller Gruppen anzeigen: get TradfriGW groupList. Das Kommando wird etwas in dieser Form ausgeben:
    - 193768: Wohnzimmer

    Bei mir ist nur eine Gruppe, „Wohnzimmer“, eingerichtet.

  • Definiert eine neue Gruppe mit einer Adresse, die ihr gerade herausgefunden habt: define Group1 TradfriGroup 193768
  • Prüft, ob das Gateway korrekterweise als IODev zugeordnet wurde.
  • Ihr könnt nun die Gruppe steuern, wie ein einzelnes Gerät:
    set Group1 on schaltet alle Geräte der Gruppe ein
    set Group1 off schaltet alle Geräte der Gruppe aus
    set Group1 dimvalue x setzt die Helligkeiten aller Geräte in der Gruppe auf einen bestimmten Wer, dabei ist x eine ganze Zahl zwischen 0 und 254
  • Wenn die Helligkeit direkt im Webinterface gesteuert werden soll muss das Attribut webCmd auf dimvalue gesetzt werden.
  • Weitere Informationen über das Steuern von Geräten ist in der automatisch generierten FHEM HTML commandref verfügbar, unter TradfriGroup

Was, wenn mein FHEM nicht mehr reagiert?

Eigentlich sollte das nicht mehr passieren. Wartet fünf Sekunden und alle Prozesse, die mit diesem Trådfri-Modul zu tun haben, sollten sich selbst beenden. Wenn ihr es hinbekommt, das Modul abzuschießen, würde ich mich über ein kurzes Feedback freuen (mit eurer Log, eurer Konfiguration und einer Beschreibung, was ihr gemacht habt, um FHEM mittels diese Modules zum Absturz zu bringen)

Credits

Ich möchte mich bei den Leuten von home-assistant.io bedanken. Sie haben schon vorher gute Arbeit beim Reverse-Engineering des Protokolles gemacht, was mir bei der Implementierung sehr geholfen hat..
https://community.home-assistant.io/t/ikea-tradfri-gateway-zigbee/14788/18

Anleitung

Die aktuelle Anleitung und deren Übersetzung ist auf meiner Webseite, also hier verfügbar. Siehe http://electronic.kappelt.net/wordpress/en/ikea-tradfri-module-for-fhem/ (English) oder http://electronic.kappelt.net/wordpress/de/ikea-tradfri-module-for-fhem/ (Deutsch). Auf meinen Seiten könnt ihr auch Kommentare hinterlassen. Eine FAQ-Seite wird bald erstellt werden.
Auch im FHEM-Forum gibt es einen Thread, ihr könnt ihn hier finden: https://forum.fhem.de/index.php/topic,70653.0.html

Kontakiert mich

Falls ihr einen Github-Account habt: Bitte Öffnet einen Issue, mit der passenden Beschreibung des Problemes. Ihr könnt mir auch eine Email senden, wobei ich Github-Issues bevorzuge:  [email protected]

12 Antworten auf „Altes IKEA Trådfri Modul für FHEM“

  1. Eine interessante Sache. Ich bin allerdings noch etwas unsicher, was nun besser ist. Die hier vorgestellte Lösung nutzt das Tradfri-Gateway. Wenn ich das richtig verstehe, kann man damit allerdings nicht die Hue-Lampen (zumindest nicht die farbigen) steuern. Auch ob man die Tritfri-Schalter nutzen kann, ist mir noch nicht klar (insbesondere, wie man die Tradfri-Begrenzung nur ein Schalter je Lampe umgeht).

    Die Alternative, die ich bisher gefunden habe, wäre RaspBee+deConz. Dort lassen sich die Tradfri-Schalter als Geräte anlegen (sensoren) und die Lampen ebenfalls. Auch die das hue-System läuft damit. RaspBee+deConz ersetzen somit (ausgenommen für Firmware Updates) sowohl die Tradfri-, als auch die Hue-Bridge. Da beide Geräte-Kategorien damit an der gleichen „Zentrale“ angemeldet sind, wäre das dann doch nur ein Mesh-Netzwerk, wärend bei Verwendung von Tradfri und hue zwei getrennte Netzwerke vorhanden wären, so dass hue nicht als Reichweitenverlängerung für Tradfri arbeitet und umgekehrt.

    Andererseits sind bei Tradfri noch einige Firmwareupdates zu erwarten, ständiges Ummelden der Leuchtmittel ist da ärgerlich.

    Insoweit weis ich jetzt nicht, welchen Weg ich einschlagen soll: Tradfri-Gateway mit dem hier vorgestellten Modul (was Firmwareupdates leichter macht) oder RaspBee+deConz als Gateway, was Tradfri-Geräte gegenüber fhem+hue-Modul als hue-Geräte ausgibt. Preislich ist das ja kaum ein Unterschied (29,99 Tradfri-Bridge, 35€ RaspBee). Momentan spricht für das hier vorgestellte Modul vor allem, dass ein Firmwareupdate für Tradfri kommen könnte, welches Tradfri über die Hue-Bridge ansteuerbar macht (ist wohl die Hauptforderung der Kunden). Dann würde sich zwar das hier vorgestellte Modul erledigen, das IKEA-Gateway bräuchte man aber eh fürs Firmwareupdate; ebenso erledigt sich dann aber die Ansteuerung via RaspBee…

    Ist denn irgendwas geplant, auch hue über das hier vorgestellte Modul anzusteuern?

    1. Hallo,

      nein, es ist nicht geplant, Hue in das Modul zu integrieren – schließlich gibt es ja schon eines für FHEM.

      Ehrlich gesagt denke ich nicht, dass man mit dem Hue-Gateway jemals Tradfri ansteuern kann – da wird sich Philipps gegen sträuben. Selbst wenn ein Tradfri-Update zur Hue-Kompatibilität geliefert wird, wird Philipps das schnell wieder blockieren. Philipps und IKEA stehen im Konkurrenzverhältnis, IKEA ist bei den einfachen Lampen der Preissieger (wenn auch vielleicht nicht bei der Auswahl).

      Wenn du vor hast Hue & Tradfri anzusteuern, ist das von dresden elektronik die bessere Wahl.

      Dieses Modul ist primär für Leute gedacht, die tatsächlich (und ausschließlich) das Tradfri-Gateway nutzen wollen/ müssen.

      Ich hatte beispielsweise bis kürlich noch keine dimmbare Beleuchtung. Die günstigen Lampen waren dann der Ansporn für mich, mal welche einzubauen. Somit habe ich bei mir nur den Tradfri-Gateway sitzen, welcher für Beleuchtung zuständig ist.

  2. Hallo,

    vielen Dank für die Veröffentlichung. Allerdings habe ich leider ein Problem bei der Einrichtung des Moduls.

    Die Antwort auf den Befehl „get TradfriGW devicelist“ ist bei mir immer „Error while trying to fetch devices!“.

    Der Befehl „get TradfriGW coapClientVersion“ funktioniert und gibt eine korrekte Antwort mit Versionsnummer zurück. Allerdings scheint dieser Befehl immer zu funktioniert, unabhängig davon ob ich eine richtige oder falsche IP-Adresse für die TradfriGW eingetragen habe.

    Haben Sie eine Idee woran der Fehler bei mir liegen könnte?

    1. ich habe den gleichen Fehler und würde mich über eine Lösung des Problems freuen.
      wenn ich „coap-client -m get -k PSK -u Client_identity coaps://IP/15001“ in die Kommandozeile eingebe, bekomme ich diesen output:
      „v:1 t:CON c:GET i:24f3 {} [ ]
      decrypt_verify(): found 24 bytes cleartext
      decrypt_verify(): found 4 bytes cleartext
      4.01“

  3. Danke Peter für die tolle Arbeit, mit dem Java Beta Modul geht es auf Anhieb, wo libcoap noch Probleme machte.
    Ich habe FHEM aber auf einem PI Zero, da ist RAM und CPU etwas knapp und ich so meine Bedenken wenn ich an Java denke. Was sind denn Deine Gedanken zum Ressourcenbedarf?

    Gruß
    Andreas

  4. Hallo,

    nachdem ich wie beschrieben durch das to do für die neue Authentifizierung gehangelt habe kann ich nun meine Lampen über fhem ein/aus schalten. Jedoch werden die readings nicht aktualisiert. Wenn ich die Lampen über meine Fernbedienung ausschalte wird dies in fhem nicht aktualisiert. Woran kann das liegen?

  5. Hallo,

    ist es auch möglich, Setups mit mehreren Gateways abzubilden? Ich habe eins per Etage, anders geht es leider nicht. Und die Lampen-IDs sind alle gleich. Wie kann man das lösen?
    Ansonsten lief die Einrichtung gut, auch der Fix für die neue Firmware ging recht simpel!

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.