Zigbee (ZHA) failures began after 2026.4.4 (and continue in 2026.8.3)

I tried upgrading from 2026.4.4 to 2026.7.4, and my only ZHA devices (Phillips Hue Lights) stopped working. Actually, a “run forever loop” automation would fail due to the error “Failed to send request: device did not respond". I tried several solutions to no avail. I rolled back to 2026.4.4 and everything works fine. This automation has been running for a copule of years without issue prior to this update.

I rolled back and have been on 2026.4.4 until today, when I tried again with 2026.8.3, and I’m getting the same failures. I’m using ZHA with a dresden electronik Conbee II controller, and have 4 Zigbee devices. They are all Philips Hue products (1 Hue Go, and 3 Hue Bulbs). The automation runs all the time and controls the colors. I can set all kinds of parameters from the following dashboard page.


In the Color Loop section, that Input_Select has an option called Nightlight, which you’ll see in the automation. I set that with a button on another page to run a “good night” script, which changes that Input_Select value to Nightlight. The automation responds to that change immediately.

I’ve posted the automation below along with screenshots of the automation trace. At the bottom I post the errors as shown in the logs. I greatly appreciate any help.

AUTOMATION:

  # Hue Color Loop
  - id: hue_color_loop_atm
    alias: Hue Color Loop (ATM)
    description: Run a loop of colors based upon input
    mode: single
    trigger:
      - platform: state
        entity_id: input_boolean.hue_color_loop_ib
        to: 'on'
      - platform: event
        event_type: automation_reloaded
      - platform: homeassistant
        event: start
    condition:
      condition: state
      entity_id: input_boolean.hue_color_loop_ib
      state: 'on'
    action:
#      - choose:          # This is to pause until the group entity_id's have been defined upon startup or reload. Replaced by wait_template below to test if defined, replaced by uptime wait.
#          conditions: "{{ (trigger.platform == 'event' or trigger.platform == 'homeassistant') }}"
#          sequence:
#            delay: "00:00:30"
#      - wait_template: "{{ iif(state_attr('light.hue_lr_lights_lgrp','entity_id'), expand(state_attr('light.hue_lr_lights_lgrp','entity_id')) | selectattr('state', 'in', ['unavailable', 'unknown']) | list | count == 0 ) }}"
      - wait_template: "{{ states('sensor.uptime_minutes_st') | float > 2  }}"
      - repeat:
          while: "{{ is_state('input_boolean.hue_color_loop_ib','on') }}"
          sequence:
            - variables:
                colors: >
                  {% if (is_state('input_select.hue_color_loop_is','Airy')) %}
                    {{ [[200,16,100], [273,12,100],[124,12,100], [15,19,90],[243,22,100],[315,10,100],[328,10,100],[43,14,80],[95,10,90],[173,10,100]] | random }}
                  {% elif (is_state('input_select.hue_color_loop_is','Cool')) -%}
                    {{ [[165,57,100],[180,57,100],[195,57,100],[210,57,100],[225,57,100],[240,57,100],[248,57,100]] | random }}
                  {% elif (is_state('input_select.hue_color_loop_is','Warm')) -%}
                    {{ [[285,29,100],[300,29,100],[315,29,100],[330,29,100],[360,29,100],[15,29,100],[30,29,80],[60,29,70]] | random }}
                  {% elif (is_state('input_select.hue_color_loop_is','Moody')) -%}
                    {{ [[0,50,100],[30,50,50],[60,50,60],[90,50,60],[120,50,100],[150,50,100],[180,50,100],[210,50,90],[240,50,100],[270,50,100],[300,50,100],[330,50,100]] | random }}
                  {% elif (is_state('input_select.hue_color_loop_is','Sunny')) -%}
                    {{ [[23,58,100],[33,53,100],[30,43,100],[45,43,100],[60,29,100]] | random }}
                  {% elif (is_state('input_select.hue_color_loop_is','Campfire')) -%}
                    {{ [[30,86,50],[45,100,50],[15,71,50],[30,71,50],[15,86,51],[225,86,48]] | random }}
                  {% elif (is_state('input_select.hue_color_loop_is','Stormy')) -%}
                    {{ [[229,41,75],[253,34,75],[62,40,75],[281,25,75],[225,55,75],[234,16,75],[199,37,75],[255,54,75],[61,46,75],[75,43,75],[105,29,75]] | random }}
                  {% elif (is_state('input_select.hue_color_loop_is','Nightlight')) -%}
                    {{ [[30,56,25],[295,24,29],[246,10,33],[185,18,33],[35,61,25]] | random }}
                  {% endif %}  
            - service: group.set
              data:
                object_id: lamps_grp
                entities: >
                  {% set result = state_attr('light.hue_lr_lights_lgrp','entity_id') -%} 
                  {%- if ( is_state('input_boolean.hue_loop_include_go','off') or is_state('input_select.hue_color_loop_is','Nightlight') ) -%}
                    {%- set result = result | reject("==",'light.hue_go') | list -%}
                  {%- endif %}
                  {%- if is_state('input_boolean.hue_loop_include_lr_table','off') -%}
                    {%- set result = result | reject("==",'light.hue_100w_lr_table') | list -%}
                  {%- endif %}
                  {%- if is_state('input_boolean.hue_loop_include_lr_floor','off') -%}
                    {%- set result = result | reject("==",'light.hue_75w_lr_floor') | list -%}
                  {%- endif %}
                  {%- if ( is_state('input_boolean.hue_loop_include_den_floor','off') or is_state('input_select.hue_color_loop_is','Nightlight') ) -%}
                    {%- set result = result | reject("==",'light.hue_75w_den_floor') | list -%}
                  {%- endif -%}
                  {{ result }}
            - choose:
                conditions: "{{ is_state('input_select.hue_color_loop_is','Nightlight') }}"
                sequence:
                  service: homeassistant.turn_off
                  entity_id: 
                    - light.hue_go
                    - light.hue_75w_den_floor
            - service: scene.apply
              data:
                transition: "{{ states('input_number.hue_loop_color_transition_time_in') }}"
                entities:
                  group.lamps_grp:
                    state: 'on'
                    brightness: "{{ (colors[2] | float) / 100 * 255 }}"
                    hs_color:
                      - "{{ colors[0] | float }}"
                      - "{{ colors[1] | float }}"
            - wait_for_trigger:
                - platform: state
                  entity_id: input_boolean.hue_color_loop_ib
                  to: 'off'
                - platform: state
                  entity_id: 
                    - input_select.hue_color_loop_is
                    - input_number.hue_loop_hold_time_mins_in
                    - input_number.hue_loop_color_transition_time_in
                    - input_boolean.hue_loop_include_go
                    - input_boolean.hue_loop_include_lr_table
                    - input_boolean.hue_loop_include_lr_floor
                    - input_boolean.hue_loop_include_den_floor
                  to:
              timeout:
                minutes: "{{ states('input_number.hue_loop_hold_time_mins_in') }}"

Here is the trace diagram:

And here is the Trace Details:


Triggered by the Home Assistant starting at August 24, 2026 at 7:28:00 PM
Test If Hue Color Loop (IB) is On
Wait for a template to evaluate to true
3 minutes later
Repeat an action while 1 condition matches
Run 5 actions in sequence
Test If template renders a value equal to true
Define variables colors
Perform action 'Group: Set group'
Choose: No action executed
Run 1 action in sequence
Test If template renders a value equal to true
Perform action 'Scene: Apply scene'
Wait for one of 2 triggers
Test If template renders a value equal to true
Perform action 'Scene: Apply scene'
Wait for one of 2 triggers
22 minutes later
Run 5 actions in sequence
22 minutes later
Test If template renders a value equal to true
Define variables colors
Perform action 'Group: Set group'
Choose: No action executed
Run 1 action in sequence
Test If template renders a value equal to true
Perform action 'Scene: Apply scene'
Wait for one of 2 triggers
Test If template renders a value equal to true
Perform action 'Scene: Apply scene'
Wait for one of 2 triggers
43 minutes later
Run 5 actions in sequence
43 minutes later
Test If template renders a value equal to true
Define variables colors
Perform action 'Group: Set group'
Choose: No action executed
Run 1 action in sequence
Test If template renders a value equal to true
Perform action 'Scene: Apply scene'
Wait for one of 2 triggers
Test If template renders a value equal to true
Perform action 'Scene: Apply scene'
Wait for one of 2 triggers
1 hour later
Run 5 actions in sequence
1 hour later
Test If template renders a value equal to true
Define variables colors
Perform action 'Group: Set group'
Choose: No action executed
Run 1 action in sequence
Test If template renders a value equal to true
Perform action 'Scene: Apply scene'
Wait for one of 2 triggers
Test If template renders a value equal to true
Perform action 'Scene: Apply scene'
Wait for one of 2 triggers
1 hour later
Run 5 actions in sequence
1 hour later
Test If template renders a value equal to true
Define variables colors
Perform action 'Group: Set group'
Choose: No action executed
Run 1 action in sequence
Test If template renders a value equal to true
Perform action 'Scene: Apply scene'
Wait for one of 2 triggers
Test If template renders a value equal to true
Perform action 'Scene: Apply scene'
Wait for one of 2 triggers
Stopped because an error was encountered at August 24, 2026 at 8:57:12 PM (runtime: 5351.53 seconds)

Failed to send request: device did not respond

And here is the Step Details where it failed:

Perform action 'Scene: Apply scene'
Iteration 1
Executed: August 24, 2026 at 7:31:00 PM
Result:

params:
  domain: scene
  service: apply
  service_data:
    transition: 37
    entities:
      group.lamps_grp:
        state: 'on'
        brightness: 204
        hs_color:
          - 43
          - 14
  target: {}
running_script: false

Perform action 'Scene: Apply scene'
Iteration 2
Executed: August 24, 2026 at 7:52:30 PM
Result:

params:
  domain: scene
  service: apply
  service_data:
    transition: 37
    entities:
      group.lamps_grp:
        state: 'on'
        brightness: 255
        hs_color:
          - 273
          - 12
  target: {}
running_script: false

Perform action 'Scene: Apply scene'
Iteration 3
Executed: August 24, 2026 at 8:14:00 PM
Result:

params:
  domain: scene
  service: apply
  service_data:
    transition: 37
    entities:
      group.lamps_grp:
        state: 'on'
        brightness: 255
        hs_color:
          - 200
          - 16
  target: {}
running_script: false

Perform action 'Scene: Apply scene'
Iteration 4
Executed: August 24, 2026 at 8:35:31 PM
Result:

params:
  domain: scene
  service: apply
  service_data:
    transition: 37
    entities:
      group.lamps_grp:
        state: 'on'
        brightness: 255
        hs_color:
          - 328
          - 10
  target: {}
running_script: false

Perform action 'Scene: Apply scene'
Iteration 5
Executed: August 24, 2026 at 8:57:01 PM
Error: Failed to send request: device did not respond
Result:

params:
  domain: scene
  service: apply
  service_data:
    transition: 37
    entities:
      group.lamps_grp:
        state: 'on'
        brightness: 229.5
        hs_color:
          - 95
          - 10
  target: {}
running_script: false

Here are the two errors that appear in the log when the automation aborts:

Logger: homeassistant.components.automation.hue_color_loop_atm
Source: helpers/script.py:2291
Integration: Automation (documentation, issues)
First occurred: 8:57:12 PM (2 occurrences)
Last logged: 8:57:12 PM

Hue Color Loop (ATM): Repeat at step 2: Error executing script. Error for call_service at pos 4: Failed to send request: device did not respond
Hue Color Loop (ATM): Error executing script. Error for repeat at pos 2: Failed to send request: device did not respond


Logger: homeassistant.components.automation.hue_color_loop_atm
Source: components/automation/__init__.py:806
Integration: Automation (documentation, issues)
First occurred: 8:57:12 PM (1 occurrence)
Last logged: 8:57:12 PM

Error while executing automation automation.hue_color_loop_atm: Failed to send request: device did not respond

I’m not sure how that ever worked because legacy groups don’t have the ability to set state attributes on included members. If there are only lights in that group, make a light group and swap out the entity to the light group.

It’s been working great for years, and still does. Every light in the group adopts the state, brightness, and hs_color stated in the scene. I don’t see this as being the cause of the automation crash.

I’m not sure what you are suggesting. Swap out what entity with a light group? All of the entities in the lamps_grp group are lights. All of my groups are defined in YAML. Unfortunately, most of my configuration was done long before the UI did much of anything, therefore all YAML automations, scripts, sensors, groups, etc., etc. :laughing:

light groups are the new style groups, they have the hooks to properly manage light and light properly as a group. Group entities do not have these hooks.

e.g.

light:
  - platform: group
    name: "Kitchen Lights"
    entities:
      - light.kitchen_ceiling_lights
      - light.kitchen_under_cabinet_lights
      - light.kitchen_spot_lights
      - light.pendant_lights

Just understand that it will show up as light.kitchen_lights instead of group.kitchen_lights so you’ll need to update your automations.

EDIT: When I say “new style groups”, these are now 3 or 4 years old.

But there’s no analog to group.set for light groups…

in 2026.9 you can create a template light that emulates group light behavior by adding entity_id attribute to it, if you really need that feature.

Since this has gone dormant, I’ve logged it as an issue with ZHA on github Homeassistant Core here. Hopefully, the developers will know what’s causing these failures, or at least look into it.