Binding IKEA Tradfri 5 button remote with IKEA FLOALT via zigbee2mqtt (UI)

Hey,

I was trying to achieve a seemingly easy thing: direct binding of IKEA Tradfri remote with dimmable IKEA FLOALT. I wanted to do that to have a better response time to dimming and also make it fail-safe if my HA is down.

What is achieved in this mini-guide

  1. Having the remote and light available in z2m
  2. Having direct binding of the controller to the light (therefore, if z2m is down, the controller still work)
  3. the same functionality (brightness, color changes) as if you didn’t use z2m at all (so you don’t lose anything with this guide)
  4. you won’t be able to get color temperature reporting (“updates”) if it’s changed via the controller (although you can still control it, e.g. from HA). What it means is that you cannot believe what color does the light have if you knew that someone could’ve changed it via the controller (mentioned here, firmware limitation)
  5. you will be able to bind different controllers to different lights, in 1:1 or 1:many fashion
  6. however, all of the lights on the same zigbee network will have to follow the same “scenes” (color temperatures - the thing that is changed when pressing >)

Steps

It’s actually almost whole described here, I am just going to show how to do it (partly) via UI.

  1. pair the controller and the light with your z2m stack, should look like this:

  2. go to the remote “Binding” tab and unbind the default group after you press some button on the remote (e.g. brigthness up)
  3. go to “Groups” tab in z2m and create one group for your light(s). It can have any ID, you can keep it blank for z2m to generate one for you. But then you must create a group with ID=65289. It can have arbitrary name, I recommend something like tradfri_scenes, but the ID must be the above. It should look like this:
  4. now, the binding of the remote. We are going to bind it to the group of lights we created previously (in my examples above group_alpha) not the scenes group.

    it should look like this then:
  5. now, even if z2m is down, the remote should be bind to your light and you should be able to control it. Unfortunately, changing the color doesn’t work. That’s where that tradfri_scenes weird group comes in, we’ll fix it :muscle: , but you need to get your hands dirty with mqtt as the UI doesn’t have scenes settings in yet.
  6. Update: since zigbee2mqtt 1.22, it’s possible to now set scenes via the UI as well. The following still work though. To make it “factory-reset-like”, you have to set three scenes to the tradfri_scenes, specifically sending the following JSONs to MQTT topic zigbee2mqtt/<tradfri_scenes_group_name>/set :
{"scene_add": {
                 "ID": 1,
                 "color_temp": 250,  # 250 means the most white
                 "state": "ON",
                 "transition": 1
             }
}

{"scene_add": {
                 "ID": 2,
                 "color_temp": 370,
                 "state": "ON",
                 "transition": 1
             }
}

{"scene_add": {
                 "ID": 3,
                 "color_temp": 454,  # 454 means the most yellow
                 "state": "ON",
                 "transition": 1
             }
}

for example, from command line, assuming your mqtt host is 192.168.0.201 with username and password z2m, while naming your scenes group as I did tradfi_alpha (I have typo there, I know), you would do:

mosquitto_pub -h 192.168.0.201 -u z2m -P z2m  -t "zigbee2mqtt/tradfi_alpha/set" -m '{
             "scene_add": {
                 "ID": 1,
                 "color_temp": 250,
                 "state": "ON",
                 "transition": 1
             }
         }'

and the same for the other two JSON payloads. Bonus: You could make transitions smoother and support even more color temperatures than just the basic three - you would simply add more. You could also set specific brightness and not just colors if you wanted (but note that all remotes/lights would follow these). When I was experimenting with it, I created this python script to generate scenes. I had to recreate the scenes to make it work for any new device added to the scenes group! (so when you add a new remote with a new light, then you add that light into that new group, you have to e.g. rerun that script with scenes or simply delete them and add them again).

Once this is done, it should all work as normal.

15 Likes

What a great instruction - and noone liked it or said “Thank you” so far :open_mouth:
Though it took me (absolute Zigbee2mqtt beginner) a while to understand and follow it worked in the first try!
I didn’t finish it completly, I didn’t yet implement the light color changing part but will try this as soon as possible.

Thank you very much! :+1:

1 Like

@kotrfa : I needed a 2nd light with a 2nd remote in a different room and used ID 65288 (instead of 65289) and everything is working as expected. I mention this because I thought your explaination would only work with the particular ID you mentioned.
Maybe someone else would like to know this :slight_smile:

Oh. Interesting. I thought it’s a limitation of the firmware, maybe new versions do support it? Anyway, the z2m docs should be probably updated

Just wanted to say this was super helpful. Thank you!

1 Like

thanks <3 after 2 days my dimmer work, thx

1 Like

Works great, but I didn’t get the description in 3. Can it have any ID, or does it have to be 65289. If it’s the latter, what does the ID mean?

I think it doesn’t have to be 65289 anymore, but I haven’t tested it and rather put it there.

I have linkind 1 button switch and am triyng to bind with sengled non-colored bulbs. I created a group, random number and binded with linkind everything was sucessful but it does not work. Linkind has a default group 16394 number wonder if i have to create with that or add it as a scene?
Edit: Very new to zigbee2mqtt, just migrating things from ZHA so using the UI.

This is about IKEA, not some other brands. Open a new topic.

Note that not all devices support binding, so have no idea if your does.

Thanks will open a new topic. It supports binding but kinda confused why it does not with zigbee2mqtt, ui seems straightforward.

Is anyone else experiencing unreliable results? For button and lights with the same hardware and firmware Im getting different results. Sometimes binding works, sometimes it does not. Changing to a different type of button often works.

And a question, is there any difference between creating a group with one light in it and binding to the group, vs binding directly to a light (without putting it in a group)?

Binding works reliably for me just fine on all IKEA FLOALTs, controllers and bulbs (sometimes there is a delay for e.g. one light in the group, but that’s fine).

And a question, is there any difference between creating a group with one light in it and binding to the group, vs binding directly to a light (without putting it in a group)?

At least in the past it wasn’t possible to bind to a light, but only a group id could be specified. Now it seems to be possible to bind directly, apparently.

Ha, so I am experiencing unreliable results with the same hardware models (and same FW versions). Specifically, the new Styrbar and IKEA LED2003G10 control via MQTT | Zigbee2MQTT . I am able to bind it for On/Off and Brightness, but can’t make the scenes work. Specifically, if I change the color to something random and if I then press any of the scenes button (left or right), it gets into the warmest white and just sits there :-/ . Works for other pair of styrbar and color bulb (same models + firmwares) without issues :cry:

It seems it almost seems that it only remembers just one scene :man_shrugging: .

Probably related: IKEA Remote Color switching doesn't work (even with group 65289) · Issue #13151 · Koenkk/zigbee2mqtt · GitHub IKEA bulbs (LED2003G10) can't switch scenes with IKEA Styrbar remote when binding · Issue #14684 · Koenkk/zigbee2mqtt · GitHub

OK, I am lost…

I have tried to repeat the same process and now it’s working again. I don’t know why, I really really followed did the same thing as I had done twice before that…

So the takeaway for others stumbling upon this: keep trying shrug …

Quick Question is it possible to bind the same remote to multiple groups? For me it is doable on the UI but only the first Group is getting controlled.

I followed this tutorial and my remote doesn’t seem to do anything?? Super frustrating. Not sure where to find out why.

Note that I am also not able to get it working with my Sonoff dongle (but I am able to do it with Slaesh stick).