Several automations disappeared after disabling entities

I have an automation setup to run a script which runs my circulation pump for one minute, in response to pressing the top paddle button of several ZEN34 Z-wave scene controllers.

After upgrading to 2025.10, the automation no longer runs, and also disappeared from the GUI. It is not showing as disabled or failed - it’s just not there. It is still present in automations.yaml . This is one of several that similarly disappeared.

Here is the YAML for the automation in question :

alias: Scene controllers run circulation pump upon top paddle 1x press
description: ""
use_blueprint:
  path: madbrain/zen34.yaml
  input:
    zwave_devices:
      - 527a6d6d93c343087174a996f35c2631
      - 4d24abfe4a8ed228982a53e93e1fbcde
      - c4e97aa553173cbdda823bfc4e2b27b0
    1x_tap_up:
      - data: {}
        action: script.1663379903786
    is_loop_for_hold_up: false
    is_loop_for_hold_down: false

Here is the blueprint it uses - some variant of a public blueprint for the ZEN34 :


blueprint:
  name: Zooz ZEN34 Remote scene control
  description: |
    Use the Zooz ZEN34 remote to trigger Scenes and control devices based on varying scenes. 

    This Blueprint is currently configured for the zwaveJS platform.

  domain: automation

  input:
    zwave_devices:
      name: Zooz Zen34
      description: "List of available Zooz ZEN34 switches."
      selector:
        device:
          integration: zwave_js
          manufacturer: Zooz
          model: ZEN34
          multiple: true

    1x_tap_up:
      name: Tap up 1x
      selector:
        action:
      default: []
    1x_tap_down:
      name: Tap down 1x
      selector:
        action:
      default: []
    2x_tap_up:
      name: Tap up 2x
      selector:
        action:
      default: []
    2x_tap_down:
      name: Tap down 2x
      selector:
        action:
      default: []
    3x_tap_up:
      name: Tap up 3x
      selector:
        action:
      default: []
    3x_tap_down:
      name: Tap down 3x
      selector:
        action:
      default: []
    4x_tap_up:
      name: Tap up 4x
      selector:
        action:
      default: []
    4x_tap_down:
      name: Tap down 4x
      selector:
        action:
      default: []
    5x_tap_up:
      name: Tap up 5x
      selector:
        action:
      default: []
    5x_tap_down:
      name: Tap down 5x
      selector:
        action:
      default: []
    hold_up:
      name: Hold up
      selector:
        action:
      default: []
    is_loop_for_hold_up:
      name: Key Up/On held loop?
      description: Asserts whether you want to loop the held action until the button is released which could simulate the impact of a dimmer switch
      selector:
        boolean:
      default: []
    hold_down:
      name: Hold down
      selector:
        action:
      default: []
    is_loop_for_hold_down:
      name: Key Down/On held loop?
      description: Asserts whether you want to loop the held action until the button is released which could simulate the impact of a dimmer switch
      selector:
        boolean:
      default: []
    key_up_released:
      name: Key Up/On released
      description: Action to run, when the up button is released.
      default: []
      selector:
        action:
    key_down_released:
      name: Key Down/Off released
      description: Action to run, when the down button is released.
      default: []
      selector:
        action:

mode: restart
max_exceeded: silent
variables:
  logger: blueprint.zwave_scene_activation
  device_ids: !input zwave_devices
  key_up_scene_id: "Scene 001"
  key_down_scene_id: "Scene 002"
  is_loop_for_hold_up: !input "is_loop_for_hold_up"
  is_loop_for_hold_down: !input "is_loop_for_hold_down"

trigger:
  - platform: event
    event_type: zwave_js_value_notification
condition: "{{ trigger.event.data.device_id in device_ids }}"

action:
  - variables:
      scene_id: "{{trigger.event.data.label}}"
      key_pressed: "{{trigger.event.data.value}}"
      value_raw: "{{trigger.event.data.value_raw}}"
  - choose:
      # IF triggered node_id is zwave_nodeid
      - conditions:
          - condition: template
            value_template: "{{ trigger.event.data.device_id in device_ids }}"
        sequence:
          - choose:
              # IF 1x tap up
              - conditions:
                  - condition: template
                    value_template: "{{ scene_id == key_up_scene_id and (key_pressed == 'KeyPressed' or value_raw == 0) }}"
                sequence: !input 1x_tap_up
              # IF 1x tap down
              - conditions:
                  - condition: template
                    value_template: "{{ scene_id == key_down_scene_id and (key_pressed == 'KeyPressed' or value_raw == 0) }}"
                sequence: !input 1x_tap_down
              # IF 2x tap up
              - conditions:
                  - condition: template
                    value_template: "{{ scene_id == key_up_scene_id and (key_pressed == 'KeyPressed2x' or value_raw == 3) }}"
                sequence: !input 2x_tap_up
              # IF 2x tap down
              - conditions:
                  - condition: template
                    value_template: "{{ scene_id == key_down_scene_id and (key_pressed == 'KeyPressed2x' or value_raw == 3) }}"
                sequence: !input 2x_tap_down
              # IF 3x tap up
              - conditions:
                  - condition: template
                    value_template: "{{ scene_id == key_up_scene_id and (key_pressed== 'KeyPressed3x' or value_raw == 4) }}"
                sequence: !input 3x_tap_up
              # IF 3x tap down
              - conditions:
                  - condition: template
                    value_template: "{{ scene_id == key_down_scene_id and (key_pressed == 'KeyPressed3x' or value_raw == 4) }}"
                sequence: !input 3x_tap_down
              # IF 4x tap up
              - conditions:
                  - condition: template
                    value_template: "{{ scene_id == key_up_scene_id and (key_pressed== 'KeyPressed4x' or value_raw == 5) }}"
                sequence: !input 4x_tap_up
              # IF 4x tap down
              - conditions:
                  - condition: template
                    value_template: "{{ scene_id == key_down_scene_id and (key_pressed == 'KeyPressed4x' or value_raw == 5) }}"
                sequence: !input 4x_tap_down
              # IF 5x tap up
              - conditions:
                  - condition: template
                    value_template: "{{ scene_id == key_up_scene_id and (key_pressed == 'KeyPressed5x' or value_raw == 6) }}"
                sequence: !input 5x_tap_up
              # IF 5x tap down
              - conditions:
                  - condition: template
                    value_template: "{{ scene_id == key_down_scene_id and (key_pressed == 'KeyPressed5x' or value_raw == 6) }}"
                sequence: !input 5x_tap_down
              - conditions:
                  - condition: template
                    value_template: '{{ scene_id == key_up_scene_id and (key_pressed == "KeyReleased" or value_raw == 1 ) }}'
                sequence: !input "key_up_released"
              - conditions:
                  - condition: template
                    value_template: '{{ scene_id == key_down_scene_id and (key_pressed == "KeyReleased" or value_raw == 1 ) }}'
                sequence: !input "key_down_released"
              - conditions:
                  - condition: template
                    value_template: '{{ scene_id == key_up_scene_id and (key_pressed == "KeyHeldDown" or value_raw == 2) }}'
                sequence:
                  # if looping is enabled, loop the action indefinitely
                  # repeat until the automation is restarted ie. when the corresponding release message is received
                  - repeat:
                      sequence:
                        !input "hold_up"
                      until: "{{ not is_loop_for_hold_up }}"

              - conditions:
                  - condition: template
                    value_template: '{{ scene_id == key_down_scene_id and (key_pressed == "KeyHeldDown" or value_raw == 2)}}'
                sequence:
                  # if looping is enabled, loop the action indefinitely
                  # repeat until the automation is restarted ie. when the corresponding release message is received
                  - repeat:
                      sequence:
                        !input "hold_down"
                      until: "{{ not is_loop_for_hold_down }}"

            # ELSE: unhandled label/value
            default:
              - service: system_log.write
                data:
                  level: debug
                  logger: "{{ logger }}"
                  message: "Activated scene '{{ trigger.event.data.scene_label }}' ({{ trigger.event.data.label }}) with value '{{ trigger.event.data.scene_value_label }}' ({{ trigger.event.data.value }}) for node '{{ zwave_nodeid }}' ({{ trigger.event.data.node_id }})"
    # ELSE: unhandled zwave event
    default: []

I have several other automations using this ZEN34 blueprint that still show up in 2025.10 .

Here is the script the automation calls :

alias: Run circulation pump for 1 minute
sequence:
  - action: notify.notify
    data:
      title: Hot water circulation pump started
      message: >-
        Hot water will be available in 1 minute everywhere except master
        bathroom
  - data: {}
    target:
      device_id: f8ca287e841ac21a9d27c67153d19a81
    action: switch.turn_on
  - delay:
      hours: 0
      minutes: 1
      seconds: 0
      milliseconds: 0
  - data: {}
    target:
      device_id: f8ca287e841ac21a9d27c67153d19a81
    action: switch.turn_off
mode: single
description: ""

The script runs fine when manually triggered, or when triggered from other automations.

I read the release notes for 2025.10, but couldn’t find a listed breaking change that might explain this. For now, I have had to restore a backup taken on 9/30 to get things working again.

Are these devices missing?

That’s what happens when you use device automations and a device goes missing.

FYI:

Tom,

Thanks for your response. The devices are still present in both Z-Wave JS UI and in Home assistant. I am not sure how to double check the device IDs to make sure they did not change.

In the past, when devices disappeared, I was still able to edit automations in the GUI, and it was possible to fill in the missing devices. But perhaps I’m confusing this case with missing entities. In any case, the devices are present in this case.

I have also upgraded Z-Wave JS UI to the latest 5.3.1, in conjunction with the 2025.9 build of HA, and verified that the latest ZUI is not the root cause of the issue. It appears to be caused by the HA upgrade.

Also, I very much would prefer to use entities rather than device triggers, if there is a way to do this for Z-Wave devices such as the ZEN34. All the blueprints examples I have seen use device triggers rather than entities.

So, I figured out the URLs to double check the device IDs :

https://homeassistant.localdomain:8123/config/devices/device/527a6d6d93c343087174a996f35c2631
https://homeassistant.localdomain:8123/config/devices/device/c4e97aa553173cbdda823bfc4e2b27b0
https://homeassistant.localdomain:8123/config/devices/device/4d24abfe4a8ed228982a53e93e1fbcde

I then upgraded my 2025.09 to 2025.10 . All is fine - the device URLs work, and the automation shows up.

I tried restoring a few October backups before, and the automation in question was missing. I will try restoring another. I’m not sure anymore what could have broken this.

Edit: it is broken in my 10/8 backup. The device URLs are all there.

I found the root cause. I did a bulk disable of many entities sometime in October due to extreme pollution in my auto-entities cards sometime in early october. In restrospect, that was the wrong approach - I should have used filters on the cards.

I was able to fix the problem by re-enabling these entities, then reloading all YAML.

So, this was user error, not an HA regression. I’m still fairly confused about the disappearance of the device automation from the GUI, though. I am now wondering which other ones may have been silently disabled without me noticing.