zha-device-handlers: [Device Support Request] Hue bulbs missing Candle Effect
Problem description
I have two Hue Go here which have a built in canlde effect.
According to https://github.com/Koenkk/zigbee2mqtt/issues/15699 it is possible to start this by sending certain commands to the cluster 0xfc03.
This cluster supports the Canlde effect, the fireplace effect and also the color loop. On my device page for the light I can only see the color loop effect.
If I go to manage zigbee device from the device page, then I don’t have this cluster, only 0xfc01 in that range.
Is there a possibility to add these effects to zha so that we can call them from Home Assistant?
Solution description
Some possibility to trigger the candle effect of the hue go through a script.
Screenshots/Video
Screenshots/Video
Device signature
Device signature
{
"node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4107, maximum_buffer_size=82, maximum_incoming_transfer_size=128, server_mask=11264, maximum_outgoing_transfer_size=128, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
"endpoints": {
"11": {
"profile_id": "0x0104",
"device_type": "0x010d",
"input_clusters": [
"0x0000",
"0x0003",
"0x0004",
"0x0005",
"0x0006",
"0x0008",
"0x0300",
"0x1000",
"0xfc01"
],
"output_clusters": [
"0x0019"
]
},
"242": {
"profile_id": "0xa1e0",
"device_type": "0x0061",
"input_clusters": [],
"output_clusters": [
"0x0021"
]
}
},
"manufacturer": "Philips",
"model": "LCT026",
"class": "zigpy.device.Device"
}
Diagnostic information
Diagnostic information
{
"home_assistant": {
"installation_type": "Home Assistant Container",
"version": "2023.8.1",
"dev": false,
"hassio": false,
"virtualenv": false,
"python_version": "3.11.4",
"docker": true,
"arch": "aarch64",
"timezone": "Europe/Berlin",
"os_name": "Linux",
"os_version": "6.1.21-v8+",
"run_as_root": true
},
"custom_components": {
"cryptoinfo": {
"version": "0.1.7",
"requirements": []
},
"hacs": {
"version": "1.32.1",
"requirements": [
"aiogithubapi>=22.10.1"
]
},
"thermal_comfort": {
"version": "2.1.1",
"requirements": []
},
"xiaomi_miio_airpurifier": {
"version": "2023.6.0.0",
"requirements": [
"construct==2.10.56",
"python-miio>=0.5.12"
]
},
"blitzortung": {
"version": "1.0.1",
"requirements": [
"paho-mqtt>=1.5.0"
]
},
"babybuddy": {
"version": "v0.0.0",
"requirements": []
},
"philips_airpurifier_coap": {
"version": "0.10.8",
"requirements": [
"aioairctrl==0.2.4"
]
},
"ytube_music_player": {
"version": "20230321.01",
"requirements": [
"ytmusicapi==0.25.0",
"pytube==10.5.1",
"integrationhelper==0.2.2"
]
},
"powercalc": {
"version": "v1.8.8",
"requirements": [
"numpy>=1.21.1"
]
}
},
"integration_manifest": {
"domain": "zha",
"name": "Zigbee Home Automation",
"after_dependencies": [
"onboarding",
"usb"
],
"codeowners": [
"@dmulcahey",
"@adminiuga",
"@puddly"
],
"config_flow": true,
"dependencies": [
"file_upload"
],
"documentation": "https://www.home-assistant.io/integrations/zha",
"iot_class": "local_polling",
"loggers": [
"aiosqlite",
"bellows",
"crccheck",
"pure_pcapy3",
"zhaquirks",
"zigpy",
"zigpy_deconz",
"zigpy_xbee",
"zigpy_zigate",
"zigpy_znp"
],
"requirements": [
"bellows==0.35.8",
"pyserial==3.5",
"pyserial-asyncio==0.6",
"zha-quirks==0.0.102",
"zigpy-deconz==0.21.0",
"zigpy==0.56.4",
"zigpy-xbee==0.18.1",
"zigpy-zigate==0.11.0",
"zigpy-znp==0.11.4"
],
"usb": [
{
"vid": "10C4",
"pid": "EA60",
"description": "*2652*",
"known_devices": [
"slae.sh cc2652rb stick"
]
},
{
"vid": "1A86",
"pid": "55D4",
"description": "*sonoff*plus*",
"known_devices": [
"sonoff zigbee dongle plus v2"
]
},
{
"vid": "10C4",
"pid": "EA60",
"description": "*sonoff*plus*",
"known_devices": [
"sonoff zigbee dongle plus"
]
},
{
"vid": "10C4",
"pid": "EA60",
"description": "*tubeszb*",
"known_devices": [
"TubesZB Coordinator"
]
},
{
"vid": "1A86",
"pid": "7523",
"description": "*tubeszb*",
"known_devices": [
"TubesZB Coordinator"
]
},
{
"vid": "1A86",
"pid": "7523",
"description": "*zigstar*",
"known_devices": [
"ZigStar Coordinators"
]
},
{
"vid": "1CF1",
"pid": "0030",
"description": "*conbee*",
"known_devices": [
"Conbee II"
]
},
{
"vid": "10C4",
"pid": "8A2A",
"description": "*zigbee*",
"known_devices": [
"Nortek HUSBZB-1"
]
},
{
"vid": "0403",
"pid": "6015",
"description": "*zigate*",
"known_devices": [
"ZiGate+"
]
},
{
"vid": "10C4",
"pid": "EA60",
"description": "*zigate*",
"known_devices": [
"ZiGate"
]
},
{
"vid": "10C4",
"pid": "8B34",
"description": "*bv 2010/10*",
"known_devices": [
"Bitron Video AV2010/10"
]
}
],
"zeroconf": [
{
"type": "_esphomelib._tcp.local.",
"name": "tube*"
},
{
"type": "_zigate-zigbee-gateway._tcp.local.",
"name": "*zigate*"
},
{
"type": "_zigstar_gw._tcp.local.",
"name": "*zigstar*"
},
{
"type": "_slzb-06._tcp.local.",
"name": "slzb-06*"
}
],
"is_built_in": true
},
"data": {
"ieee": "**REDACTED**",
"nwk": 14994,
"manufacturer": "Philips",
"model": "LCT026",
"name": "Philips LCT026",
"quirk_applied": false,
"quirk_class": "zigpy.device.Device",
"manufacturer_code": 4107,
"power_source": "Mains",
"lqi": 136,
"rssi": -66,
"last_seen": "2023-08-09T10:44:37",
"available": true,
"device_type": "Router",
"signature": {
"node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4107, maximum_buffer_size=82, maximum_incoming_transfer_size=128, server_mask=11264, maximum_outgoing_transfer_size=128, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
"endpoints": {
"11": {
"profile_id": "0x0104",
"device_type": "0x010d",
"input_clusters": [
"0x0000",
"0x0003",
"0x0004",
"0x0005",
"0x0006",
"0x0008",
"0x0300",
"0x1000",
"0xfc01"
],
"output_clusters": [
"0x0019"
]
},
"242": {
"profile_id": "0xa1e0",
"device_type": "0x0061",
"input_clusters": [],
"output_clusters": [
"0x0021"
]
}
},
"manufacturer": "Philips",
"model": "LCT026"
},
"active_coordinator": false,
"entities": [
{
"entity_id": "button.hugo_identify",
"name": "Philips LCT026"
},
{
"entity_id": "light.zha_hugo_huelight",
"name": "Philips LCT026"
},
{
"entity_id": "number.hugo_start_up_current_level",
"name": "Philips LCT026"
},
{
"entity_id": "number.hugo_start_up_color_temperature",
"name": "Philips LCT026"
},
{
"entity_id": "select.hugo_start_up_behavior",
"name": "Philips LCT026"
}
],
"neighbors": [
{
"device_type": "Coordinator",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x0000",
"permit_joining": "Unknown",
"depth": "0",
"lqi": "140"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x14DA",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "151"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x2D3F",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "193"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x2FAA",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "217"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x3955",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "210"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x52D3",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "163"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x53F0",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "189"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x5C1B",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "163"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x5CA7",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "132"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x6779",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "200"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x726C",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "116"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x8E7F",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "127"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x9211",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "168"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x9BAC",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "152"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xA995",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "151"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xAA40",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "125"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xAE75",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "182"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xCB69",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "150"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xCF87",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "126"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xDBF5",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "159"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xDF9A",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "189"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xE2A4",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "179"
},
{
"device_type": "EndDevice",
"rx_on_when_idle": "Off",
"relationship": "Child",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x8E35",
"permit_joining": "NotAccepting",
"depth": "2",
"lqi": "255"
},
{
"device_type": "EndDevice",
"rx_on_when_idle": "Off",
"relationship": "Child",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x60BA",
"permit_joining": "NotAccepting",
"depth": "2",
"lqi": "213"
},
{
"device_type": "EndDevice",
"rx_on_when_idle": "Off",
"relationship": "Child",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x8A93",
"permit_joining": "NotAccepting",
"depth": "2",
"lqi": "130"
},
{
"device_type": "EndDevice",
"rx_on_when_idle": "Off",
"relationship": "Child",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xBBCC",
"permit_joining": "NotAccepting",
"depth": "2",
"lqi": "214"
},
{
"device_type": "EndDevice",
"rx_on_when_idle": "Off",
"relationship": "Child",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x9978",
"permit_joining": "NotAccepting",
"depth": "2",
"lqi": "0"
},
{
"device_type": "EndDevice",
"rx_on_when_idle": "Off",
"relationship": "Child",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x4C93",
"permit_joining": "NotAccepting",
"depth": "2",
"lqi": "193"
},
{
"device_type": "EndDevice",
"rx_on_when_idle": "Off",
"relationship": "Child",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xF0C3",
"permit_joining": "NotAccepting",
"depth": "2",
"lqi": "253"
}
],
"routes": [
{
"dest_nwk": "0x0000",
"route_status": "Active",
"memory_constrained": true,
"many_to_one": true,
"route_record_required": false,
"next_hop": "0x0000"
}
],
"endpoint_names": [
{
"name": "EXTENDED_COLOR_LIGHT"
},
{
"name": "PROXY_BASIC"
}
],
"user_given_name": "Hugo",
"device_reg_id": "4a44e44704bc9a20dca93adc7ede69d3",
"area_id": "bad",
"cluster_details": {
"11": {
"device_type": {
"name": "EXTENDED_COLOR_LIGHT",
"id": 269
},
"profile_id": 260,
"in_clusters": {
"0x0000": {
"endpoint_attribute": "basic",
"attributes": {
"0x0004": {
"attribute_name": "manufacturer",
"value": "Philips"
},
"0x0005": {
"attribute_name": "model",
"value": "LCT026"
}
},
"unsupported_attributes": {}
},
"0x0003": {
"endpoint_attribute": "identify",
"attributes": {},
"unsupported_attributes": {}
},
"0x0004": {
"endpoint_attribute": "groups",
"attributes": {},
"unsupported_attributes": {}
},
"0x0005": {
"endpoint_attribute": "scenes",
"attributes": {
"0x0001": {
"attribute_name": "current_scene",
"value": 0
},
"0x0004": {
"attribute_name": "name_support",
"value": 0
}
},
"unsupported_attributes": {
"0xfffe": {
"attribute_name": "reporting_status"
}
}
},
"0x0006": {
"endpoint_attribute": "on_off",
"attributes": {
"0x0000": {
"attribute_name": "on_off",
"value": 0
},
"0x4003": {
"attribute_name": "start_up_on_off",
"value": 1
}
},
"unsupported_attributes": {}
},
"0x0008": {
"endpoint_attribute": "level",
"attributes": {
"0x0000": {
"attribute_name": "current_level",
"value": 67
},
"0x4000": {
"attribute_name": "start_up_current_level",
"value": 254
}
},
"unsupported_attributes": {
"0x0014": {
"attribute_name": "default_move_rate"
},
"0x0010": {
"attribute_name": "on_off_transition_time"
},
"0x0011": {
"attribute_name": "on_level"
},
"0x0012": {
"attribute_name": "on_transition_time"
},
"0x0013": {
"attribute_name": "off_transition_time"
}
}
},
"0x1000": {
"endpoint_attribute": "lightlink",
"attributes": {},
"unsupported_attributes": {}
},
"0x0300": {
"endpoint_attribute": "light_color",
"attributes": {
"0x400a": {
"attribute_name": "color_capabilities",
"value": 31
},
"0x4002": {
"attribute_name": "color_loop_active",
"value": 0
},
"0x0008": {
"attribute_name": "color_mode",
"value": 1
},
"0x400c": {
"attribute_name": "color_temp_physical_max",
"value": 500
},
"0x400b": {
"attribute_name": "color_temp_physical_min",
"value": 153
},
"0x0007": {
"attribute_name": "color_temperature",
"value": 500
},
"0x0000": {
"attribute_name": "current_hue",
"value": 21
},
"0x0001": {
"attribute_name": "current_saturation",
"value": 233
},
"0x0003": {
"attribute_name": "current_x",
"value": 36958
},
"0x0004": {
"attribute_name": "current_y",
"value": 25586
},
"0x4000": {
"attribute_name": "enhanced_current_hue",
"value": 4044
},
"0x000f": {
"attribute_name": "options",
"value": 0
},
"0x4010": {
"attribute_name": "start_up_color_temperature",
"value": 366
}
},
"unsupported_attributes": {}
},
"0xfc01": {
"endpoint_attribute": "manufacturer_specific",
"attributes": {},
"unsupported_attributes": {}
}
},
"out_clusters": {
"0x0019": {
"endpoint_attribute": "ota",
"attributes": {},
"unsupported_attributes": {}
}
}
},
"242": {
"device_type": {
"name": "PROXY_BASIC",
"id": 97
},
"profile_id": 41440,
"in_clusters": {},
"out_clusters": {
"0x0021": {
"endpoint_attribute": "green_power",
"attributes": {},
"unsupported_attributes": {}
}
}
}
}
}
}
Logs
Logs
[Paste the logs here]
Custom quirk
Custom quirk
[Paste your custom quirk here]
Additional information
No response
About this issue
- Original URL
- State: open
- Created a year ago
- Reactions: 6
- Comments: 17
I’ve successfully created a quirk that works with Philips Go to set the candlelight and fireplace effects, though I still have to find how to make it more user friendly (preset values, even getting it to the effect dropdown). For now I was testing it just by editing files in my docker deployment under
/usr/local/lib/python3.11/site-packages/zhaquirks/philips(requires HA restart afterwards).In
__init.py__goes:and then created new file
7602031P7.py:which gets you something like this, where you can set the 4 numbers from args per parameter (33, 0, 1, 1) and send the command.
I’ve tracked down why this doesn’t work with
zha.issue_zigbee_cluster_commandwith help of logs. The thing tries to use thecommandas index to thecommandshash-table but it doesn’t know about any commands (otherwise I’d just use the “Manage Zigbee Device” dialog to issue a command). So it fails with error:Unfortunately unless ZHA is made aware of the possibility to send command to that cluster, it is not possible to use it. The difference with
zha_toolkitis that it probably just fires away and hopes for the best.https://community.home-assistant.io/t/a-simple-single-automation-candle-effect-for-hue-white-ambience-and-other-bulbs/235023/16
Change IEEE to your device. The below code is what I used to active Candle effect.