Files
blueprints/battery-monitor.yaml
2025-07-04 20:16:15 +00:00

76 lines
2.1 KiB
YAML

blueprint:
name: Battery Monitor
description: Monitors battery levels of selected entities and exposes a low battery summary
domain: automation
input:
battery_sensors:
name: Battery Sensors
description: List of battery level sensors to monitor
selector:
entity:
domain: sensor
multiple: true
threshold:
name: Low Battery Threshold
description: Battery percentage threshold to consider "low"
default: 20
selector:
number:
min: 1
max: 100
step: 1
unit_of_measurement: "%"
notify_service:
name: Notification Service (Optional)
description: Service to call if any battery is low (e.g., notify.mobile_app_pixel)
default: ""
selector:
text:
mode: single
trigger:
- platform: time_pattern
minutes: "/30" # Check every 30 minutes
variables:
threshold: !input threshold
battery_sensors: !input battery_sensors
notify_service: !input notify_service
condition: []
action:
- variables:
low_batteries: >
{% set low = namespace(devices=[]) %}
{% for entity_id in battery_sensors %}
{% set level = states(entity_id) | int(100) %}
{% if level <= threshold %}
{% set name = state_attr(entity_id, 'friendly_name') or entity_id %}
{% set low.devices = low.devices + [name ~ ' (' ~ level ~ '%)'] %}
{% endif %}
{% endfor %}
{{ low.devices }}
- choose:
- conditions: "{{ low_batteries | length > 0 }}"
sequence:
- service: input_text.set_value
target:
entity_id: input_text.devices_with_low_battery
data:
value: "{{ low_batteries | join(', ') }}"
- condition: "{{ notify_service != '' }}"
- service: "{{ notify_service }}"
data:
message: >
Low battery detected: {{ low_batteries | join(', ') }}
default:
- service: input_text.set_value
target:
entity_id: input_text.devices_with_low_battery
data:
value: "All batteries healthy"