In my Home Assistant quest and simplifying (not sure if that’s actually happening) and getting more control (aka less reliant on the cloud and 3rd parties) I’ve been playing with Zigbee.
Zigbee is quite cool because it’s a mesh network. As I used it before with my Philips Hue bulbs, I was eager to expand and play with Zigbee.
I have several bulbs, including: Hue Iris, Hue Go, some random bulb, a reading spot, and Hue Play (3x).
My Home Assistant setup uses the Skyconnect. I’ve updated the firmware (on a Mac) to use Ember firmware as ezsp will be deprecated soon(™).
At the time of writing you can't update the firmware directly from HA just yet, you need another device.
As I had two Zigbee networks (one for Hue, and one for my sensors and Ikea bulb) it made sense to merge them (and have one less connected bridge): it would reduce interference, and the bulbs all act as a router, so that would greatly improve my network coverage and stability.
Generally speaking, it went quite smoothly: delete the devices in the Hue app (it factory resets them and puts them in pairing mode) and then pair them in Zigbee2Mqtt (I use that over ZHA).
However, my main issue was that my Zigbee bulbs were unreliable: it sometimes worked, but often it lagged or timed out. Especially when controlling multiple bulbs at once (such as a big room such as the living room) or sending multiple commands in sequence (on/off/on/off).
In hindsight, my sensors were unreliable as well: there was data missing, and it didn't properly broadcast/update every 5 minutes. I first thought it was just because they were cheap Chinese (TuYa) sensors using battery-power. If the temp or humidity didn't change enough, it wouldn't broadcast.
I often saw errors such as these in Z2M:
2024-05-26 22:29:02Publish 'set' 'state' to 'Hue Play Right' failed: 'Error: ZCL command 0x0017880104d89bc4/11 genOnOff.on({}, {"timeout":10000,"disableResponse":false,"disableRecovery":false,"disableDefaultResponse":false,"direction":0,"srcEndpoint":null,"reservedBits":0,"manufacturerCode":null,"transactionSequenceNumber":null,"writeUndiv":false}) failed ({"target":29608,"apsFrame":{"profileId":260,"clusterId":6,"sourceEndpoint":1,"destinationEndpoint":11,"options":4416,"groupId":0,"sequence":110},"zclSequence":244,"commandIdentifier":11} timed out after 10000ms)'
But the annoying thing (in debugging, and thinking the network “needs to settle”) was that it often worked just fine, and then randomly started breaking down/time outing when I thought it was finally solved.
I almost gave up and went back to a Hue bridge, when I asked for some advice on Discord. The reason was the channel…
First off: check the Zigbee channel of your Hue. It’s likely 25. Z2M uses channel 11 by default.
There are 4 channels that are getting the least WiFi interference. These are called ZLL channels (whatever that stands for): 11, 15, 20, 25. However, it seems that 11 is quite terrible, and I would not recommend using it.
My Z2M sat on Channel 11 (which is Channel 1 for WiFi). I live in Singapore, in an apartment building, with a shit-ton of WiFi, hence the massive interference and lag on Zigbee.
Also, 2.4Ghz WiFi is generally 20Mhz channel width, whereas Zigbee is 2Mhz, so one WiFi channel overlaps many Zigbee channels.
You can modify the channel (via the config file in /homeassistant/zigbee2mqtt/configuration.yaml
) by adding the following and restarting the Z2M container:
advanced:
[...] # there should already be a ton of things
channel: 25
The problem with changing the channel, is that it requires repairing (some of) the Zigbee devices. And it’s a total mess to repair Hue bulbs once they are no longer on a Hue bridge.
There's no need to remove the devices from Z2M as that will wipe their configs (I believe). It's possible that removing the devices from Z2M will put them in pairing mode again (for Hue bulbs, see below) but I couldn't get a confirmation.
Ikea has the 6x power off/on sequence that resets them, but Hue dropped support for something similar in some firmware upgrade (why?!?!).
TouchLink is another option, but that didn’t work for me at all.
Some Hue bulbs can be reset by long pressing (30-60seconds) the power button (for example the Hue Go), but what worked best for me is pairing them again on the Hue bridge using the serial (force pair), deleting them again, and pairing on Z2M.
However, I didn’t have the serial of two bulbs: one Hue Play has the label missing, and the Hue Iris didn’t have any label at all. I thought I would be forced to go and purchase a Hue dimmer/remote control (that comes with TouchLink and allows resetting the bulbs)…
However, suddenly, after an hour or two of messing around, the Hue bulbs that weren’t repaired just started working again.
So it seems that if they are disconnected from their bridge for a while, they start changing channels until they find the bridge again. I guess there’s a chance, with enough patience, that I didn’t have to repair my Hue bulbs (not sure about Ikea, and I would definitely not trust my Chinese Power plugs and sensors to come back online).
The sensors are quite easily repaired (long press the pairing button or pinhole and done — don’t forget to set Z2M in Permit join
)
Other stuff you can try if the range or network sucks can be found here.
However, if it kinda works, you better not mess with it… 🙂
Leave a Reply…