{ services.home-assistant.config = { sensor = [ { platform = "template"; sensors = { sensors_lowest_battery_level = { friendly_name = "Lowest battery level (Sensors)"; entity_id = "sun.sun"; device_class = "battery"; unit_of_measurement = "%"; value_template = '' {% set domains = ['sensor', 'battery'] %} {% set ns = namespace(min_batt=100, entities=[]) %} {%- set exclude_sensors = ['sensor.sensors_lowest_battery_level','sensor.dominiks_iphone_battery_level'] -%} {% for domain in domains %} {% set ns.entities = states[domain] %} {% for sensor in exclude_sensors %} {% set ns.entities = ns.entities | rejectattr('entity_id', 'equalto', sensor) %} {% endfor %} {% set batt_sensors = ns.entities | selectattr('attributes.device_class','equalto','battery') | map(attribute='state') | reject('equalto', 'unknown') | reject('equalto', 'None') | map('int') | reject('equalto', 0) | list %} {% set batt_attrs = ns.entities | selectattr('attributes.battery_level','defined') | map(attribute='attributes.battery_level') | reject('equalto', 'unknown') | reject('equalto', 'None') | map('int') | reject('equalto', 0) | list %} {% set batt_lvls = batt_sensors + batt_attrs %} {% if batt_lvls|length > 0 %} {% set _min = batt_lvls|min %} {% if _min < ns.min_batt %} {% set ns.min_batt = _min %} {% endif %} {% endif %} {% endfor %} {{ ns.min_batt }} ''; }; }; } ]; binary_sensor = [ { platform = "template"; sensors = { sensor_low_battery = { value_template = "{{ states('sensor.sensors_lowest_battery_level')|int <= 30 }}"; friendly_name = "A sensor has low battery"; device_class = "problem"; }; }; } ]; alert = { sensor_low_battery = { name = "Sensor has low battery!"; message = '' {% set domains = ['sensor', 'battery'] %} {% set threshold = 30 %} {%- set exclude_entities = ['sensor.sensors_lowest_battery_level','sensor.dominiks_iphone_battery_level','sensor.roborock_s8_pro_ultra_battery'] -%} Sensors are below 50% battery: {% for domain in domains %} {% for item in states[domain] %} {% if item.entity_id not in exclude_entities %} {% if item.attributes.battery_level is defined %} {% set level = item.attributes.battery_level|int %} {% if level > 0 and level < threshold %} - {{ item.attributes.friendly_name }} ({{ item.attributes['battery_level']|int}}%) {%- endif -%} {% endif %} {% if item.attributes.device_class is defined and item.attributes.device_class == 'battery' %} {% set level = item.state|int %} {% if level > 0 and level <= threshold %} - {{ item.attributes.friendly_name }} ({{ item.state|int }}%) {% endif %} {% endif %} {% endif %} {% endfor %} {% endfor %} ''; entity_id = "binary_sensor.sensor_low_battery"; state = "on"; repeat = [ 5 60 360 ]; skip_first = true; can_acknowledge = true; notifiers = [ "NotificationGroup" ]; }; }; }; }