Refinements to security fault template sensors

This commit is contained in:
2024-07-02 16:17:22 -04:00
parent e57525bd23
commit 7a2676c93b

View File

@ -205,49 +205,51 @@ template:
unit_of_measurement: 'faults' unit_of_measurement: 'faults'
state: >- state: >-
{% set bypass = states('sensor.bypassed_sensors') %} {% set bypass = states('sensor.bypassed_sensors') %}
{% set window_sensors = states.binary_sensor | {% set window_sensors = states.binary_sensor
selectattr('attributes.device_class','eq','window') | | selectattr('attributes.device_class','eq','window')
selectattr('attributes.entity_id','eq',null) | | rejectattr('attributes.is_group','eq',true)
rejectattr('entity_id','search','windows') | | rejectattr('entity_id','in',integration_entities('template'))
list %} | rejectattr('attributes.entity_id','defined')
{% set windows_open = window_sensors | | list %}
selectattr('state','eq','on') | {% set windows_open = window_sensors
map(attribute='entity_id') | | selectattr('state','eq','on')
map('device_id') | | map(attribute='entity_id')
list %} | map('device_id')
| list %}
{% set id = namespace(devices=[]) %} {% set id = namespace(devices=[]) %}
{% for device_id in windows_open %} {% for device_id in windows_open %}
{% if device_id in bypass %} {% if device_id in bypass %}
{% set id.devices = id.devices + [device_id] %} {% set id.devices = id.devices + [device_id] %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% set window_faults = windows_open | {% set window_faults = windows_open
reject('in',id.devices) | | reject('in',id.devices)
list | | list
count %} | count %}
{{ window_faults }} {{ window_faults }}
attributes: attributes:
faulted: > faulted: >
{% set bypass = states('sensor.bypassed_sensors') %} {% set bypass = states('sensor.bypassed_sensors') %}
{% set window_sensors = states.binary_sensor | {% set window_sensors = states.binary_sensor
selectattr('attributes.device_class','eq','window') | | selectattr('attributes.device_class','eq','window')
selectattr('attributes.entity_id','eq',null) | | rejectattr('attributes.is_group','eq',true)
rejectattr('entity_id','search','windows') | | rejectattr('entity_id','in',integration_entities('template'))
list %} | rejectattr('attributes.entity_id','defined')
{% set windows_open = window_sensors | | list %}
selectattr('state','eq','on') | {% set windows_open = window_sensors
map(attribute='entity_id') | | selectattr('state','eq','on')
map('device_id') | | map(attribute='entity_id')
list %} | map('device_id')
| list %}
{% set id = namespace(devices=[]) %} {% set id = namespace(devices=[]) %}
{% for device_id in windows_open %} {% for device_id in windows_open %}
{% if device_id in bypass %} {% if device_id in bypass %}
{% set id.devices = id.devices + [device_id] %} {% set id.devices = id.devices + [device_id] %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% set device_list = windows_open | {% set device_list = windows_open
reject('in',id.devices) | | reject('in',id.devices)
list %} | list %}
{% set fn = namespace(friendly=[]) %} {% set fn = namespace(friendly=[]) %}
{% for device_id in device_list %} {% for device_id in device_list %}
{% if device_id in device_list %} {% if device_id in device_list %}
@ -267,49 +269,51 @@ template:
unit_of_measurement: faults unit_of_measurement: faults
state: >- state: >-
{% set bypass = states('sensor.bypassed_sensors') %} {% set bypass = states('sensor.bypassed_sensors') %}
{% set door_sensors = states.binary_sensor | {% set door_sensors = states.binary_sensor
selectattr('attributes.device_class','eq','door') | | selectattr('attributes.device_class','eq','door')
selectattr('attributes.entity_id','eq',null) | | rejectattr('attributes.is_group','eq',true)
rejectattr('entity_id','search','doors') | | rejectattr('entity_id','in',integration_entities('template'))
list %} | rejectattr('attributes.entity_id','defined')
{% set doors_open = door_sensors | | list %}
selectattr('state','eq','on') | {% set doors_open = door_sensors
map(attribute='entity_id') | | selectattr('state','eq','on')
map('device_id') | | map(attribute='entity_id')
list %} | map('device_id')
| list %}
{% set id = namespace(devices=[]) %} {% set id = namespace(devices=[]) %}
{% for device_id in doors_open %} {% for device_id in doors_open %}
{% if device_id in bypass %} {% if device_id in bypass %}
{% set id.devices = id.devices + [device_id] %} {% set id.devices = id.devices + [device_id] %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% set door_faults = doors_open | {% set door_faults = doors_open
reject('in',id.devices) | | reject('in',id.devices)
list | | list
count %} | count %}
{{ door_faults }} {{ door_faults }}
attributes: attributes:
faulted: > faulted: >
{% set bypass = states('sensor.bypassed_sensors') %} {% set bypass = states('sensor.bypassed_sensors') %}
{% set door_sensors = states.binary_sensor | {% set door_sensors = states.binary_sensor
selectattr('attributes.device_class','eq','door') | | selectattr('attributes.device_class','eq','door')
selectattr('attributes.entity_id','eq',null) | | rejectattr('attributes.is_group','eq',true)
rejectattr('entity_id','search','doors') | | rejectattr('entity_id','in',integration_entities('template'))
list %} | rejectattr('attributes.entity_id','defined')
{% set doors_open = door_sensors | | list %}
selectattr('state','eq','on') | {% set doors_open = door_sensors
map(attribute='entity_id') | | selectattr('state','eq','on')
map('device_id') | | map(attribute='entity_id')
list %} | map('device_id')
| list %}
{% set id = namespace(devices=[]) %} {% set id = namespace(devices=[]) %}
{% for device_id in doors_open %} {% for device_id in doors_open %}
{% if device_id in bypass %} {% if device_id in bypass %}
{% set id.devices = id.devices + [device_id] %} {% set id.devices = id.devices + [device_id] %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% set device_list = doors_open | {% set device_list = doors_open
reject('in',id.devices) | | reject('in',id.devices)
list %} | list %}
{% set fn = namespace(friendly=[]) %} {% set fn = namespace(friendly=[]) %}
{% for device_id in device_list %} {% for device_id in device_list %}
{% if device_id in device_list %} {% if device_id in device_list %}