Google Assistant - Warm White gives different color temperature

I have a few color bulbs around the house Philips Hue, LIFX and some IKEA ones connected Zigbee2MQTT.

On the IKEA ones (LED bulb E27 600 lumen, wireless dimmable colour and white spectrum/globe opal white), I cannot get the color Warm White when I ask Google Assistant. The result is rather a more warmer color, actually around 2200K.

Zigbee2MQTT gives this result when the light set through the voice command to Warm White:

Debug Received MQTT message on 'zigbee2mqtt/Small Room/set' with data '{"state": "ON", "color": {"x": 0.5, "y": 0.389}, "brightness": 254}'

And another IKEA bulb with White spectrum:

Debug Received MQTT message on 'zigbee2mqtt/Desk Lamp/set' with data '{"state": "ON", "color_temp": 333}'

“x”: 0.5, “y”: 0.389 corresponds to about 2200K

“color_temp”: 333 corresponds to about 3000K

Warm white is usually between 2700K and 3000K, and definitely not 2200K.

But anyhow, how the results can mismatch from 2200K to 3000K on two different bulbs.

(I tried soft white as well, that gives the same result.)

The expected value should be "x": 0.458, "y": 0.41.

I tried to look for any issue related to color temperature or treats from Google Assistant, but I cannot find any which would match this.

Any advice to fix it would be appreciated.

(All bulbs Philips and LIFX give normal warm white.)

I have tried to look into this deeper, but I am bit confused.

The IKEA color bulbs are exposed as spectrumHSV devices to Google Assistant, and according that Google Assistant sends a spectrumHSV command, but the values of that doesn’t make any sense.

request_id=8603189197452175275, entity_id=light.small_room, execution=command=action.devices.commands.ColorAbsolute, params=color=name=warm white, spectrumHSV=hue=29.60000038146973, saturation=0.5882353186607361, value=1, source=local>
request_id=8603189197452175275, entity_id=light.desk_lamp, execution=command=action.devices.commands.ColorAbsolute, params=color=name=warm white, temperature=3000, source=local>

Then it ends up like this:

Bus:Handling <Event call_service[L]: domain=light, service=turn_on, service_data=entity_id=light.small_room, hs_color=[29.60000038146973, 58.82353186607361], brightness=255>
Bus:Handling <Event call_service[L]: domain=light, service=turn_on, service_data=entity_id=light.desk_lamp, color_temp=333>

And it ends up like this:

[hass_nabucasa.google_report_state] Publishing message:
{'msgid': '2fb74b97b8a749db9795e67c54ad7f00',
 'payload': {'devices': {'states': {'light.small_lamp': {'brightness': 99,
                                                            'color': {'spectrumHsv': {'hue': 29.2,
                                                                                      'saturation': 0.58824,
                                                                                      'value': 0.996078431372549}},
                                                            'on': True,
                                                            'online': True}}}}}

So it looks like that Google sends a color which is not matching a color temperature between 2700K and 3000K.

It looks like the standard for temperature to RGB is:

But these HSV value doesn’t match any RGB value in the range.

Does anybody knows where Google gets these values from? And how would be appropriate to fix the command warm white to produce a different value? If HA would do the temperature to HSV conversion, then I would be happy, but that’s not the case here…

I have Google talking to HASS controlling some Lidl bulbs via a Philips Hue bridge.

I get a neutral white when I ask Google to set the bulbs to warm white, I imagine that it’s because of what you say - the colour is being sent in a broken format.

But there’s a workaround: “hey Google, set the light to 2200k” works great! And you can pick your own precise shade of white this way :slightly_smiling_face:

1 Like