IKEA Trådfri module for FHEM

This is a small extension module for the FHEM Home-Control software. It enables connectivity to an IKEA Trådfri gateway.

Read me

This page describes a previous version of the FHEM-Module. If you are interested in testing the module, try the beta version. Though I still call it “Beta”, it is already stable and ready for usage. You can read about it here.

Links & Repository

Beta version

There is a beta version in development, that is going to introduce many new and great features. I’m searching for people who would like to test it. If you are interested, you can read about it here.

Install to FHEM

Run the following commands to add this repository to your FHEM setup:

Prerequisites

Summary:

  • Perl JSON packages (JSON.pm), on my setups they can be installed by running sudo apt-get install libjson-perl
  • libcoap, and its binary coap-client
  • IKEA devices: a gateway, a bulb and a remote control/ dimmer

You need to have an IKEA Trådfri Bulb or Panel, a Control-Device (e.g. the Dimmer) and the Gateway.
The gateway has to be set-up with the App, the control device and the bulbs need to be paired.
Caution: Do not make the same mistake I’ve made. You can not just buy a bulb and a gateway. You need a control device, like the round dimmer, too!

The JSON-Perl packages are required.

Furthermore, you need to install the software “libcoap”. You can find its repository here: https://github.com/obgm/libcoap
This library needs to be built, have a look into its documentation. I’ve run the following commands:

Note: An user reported, that he had to install “autoconf” on his system. You can just run “sudo apt-get install autoconf” on your system, if you use Apt-Get.

What this module can do

You can currently do the following with the devices. Please note, that this module is still in development and there will be new functionality.

Devices Groups
Turn on/ off X X
Get on/ off state X X
Update on/ off state periodically X X
Update on/ off state in realtime
Set brightness X X
Get brightness X X
Update brightness periodically X X
Update brightness in realtime
Set the color temperature X
Get the color temperature X
Update the color periodically X
Update the color in realtime
Set the mood X
Get the mood
Get information about a mood
Update the mood periodically
Update the mood in realtime

Additional features:

  • Get information about a bulb, e.g. firmware version, type and reachable state
  • Get the IDs of all devices that are connected to the gateway
  • Get the IDs of all groups that are configured in the gateway
  • Get the IDs of all moods that are configured for a group

…and some more features, that aren’t listed here (but in the FHEM command reference)

What this module can not do

These points will be implemented later:

  • Pair new devices, set group memberships
  • Moods can’t be modified, added

Getting started

You need to do as follows in order to control a bulb:

1. Declare the Gateway-Connection

  • Define a new device in you FHEM setup: define TradfriGW TradfriGateway <Gateway-IP> <Gateway-Secret-Key>
  • Libcoap must be installed on the system
  • Don’t forget to install the Perl JSON packages (JSON.pm). See “Prerequisites” for a hint how I’ve installed them.
  • You can use the gateway’s IP address or its DNS name
  • You can find the Secret Key on the bottom side of your gateway. It is marked as the “Security Code”.
  • Save your config by running the save command in FHEM
  • Check, whether the module can detect and access the just compiled software “coap-client” by running get TradfriGW coapClientVersion. If it returns something, that looks like a version number, everything should be fine. If it returns “UNKNOWN” there is a problem. Probably, the coap-client directory is not stored in path.

Debugging get coapClientVersion = UNKNOWN

  • run which coap-client on the system command line. If this command returns nothing, it is likely, that there was an error while compiling and installing libcoap.
  • On my system, it returns “/usr/local/bin/coap-client”
  • Remove the last part from the path and remember it, now I’ve got “/usr/local/bin”
  • Edit the definition of the gateway device and append the coap path to its definition: defmod TradfriGW TradfriGateway   /usr/local/bin
  • For those, who are used to linux: The third parameter adds something to the FHEM PATH environment variable, so the module is able to locate the coap-client

2. Control a single device

  • Get the list of devices: get TradfriGW deviceList. It will return something like that:

    In my setup, there are three devices: Two bulbs and one control unit. The devices are labeled with the names you configured in the app.
  • Define a new device, with one of the adresses you’ve just found out (it must be a bulb’s address, this module is unable to interact with controllers): define Bulb1 TradfriDevice 65537
  • Check, if the gateway device was asigned correctly as the IODev
  • You can now control this device:
    set Bulb1 on will turn the lamp on
    set Bulb1 off will turn the lamp off
    set Bulb1 dimvalue x will set the lamp’s brightness, where x is between 0 and 254
    set Bulb1 color warm will set the lamp to warm-white (if supported)
  • If you like to set the color temperature and the brightness directly in the web-interface, set the attribute webCmd to dimvalue:color
  • You can get additional information about controlling devices in the automatically generated FHEM HTML command reference, under TradfriDevice

3. Control a lighting group

  • Get the list of groups: get TradfriGW groupList. It will return something like that:

    In my setup, there is only one group called “Wohnzimmer”.
  • Define a new group, with one of the adresses you’ve just found out: define Group1 TradfriGroup 193768
  • Check, if the gateway device was asigned correctly as the IODev
  • You can now control this group, like a single device:
    set Group1 on will turn all devices in the group on
    set Group1 off will turn all devices in the group off
    set Group1 dimvalue x will set all brightnesses of the group to a certain value, where x is between 0 and 254
  • If you like to set the brightness directly in the web-interface, set the attribute webCmd to dimvalue
  • You can get additional information about controlling groups in the automatically generated FHEM HTML command reference, under TradfriGroup

What to do, if my FHEM isn’t responding anymore?

Actually, this shouldn’t happen anymore. Wait 5 seconds, and all processes, that are related to this Trådfri module, should kill themselves.
If you managed to kill this module, fell free to contact me (with your log, you configuration and a description, of what you did to make FHEM unresponsible).

Credits

I’d like to thank the guys from the home-assistant.io community, they already did some reverse-engineering of the protocol, which helped me implementing the protocol.
https://community.home-assistant.io/t/ikea-tradfri-gateway-zigbee/14788/18

Manual

This manual, in its up-to-date version, for this module, and a translation, is available on my website. See http://electronic.kappelt.net/wordpress/en/ikea-tradfri-module-for-fhem/ (English) or http://electronic.kappelt.net/wordpress/de/ikea-tradfri-module-for-fhem/ (Deutsch). You may also leave a comment there. A FAQ page will be created soon.
You can find a thread in the FHEM forum here: https://forum.fhem.de/index.php/topic,70653.0.html

Contact me

If you’ve a Github account: please open an issue, with the appropriate description of your problem. You may send me an email, though issues are prefered: [email protected]

12 Replies to “IKEA Trådfri module for 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.

    1. In der Theorie sollte es funktionieren – zumindest mit der Java-Beta. Dort gibt es das Kommando “set color” – das kannst du einen beliebigen sechsstelligen RGB-Farbcode übergeben.

  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. Hallo,

    ich habe seit kurzem das gleiche Problem wie meine Vorredner.

    Status ist nach Gatewayupdate auf IDLE und es ist keine Verbindung zum Gateway möglich.

    Hat dafür schon jemand eine Lösung?

  4. 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

  5. I am typically to running a blog and i actually recognize your content. The article has actually peaks my interest. I am going to bookmark your website and keep checking for new information.

  6. 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?

  7. 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!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.