Help with 4-scene Button Selector Actions after Zigbee2MQTT 2.0 Update

ISSUE / PROBLEM:
After updating to Zigbee2MQTT 2.0 and moving to event-based automation triggers, the buttons on my 4-scene button selector don’t toggle correctly. The trigger runs when any given button (e.g. button 1 of 4) is pressed for the first time after a different button has been pressed (e.g. button 2 of 4), but not after having been the most recently pressed button. Of note, in Developer Tools → States, I can see under the “filter” column that the button press is recognized with every click because the timestamp changes. See example code below.

SETUP:
RPi4
Zigbee2MQTT v2.0.0-2
Core: 2025.1.0
Supervisor 2024.12.3
OS: 14.1

QUESTION:
Looking for suggestions on my automation syntax, general troubleshooting advice, or information about this particular Zigbee device (i.e. any known compatibility issues).

AUTOMATION YAML:


alias: Testing 4-Button Scene - Peloton - Zigbee2MQTT
description: >-
  This automation is for my Peloton Bike Fan, which is a smart Dreo floor fan. 
  Button #1 toggles the fan on/off and sets speed to minimal when on.  Button #2
  sets fan speed to low.  Button #3 sets speed to medium.  Button #4 sets speed
  to high.
triggers:
  - alias: 4-Button Scene - Peloton
    entity_id:
      - event.peloton_fan_buttons_action
    attribute: event_type
    id: 4-Button Scene - Peloton
    trigger: state
    not_from: unavailable
    enabled: true
conditions: []
actions:
  - choose:
      - conditions:
          - condition: template
            value_template: "{{trigger.to_state.attributes.event_type == '1_single'}}"
        sequence:
          - if:
              - condition: state
                entity_id: fan.peloton_rower_fan
                state: "off"
            then:
              - target:
                  entity_id:
                    - fan.peloton_rower_fan
                data: {}
                action: fan.turn_on
              - metadata: {}
                data:
                  percentage: 10
                target:
                  entity_id:
                    - fan.peloton_rower_fan
                action: fan.set_percentage
            else:
              - metadata: {}
                data: {}
                target:
                  entity_id:
                    - fan.peloton_rower_fan
                action: fan.turn_off
      - conditions:
          - condition: template
            value_template: "{{trigger.to_state.attributes.event_type == '2_single'}}"
          - condition: state
            entity_id: fan.peloton_rower_fan
            state: "on"
        sequence:
          - metadata: {}
            data:
              percentage: 33
            target:
              entity_id:
                - fan.peloton_rower_fan
            action: fan.set_percentage
      - conditions:
          - condition: template
            value_template: "{{trigger.to_state.attributes.event_type == '3_single'}}"
          - condition: state
            entity_id: fan.peloton_rower_fan
            state: "on"
        sequence:
          - metadata: {}
            data:
              percentage: 66
            target:
              entity_id:
                - fan.peloton_rower_fan
            action: fan.set_percentage
      - conditions:
          - condition: template
            value_template: "{{trigger.to_state.attributes.event_type == '4_single'}}"
          - condition: state
            entity_id: fan.peloton_rower_fan
            state: "on"
        sequence:
          - target:
              entity_id:
                - fan.peloton_rower_fan
            data:
              preset_mode: turbo
            action: fan.set_preset_mode
mode: single


I found a solution, although I don’t understand how/why it works.

I deleted “enabled: true” from the triggers section. So the yaml looks like this:


triggers:
  - alias: 4-Button Scene - Peloton
    entity_id:
      - event.peloton_fan_buttons_action
    attribute: event_type
    id: 4-Button Scene - Peloton
    trigger: state
    not_from: unavailable

If anyone has an explanation, I’d be interested.

I’m not sure why it worked to remove the enabled line, but it also works and is the correct answer to remove the attribute line. So, the final code that works and is most correct, to my best knowledge, is as follows:

triggers:
  - alias: 4-Button Scene - Peloton
    entity_id:
      - event.peloton_fan_buttons_action
    id: 4-Button Scene - Peloton
    trigger: state
    not_from: unavailable
    enabled: true