I have a Home Assistant Green with the ZBT-1 Zigbee antenna and some Philips Hue color bulbs (E26 800 lumen, model LCA005). I’m using Zigbee Home Automation (ZHA) which is the default way to use Zigbee with Home Assistant.
I wanted to configure the Hue bulbs to remember their color when the power is turned off and on (using a physical light switch). I couldn’t find any clear documentation or forum posts on this, but I figured it out and wanted to document it.
In short, you need to set the start_up_color_temperature attribute on the Color cluster to 65535. Here’s how to do that:
- Find your bulb in the devices list and click it.
- Click the ⋮ icon next to “Reconfigure” and choose “Manage zigbee device”.
- Select the “Color (Endpoint id: 11, Id: 0x0300, Type: in)” cluster and choose the “start_up_color_temperature (id: 0x4010)” attribute.
- Type 65535 in for the value and click “WRITE ATTRIBUTE”.
- Wait ~10 seconds before powering off the light so the setting can be written to non-volatile memory.
Afterwards it will show a green check mark. Here’s what that looks like:
You’re done! The bulb should return to its previous color when you physically cut the power and restore it.
More details:
You can also connect the Hue app on your phone via Bluetooth to the bulb at the same time as it is connected via Zigbee to Home Assistant. This gives another way to change this setting: just set it via Bluetooth in the Hue app and then control your lights via Zigbee. But pairing bulbs with both Home Assistant and your phone is very tedious.
There are more related settings given in this GitHub post. In particular you can set “OnOff (Endpoint id: 11, Id: 0x0006, Type: in)” > “start_up_on_off (id: 0x4003)” to “OnOff.PreviousValue” to have the lights remember whether they were on or off after a power cycle. You can also set “LevelControl (Endpoint id: 11, Id: 0x0008, Type: in)” > “start_up_current_level (id: 0x4000)” to 255 if you want to exactly match the settings that the Philips Hue app sets (but empirically only the start_up_color_temperature attribute seems to matter). Note that the author of this post accidentally writes 65536 when he means 65535.