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.