Files
fresh-home/components/packages/zwave_nodes.yaml
T
2025-12-06 09:12:49 -05:00

55 lines
2.2 KiB
YAML

template:
- sensor:
- name: "ZWave: All Devices"
unique_id: template_sensor_alive_zwave
icon: mdi:z-wave
state: >-
{{ expand(integration_entities('Z-Wave JS') )| selectattr("entity_id", "search", "node_status") |
selectattr('state', 'in', 'alive') |
map(attribute='entity_id')| list | count | int(default=0)}}
- name: "Dead ZWave Devices"
unique_id: template_sensor_failed_zwave
icon: mdi:z-wave
state: >-
{{ expand(integration_entities('Z-Wave JS') )| selectattr("entity_id", "search", "node_status") |
selectattr('state', 'in', 'alive') | map(attribute='entity_id')| list | count | int(default=0)}}
attributes:
devices: >-
{{ expand(integration_entities('Z-Wave JS') )| selectattr("entity_id", "search", "node_status") |
selectattr('state', 'in', 'alive') | map(attribute='entity_id')| list }}
automation:
- id: automation_alert_failed_zwave_nodes
alias: Ping Dead Zwave Nodes
description: "Iterates through a list of dead ZWave Nodes and calls a service to press the Ping button"
mode: single
max_exceeded: silent
trigger:
- platform: state
entity_id: sensor.dead_zwave_devices
condition:
- condition: template
value_template: '{{ states("sensor.dead_zwave_devices")|int(default=0) >0 }}'
action:
- repeat:
while: '{{ states("sensor.dead_zwave_devices")|int(default=0) > 0 }}'
sequence:
- action: button.press
target:
entity_id: >-
{% set list =
expand(integration_entities('Z-Wave JS') )| selectattr('entity_id', 'search', 'node_status') |
selectattr('state', 'in', ['dead', 'unavailable', 'unknown']) |
map(attribute='entity_id')| list %}
{% set ns = namespace(buttons=[]) %}
{% for d in list %}
{% set ns.buttons = ns.buttons +
['button.' ~ (states[d].object_id.split('_node')[0]) ~ '_ping'] %}
{% endfor %}
{{ns.buttons}}
- delay:
seconds: 1