Node-RED steu­ert Ikea Trådfri

Seit eini­gern Mona­ten bie­tet Ikea ein wach­sen­des Sor­ti­ment an smar­ter Beleuch­tung mit den pas­sen­den Steu­er­ele­men­ten zu halb­wegs güns­ti­gen Prei­sen an. Wie kann die Ein­bin­dung in unser Smart-Home aussehen?

Das sind zwar alles Zig­bee-Sen­der und -Emp­fän­ger, nor­mal funk­tio­nie­ren die aber nur mit der haus­ei­ge­nen Zen­tra­le und App.

CC2531 Zig­bee USB Stick

Aber es gibt ja das wun­der­ba­re zigbee2mqtt, dass Zig­bee-Gerä­te in MQTT ein­bin­den kann. Alles was man dazu braucht, ist ein CC2531-kom­pa­ti­bler USB-Stick, den man für 10-15 € bei diver­sen Ver­sen­dern ordern kann. 

Es soll­te die aktu­el­le „Koenkk”-Firmware auf­ge­spielt sein, min­des­tens die Ver­si­on vom Juni 2019 - eini­ge Ikea-Pro­duk­te, u.a. die E1743-Dim­mer, nut­zen das Zig­bee-Fea­ture der Bin­dung an Gerä­te­grup­pen, das erst ab die­ser Ver­si­on unter­stützt wird. Je nach Emp­fangs­si­tua­ti­on kann der Stick mit ver­schie­de­nen Anten­nen­ar­ten aus­ge­stat­tet wer­den; rechts seht ihr die ein­fachs­te Ver­si­on mit Print-Antenne.

Die zig­bee2m­qtt-Soft­ware kann direkt auf der Hard­ware des MQTT-Bro­kers betrie­ben wer­den, bei mir ist das ein Raspber­ry Pi 4 mit 2 GB Spei­cher und einer USB-SSD als Systemlaufwerk.

Die Instal­la­ti­on ist auf der zige­e2m­qtt-Sei­te gut erklärt und funk­tio­niert ohne Pro­ble­me. Ein instal­lier­tes und funk­ti­ons­fä­hi­ges MQTT und Node-RED set­ze ich mal vor­aus, ansons­ten seht euch den Smart-Home-Arti­kel an.

Auf der Node-RED-Sei­te ist das Plugin „Zigbee2MQTT Admin Panel” sehr hilf­reich bei Pai­ring und Namens­ver­ga­be der Zigbee-Geräte.

MQTT-Messages

Der Grund­auf­bau der Mes­sa­ge-Topics ist bei allen Gerä­ten gleich:

<prefix>/<friendly_name>/<command>

Der Prä­fix wird in der zig­bee2m­qtt-Kon­fi­gu­ra­ti­on ver­ge­ben, der Stan­dard­wert ist „zigbee2mqtt”.

Den friend­ly name legt man in der Gerä­te­kon­fi­gu­ra­ti­on, z.B. im Zigbee2MQTT Admin Panel, pro End­ge­rät fest. Bei mir hei­ßen sie Dimmer<n>, Lamp<n>, Plug<n> u.s.w., wobei <n> durch­ge­zählt wird.

Die Set-Befeh­le haben als Komm­man­do „set” und als Payload den Namen und Wert des gesetz­ten Para­me­ters als json-Struktur.

Die Get-Befeh­le haben als Komm­man­do „get” und als Payload den Namen des abge­frag­ten Para­me­ters mit lee­rem Wert als json-Struktur.

Typi­sche Befeh­le sind:

Topic

zigbee2mqtt/Lamp1/set
zigbee2mqtt/Lamp1/set
zigbee2mqtt/Lamp1/get
zigbee2mqtt/Lamp1/get

Payload

{"state": "ON"}
{brightness": "128"}
{"state": ""}
{brightness": ""}

Aktion

Lampe einschalten
Halbe Hellgkeit
Status abfragen
Helligkeit abfragen

Wenn ein Gerät selb­stän­dig eine Mes­sa­ge sen­det, z.B. wenn eine Tas­te gedrückt wird, schickt sie dies an das Topic

<prefix>/<friendly_name>

Bei­spiel: Ein kur­zer und ein lan­ger Tas­ten­druck auf den Ein-Tas­ter eines E1743-Dim­mers erzeugt fol­gen­de Messages:

Aktion

kurzer Druck auf Ein-Taste






langer Druck auf Ein-Taste







Taste loslassen

Topic

zigbee2mqtt/Dimmer2






zigbee2mqtt/Dimmer2







zigbee2mqtt/Dimmer2

Payload

{
"action":"on",
"click":"on",
"linkquality":63,
"update_available":false
}

{
"action":"brightness_move_up",
"action_rate":83,
"click":"brightness_up",
"linkquality":39,
"update_available":false
}

{
"action":"brightness_stop",
"click":"brightness_stop",
"linkquality":68,
"update_available":false
}

In der fol­gen­den Tabel­le fin­det ihr eine Über­sicht über die bei mir ein­ge­setz­ten Typen. Bei „Get” ste­hen bei „pas­si­ven” Gerä­ten (wie LEDs) die per Get-Mes­sa­ge abfrag­ba­ren und bei „akti­ven” Gerä­ten (wie Schalter/Dimmer) die per Action-Mes­sa­ge gesen­de­ten Parameter.

Gerät
LED 1836 G9

LED warmweiß

Get

state: {"state": ""}
brightness: {"brightness": ""}

Set

state: ON, OFF, TOGGLE
brightness: 0...255
transition: Zeit in Sekunden
brightness_move: +- 0...255, stop
brightness_step: 0...255
effect: blink, breathe, ok, channel_change, finish_effect, stop_effect

Reset

6x kurz einschalten


LED 1545 G12

LED mit Weiß-Spektrum

sta­te: {„sta­te”: „”}
bright­ness: {„bright­ness”: „”}
color_temp: {„color_temp”: „”}

sta­te: ON, OFF, TOGGLE
bright­ness: 0…255
tran­si­ti­on: Zeit in Sekun­den
brightness_move: +- 0…255, stop
brightness_step: 0…255
color_temp: 150…500
effect: blink, brea­the, ok, channel_change, finish_effect, stop_effect

6x kurz einschalten


LED 1624 G9

LED mit Farb-Spektrum

state: {"state": ""}
brightness: {"brightness": ""}
color: {"x": "", "y": ""}

state: ON, OFF, TOGGLE
brightness: 0...255
transition: Zeit in Sekunden
brightness_move: +- 0...255, stop
brightness_step: 0...255
color: {"x": X, "y": Y}
{"r": R, "g": G, "b": B}
{"rgb": "R, G, B"}
{"hex": HEX}
effect: blink, breathe, ok, channel_change, finish_effect, stop_effect

6x kurz einschalten


Dimmer E 1743

Ein-/Aus-Schalter und Dimmer

action:
on, off, brightness_move_up, brightness_move_down, brightness_stop
action_rate: 0...255
click:
on, off, brighness_up, brightness_down, brightness_stop
linkquality: 0...255,
update_available: true, false

simulated_brightness.delta: 0...255
simulated_brightness.interval: 0...255

Pairing-Knopf (Rückseite) 4x kurz drücken

Die Infor­ma­tio­nen stam­men auch aus eige­nen Ver­su­chen, zum grö­ße­ren Teil aber von der Lis­te der von zigbee2mqtt unter­stüt­zen Gerä­te, die zur Zeit (Dezem­ber 2020) 1147 Gerä­te von 184 Her­stel­lern enthält.

In Node-Red kann man das Ein- und Aus­schal­ten einer Ikea-Tråd­fri-Lam­pe mit einem Dash­board-Switch lösen, indem sta­te „ON” oder „OFF” an das set-Topic der LED gesen­det wird. Will man den wah­ren Sta­tus der Lam­pe am Schal­ter anzei­gen, legt man den sta­tus-Ein­gang an den Schal­ter und stellt den Indi­ca­tor auf „switch icon shows sta­te of the input” sowie „Pass through” auf off.

Für die Hel­lig­keit kann man einen Sli­der ein­set­zen, des­sen End­wer­te auf den Wer­te­be­reich der LED von 0 bis 255 gesetzt wer­den. Damit Schal­ter und Sli­der beim Start die rich­ti­ge Stel­lung haben, wird eine Sekun­de nach Start eine Sta­tus-Abfra­ge getrig­gert. Das gan­ze sieht dann so aus:

Hier könnt ihr den gesam­ten Flow her­un­ter­la­den.

Um einen „ech­ten” Tas­ter mit der Lam­pe zu ver­bin­den, wer­den die Topics des Tas­ters abon­niert. Ein klei­ner Sub­flow erle­digt die Umfor­ma­tie­rung der Messages und sen­det sie zur Lampe.

Anbin­dung eines Dim­mers an eine LED über den Sub­flow „Ikea E1743 Dimmer”

Zur Voll­stän­dig­keit auch hier der simp­le Flow zum Her­un­ter­la­den.

Inner­halb des Sub­flows schickt ein Switch-Node die Mes­sa­ge je nach action-Para­me­ter an ver­schie­de­ne Aus­gän­ge, hin­ter denen je ein Chan­ge-Node die Messages für die Lam­pe formatiert.

Inhalt des Sub­flows „Ikea E1743 Dimmer”

Hier auch die­ser Sub­flow zum Her­un­ter­la­den.

Die bei­den letz­ten las­sen sich natür­lich mit dem ers­ten Flow kom­bi­nie­ren, so dass man dann die Lam­pe sowohl vom Node-RED-Dash­board als auch vom Dim­mer aus steu­ern kann.

Durch die Nut­zung von MQTT und Node-RED statt der pro­prie­tä­ren Ikea-Steu­er­soft­ware sind wir jetzt auch in der Lage, belie­bi­ge ande­re Smart-Home-End­ge­rä­te mit der Ikea-Hard­ware zu ver­bin­den - auch sys­tem­über­grei­fend. Jede denk­ba­re Mischung aus Zig­bee-, WLAN-, Infra­rot- oder Home­ge­ar-Gerä­ten ist mög­lich, und über die Ein­bin­dung eine Fritz­box in Node-RED wären sogar DECT-Gerä­te erreichbar.

Veröffentlicht am
Kategorisiert in SmartHome

Schreib einen Kommentar

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