76 lines
2.1 KiB
YAML
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"
|
|
|