Forked from sbyx/low-battery-level-detection-notification-for-all-battery-sensors.yaml
Last active
June 2, 2025 21:47
-
-
Save Tahutipai/971bf0e07e50ce6190e0dacd73262e2e to your computer and use it in GitHub Desktop.
Home Assistant Blueprint: Low battery level detection & notification for all battery sensors
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
blueprint: | |
name: Report offline zigbee/zwave/battery/smart plug devices | |
description: Works with Smart Plugs, ZWave, Zigbee etc (Works with ZHA & Z2M) | |
#By Tahutipai 2024-02-21 | |
#Originally Based on the work of Sybx @ https://community.home-assistant.io/t/low-battery-level-detection-notification-for-all-battery-sensors/258664 | |
#Note: This has been upgraded to report only the Device that is offline, not multiple individual sensors within one Device | |
domain: automation | |
input: | |
time: | |
name: Time to test on | |
description: Test is run at configured time | |
default: '10:00:00' | |
selector: | |
time: {} | |
day: | |
name: Weekday to test on | |
description: 'Test is run at configured time either everyday (0) or on a given | |
weekday (1: Monday ... 7: Sunday)' | |
default: 0 | |
selector: | |
number: | |
min: 0.0 | |
max: 7.0 | |
mode: slider | |
step: 1.0 | |
exclude: | |
name: Excluded Sensors | |
description: Battery sensors (e.g. smartphone) to exclude from detection. Only entities are supported, devices must be expanded! | |
default: {entity_id: []} | |
selector: | |
target: | |
entity: | |
device_class: | |
- battery | |
- switch | |
actions: | |
name: Actions | |
description: Call your notification here. {{offline_devices}} will replaced with the name of any offline devices | |
selector: | |
action: {} | |
source_url: https://gist.github.com/Tahutipai/971bf0e07e50ce6190e0dacd73262e2e | |
variables: | |
day: !input 'day' | |
exclude: !input 'exclude' | |
offline_devices: >- | |
{% set result = namespace(offline_devices=[]) %} | |
{% for sensor in states.sensor | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', '==', 'battery') %} | |
{% if "unavailable" in sensor | string and not sensor.entity_id in exclude.entity_id %} | |
{% set result.offline_devices = result.offline_devices + [device_attr(device_id(sensor.entity_id), "name")] %} | |
{% endif %} | |
{% endfor %} | |
{% for binary_sensor in states.binary_sensor | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', '==', 'battery') %} | |
{% if "unavailable" in binary_sensor | string and not binary_sensor.entity_id in exclude.entity_id %} | |
{% set result.offline_devices = result.offline_devices + [device_attr(device_id(binary_sensor.entity_id), "name")] %} | |
{% endif %} | |
{% endfor %} | |
{% for switch in states.switch | selectattr('state','eq','unavailable') %} | |
{% if switch.entity_id not in exclude.entity_id %} | |
{% set result.offline_devices = result.offline_devices + [device_attr(device_id(switch.entity_id), "name")] %} | |
{% endif %} | |
{% endfor %} | |
{{result.offline_devices|sort|unique|join('\n')}} | |
trigger: | |
- platform: time | |
at: !input 'time' | |
condition: | |
- '{{ offline_devices != '''' and (day | int == 0 or day | int == now().isoweekday()) }}' | |
action: | |
- choose: [] | |
default: !input 'actions' | |
mode: single |
Hi, thanks for your work. I wanted to ask if anyone is using labelled to exclude from the report? I have tried but it doesn't seem to be working
I'm using labels to exclude a couple of labs devices (nspanel01, Double Aqara Switch) that have been offline for a while along with the two plant sensors and the exclude does not work as shown by the screenshot.
alias: Report offline zigbee/zwave/battery/smart plug devices
description: ""
use_blueprint:
path: Tahutipai/report_zigbee_zwave_devices_gone_offline.yaml
input:
actions:
- action: notify.mobile_app_pete_s_pixel_7
metadata: {}
data:
title: Offline Devices Summary
message: The following devices are offline > {{offline_devices}}
time: "10:00:10"
exclude:
entity_id: []
label_id: excludenotify
device_id:
- 16d556e1da99872fe9e4976889b1de55
- 1021fe40cce7cc64e60f3f7f004b858f
Same here. Alexa devices/entities doesn't seem to work as it should. Label exclusion doesn't work either.
Labels are....kind of working? Tuya devices are showing up that are mains powered as well.
I made a fork here... https://gist.github.com/Ltek/0c9cecf632b9c32915130680d834bcf7
Updates are...
- Excludes are working
- According to my testing, its also a lot faster execution.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I get this error when I try to import the blueprint:
Invalid blueprint: expected str for dictionary value @ data['blueprint']['input']['exclude']['selector']['entity']['device_class']. Got None