Home Assistant Batterie-Überwachung
Home Assistant bietet viele Möglichkeiten zur Überwachung von Geräten – doch was ist mit den Batterieständen?
Ich weiß, dass es dafür bereits Blueprints gibt, aber sie bieten nur begrenzte Anpassungsmöglichkeiten.
Mit diesem Projekt kannst du ganz einfach den Batteriestatus aller Geräte überwachen. Es erkennt:
Batterien, die unter 20% fallen und sendet eine Benachrichtigung.
Falls eine Batterie nach 2 Tagen nicht gewechselt wurde, erfolgt eine erneute Erinnerung.
Geräte, die keine Werte mehr senden (
unknown
oder unavailable
).
Warnung, wenn ein Gerät nach dem Batteriewechsel keine neuen Werte sendet.
Voraussetzungen
- Home Assistant installiert
- HACS (Home Assistant Community Store) muss installiert sein
- Integration
battery notes
über HACS installieren - YAML-Modus für Automationen nutzen
Sensoren & battery notes
einrichten
- Gehe zu
Einstellungen → Geräte & Dienste → Integrationen
. - Suche
battery notes
und installiere es über HACS. - Sobald die Integration aktiv ist, werden
battery_plus
-Sensoren automatisch erstellt. - Drücke den Button
button.*_battery_replaced
, um den Wechsel zu speichern. - Der letzte Batteriewechsel wird in
sensor.*_battery_last_replaced
gespeichert.
Sensor zur Erkennung niedriger Batterien einrichten
Füge den folgenden Code in deine configuration.yaml
ein, um einen Template-Sensor zu erstellen, der die Anzahl der Batterien unter 20% zählt. Dieser Sensor zählt automatisch alle battery_plus
-Sensoren, die unter 20% fallen, und kann für Automationen sowie im Dashboard genutzt werden.
template:
- sensor:
- name: "battery_low_count"
state: >
{% set batteries = states.sensor
| selectattr('entity_id', 'search', '_battery_plus$')
| selectattr('state', 'match', '^\d+(\.\d+)?$')
| map(attribute='state')
| map('float')
| select('lt', 20)
| list %}
{{ batteries | length }}
Automationen zur Batterie-Überwachung erstellen
Diese drei Automationen sorgen für eine vollständige Batterie-Überwachung:
In diesem Projekt gibt es drei Automationen, die zusammen für eine vollständige Batterie-Überwachung sorgen:
- Warnung bei Batterien unter 20% mit erneuter Erinnerung nach 2 Tagen
- Erkennung von Sensoren, die keine Werte mehr liefern (
unknown
oderunavailable
) - Warnung, wenn ein Gerät nach einem Batteriewechsel keine Werte sendet
Hinweis: Ersetze
notify.mobile_app_galaxy_s23
in den Automationen mit deinem eigenen Home Assistant Benachrichtigungsdienst. Dies findest du unter Einstellungen → Geräte & Dienste → Dienste
.
So fügst du die Automationen in Home Assistant hinzu
- Wechsle in den YAML-Modus für Automationen:
- Gehe zu
Einstellungen → Automatisierungen
. - Klicke auf
Automationen
und dann auf das+
Symbol, um eine neue Automation zu erstellen. - Wähle
Bearbeiten in YAML
, um den YAML-Modus zu aktivieren.
- Füge den passenden YAML-Code in die neue Automation ein:
-
Öffne das YAML-Feld und kopiere den Inhalt der jeweiligen Datei (
automation_battery_low.yaml
, etc.). -
Klicke auf
Speichern
. -
Wiederhole dies für alle Automationen.
-
Automation 1: Batterie unter 20% → Benachrichtigung senden & erneute Erinnerung nach 2 Tagen
alias: "Batterie unter 20% Warnung mit Erinnerung"
mode: restart
trigger:
# 1️⃣ Batterie fällt unter 20% (Erste Benachrichtigung)
- platform: template
value_template: >-
{% set low_batteries = states.sensor
| selectattr('entity_id', 'search', '_battery_plus$')
| selectattr('state', 'match', '^\\d+$')
| selectattr('state', 'lt', '20')
| list %}
{{ low_batteries | length > 0 }}
# 2️⃣ Eine Batterie steigt wieder über 50% (zum Löschen der Notification)
- platform: template
value_template: >-
{% set recovered_batteries = states.sensor
| selectattr('entity_id', 'search', '_battery_plus$')
| selectattr('state', 'match', '^\\d+$')
| selectattr('state', 'gt', '50')
| list %}
{{ recovered_batteries | length > 0 }}
condition: []
action:
- choose:
# 📌 Fall 1: Eine oder mehrere Batterien sind unter 20% (Erzeuge Benachrichtigung)
- conditions:
- condition: template
value_template: >-
{% set batteries = states.sensor
| selectattr('entity_id', 'search', '_battery_plus$')
| selectattr('state', 'match', '^\\d+$')
| selectattr('state', 'lt', '20')
| list %}
{{ batteries | length > 0 }}
sequence:
- variables:
low_batteries: >-
{% set batteries = states.sensor
| selectattr('entity_id', 'search', '_battery_plus$')
| selectattr('state', 'match', '^\\d+$')
| selectattr('state', 'lt', '20')
| map(attribute='name')
| list %}
{{ batteries }}
- service: persistent_notification.create
data:
title: "Batteriewarnung"
message: >-
{% if low_batteries | length == 1 %}
Die Batterie von {{ low_batteries[0] }} ist unter 20% gefallen!
{% elif low_batteries | length > 1 %}
Die Batterien von {{ low_batteries | join(', ') }} sind unter 20% gefallen!
{% endif %}
notification_id: "battery_low"
- service: notify.mobile_app_galaxy_s23
data:
title: "Batterie-Warnung"
message: >-
{% if low_batteries | length == 1 %}
Die Batterie von {{ low_batteries[0] }} ist unter 20% gefallen!
{% elif low_batteries | length > 1 %}
Die Batterien von {{ low_batteries | join(', ') }} sind unter 20% gefallen!
{% endif %}
data:
tag: "battery_low"
sticky: true
# 🕒 Warte 48 Stunden, dann prüfe erneut
- delay: "48:00:00"
- condition: template
value_template: >-
{% set still_low_batteries = states.sensor
| selectattr('entity_id', 'search', '_battery_plus$')
| selectattr('state', 'match', '^\\d+$')
| selectattr('state', 'lt', '20')
| list %}
{{ still_low_batteries | length > 0 }}
# 🔔 Erneute Erinnerung senden
- service: notify.mobile_app_galaxy_s23
data:
title: "Erinnerung: Batterie weiterhin unter 20%"
message: >-
{% if still_low_batteries | length == 1 %}
Die Batterie von {{ still_low_batteries[0] }} ist weiterhin unter 20%! Bitte wechseln.
{% elif still_low_batteries | length > 1 %}
Die Batterien von {{ still_low_batteries | join(', ') }} sind weiterhin unter 20%! Bitte wechseln.
{% endif %}
data:
tag: "battery_low_reminder"
sticky: true
# 📌 Fall 2: Eine Batterie steigt wieder über 50% (Lösche die Benachrichtigung)
- conditions:
- condition: template
value_template: >-
{% set recovered_batteries = states.sensor
| selectattr('entity_id', 'search', '_battery_plus$')
| selectattr('state', 'match', '^\\d+$')
| selectattr('state', 'gt', '50')
| list %}
{{ recovered_batteries | length > 0 }}
sequence:
- service: persistent_notification.dismiss
data:
notification_id: "battery_low"
Automation 2: Warnung, wenn ein Sensor unavailable
oder unknown
wird
alias: Batterie-Sensor nicht erreichbar
triggers:
- value_template: >-
{% set offline_batteries = states.sensor | selectattr('entity_id',
'search', '_battery_plus$') | selectattr('state', 'in', ['unknown',
'unavailable']) | list %} {{ offline_batteries | length > 0 }}
trigger: template
- value_template: >-
{% set recovered_batteries = states.sensor | selectattr('entity_id',
'search', '_battery_plus$') | selectattr('state', 'match', '^\d+$') |
list %} {{ recovered_batteries | length > 0 }}
trigger: template
conditions: []
actions:
- choose:
- conditions:
- condition: template
value_template: >-
{% set batteries = states.sensor | selectattr('entity_id',
'search', '_battery_plus$') | selectattr('state', 'in',
['unknown', 'unavailable']) | list %} {{ batteries | length > 0
}}
sequence:
- variables:
offline_batteries: >-
{% set batteries = states.sensor | selectattr('entity_id',
'search', '_battery_plus$') | selectattr('state', 'in',
['unknown', 'unavailable']) | map(attribute='name') | list %}
{{ batteries }}
- data:
title: Batterie-Sensor nicht erreichbar
message: |
{% if offline_batteries | length == 1 %}
Der Batterie-Sensor von {{ offline_batteries[0] }} ist nicht erreichbar!
{% elif offline_batteries | length > 1 %}
Die Batterie-Sensoren von {{ offline_batteries | join(', ') }} sind nicht erreichbar!
{% else %}
Fehler: Keine Batterie-Sensoren als "unavailable" erkannt.
{% endif %}
notification_id: battery_offline
action: persistent_notification.create
- data:
title: Batterie-Sensor nicht erreichbar
message: |
{% if offline_batteries | length == 1 %}
Der Batterie-Sensor von {{ offline_batteries[0] }} ist nicht erreichbar!
{% elif offline_batteries | length > 1 %}
Die Batterie-Sensoren von {{ offline_batteries | join(', ') }} sind nicht erreichbar!
{% else %}
Fehler: Keine Batterie-Sensoren als "unavailable" erkannt.
{% endif %}
data:
tag: battery_offline
sticky: true
action: notify.mobile_app_galaxy_s23
- conditions:
- condition: template
value_template: >-
{% set recovered_batteries = states.sensor |
selectattr('entity_id', 'search', '_battery_plus$') |
selectattr('state', 'match', '^\d+$') | list %} {{
recovered_batteries | length > 0 }}
sequence:
- data:
notification_id: battery_offline
action: persistent_notification.dismiss
mode: parallel
Automation 3: Erkennung, wenn ein Gerät nach einem Batteriewechsel keine Werte sendet
alias: "Warnung: Batterie-Sensor sendet nach Wechsel keine Daten"
description: ""
triggers:
- entity_id: []
from: []
to: []
for:
minutes: 10
trigger: state
conditions: []
actions:
- variables:
replaced_sensors: >-
{% set replaced = states.sensor | selectattr('entity_id', 'search',
'_battery_last_replaced$') | selectattr('state', 'ne', 'unknown') |
selectattr('state', 'ne', 'unavailable') | list %} {{ replaced }}
- choose:
- conditions:
- condition: template
value_template: "{{ replaced_sensors | length > 0 }}"
sequence:
- variables:
problem_sensors: >-
{% set sensors = replaced_sensors | map(attribute='entity_id')
| map('regex_replace', '_battery_last_replaced$',
'_battery_plus') | map('states') | select('in', ['unknown',
'unavailable']) | list %} {{ problem_sensors }}
- condition: template
value_template: "{{ problem_sensors | length > 0 }}"
- data:
title: Batteriewechsel-Fehler
message: |
{% if problem_sensors | length == 1 %}
Der Sensor {{ problem_sensors[0] }} hat eine neue Batterie bekommen, sendet aber keine Werte!
{% elif problem_sensors | length > 1 %}
Die Sensoren {{ problem_sensors | join(', ') }} haben neue Batterien, senden aber keine Werte!
{% else %}
Fehler: Keine fehlerhaften Sensoren erkannt.
{% endif %}
notification_id: battery_not_reporting
action: persistent_notification.create
- data:
title: Batteriewechsel-Fehler
message: |
{% if problem_sensors | length == 1 %}
Der Sensor {{ problem_sensors[0] }} hat eine neue Batterie bekommen, sendet aber keine Werte!
{% elif problem_sensors | length > 1 %}
Die Sensoren {{ problem_sensors | join(', ') }} haben neue Batterien, senden aber keine Werte!
{% else %}
Fehler: Keine fehlerhaften Sensoren erkannt.
{% endif %}
data:
tag: battery_not_reporting
sticky: true
action: notify.mobile_app_galaxy_s23
mode: parallel
Komplette Batterie-Übersicht im Dashboard erstellen
Möchtest du die Vorlagen 1:1 übernehmen, sind dafür aus dem HACS weitere Installationen notwendig!
- Mushroom
- card-mod
Damit du die Batterie-Überwachung optimal visualisieren kannst, gibt es drei verschiedene Anzeigeoptionen:
Die Gesamtanzahl der Batterien unter 20%
Eine Liste aller Batterien unter 20%
Eine grafische Darstellung des Batteriestatus wie auf dem Smartphone als Badge
Die Gesamtanzahl der Batterien unter 20%
Eine Liste aller Batterien unter 20%
Eine grafische Darstellung des Batteriestatus wie auf dem Smartphone als Batch
Schritte zur Einrichtung
Damit du die Batterie-Überwachung optimal visualisieren kannst, zeige ich dir drei verschiedenen Anzeigeoptionen. Diese zeigen dir: Die Gesamtanzahl der Batterien unter 20%
Eine Liste aller Batterien unter 20%
Eine grafische Darstellung des Batteriestatus wie auf dem Smartphone als Batch
Tile Card: Zeigt die Anzahl der Batterien unter 20%
type: vertical-stack
cards:
- type: tile
entity: sensor.battery_low_count
name: Batterien unter 20%
icon: mdi:battery-low
grid_options:
columns: 6
Auto-Entities Karte: Zeigt eine Liste aller Batterien unter 20%
type: custom:mushroom-template-card
entity: sensor.battery_low_count
icon: mdi:battery-low
layout: vertical
alignment: right
fill_container: false
badge_icon: |-
{% set count = states(entity) | int(0) %}
{{ 'mdi:numeric-' ~ count if count < 9 else 'mdi:numeric-9-plus' }}
icon_color: blue
badge_color: |-
{% if states(entity) | int > 0 %}
red
{% else %}
green
{% endif %}
card_mod:
style: |
ha-card { background: transparent;
--border-style: none;
--border: 0px;
--ha-card-header-font-size: 20px;
--bar-card-border-radius: 51px;
--ha-card-border-width: 0px;
}
mushroom-badge-icon {
--badge-icon-size: 27px;
--badge-size: 20px;
}
Mushroom Template Card: Kompakte Anzeige mit Icon
type: custom:mushroom-template-card
entity: sensor.battery_low_count
icon: mdi:battery-low
layout: vertical
fill_container: false
badge_icon: |-
{% set count = states(entity) | int(0) %}
{{ 'mdi:numeric-' ~ count if count < 9 else 'mdi:numeric-9-plus' }}
icon_color: blue
badge_color: |-
{% if states(entity) | int > 0 %}
red
{% else %}
green
{% endif %}
tap_action:
action: more-info
card_mod:
style: |
ha-card { background: transparent;
--border-style: none;
--border: 0px;
--ha-card-header-font-size: 20px;
--bar-card-border-radius: 51px;
--ha-card-border-width: 0px;
}
mushroom-badge-icon {
--badge-icon-size: 27px;
--badge-size: 20px;
}
Diese drei Methoden bieten verschiedene Möglichkeiten, die Batterie-Überwachung direkt in dein Home Assistant Dashboard zu integrieren.
Fazit: Nie wieder leere Batterien verpassen!
Mit diesem Projekt hast du eine automatische, wartungsfreie Batterie-Überwachung in Home Assistant.
Sofortige Benachrichtigung, wenn eine Batterie schwach wird.
Erneute Erinnerung nach 2 Tagen, falls du den Wechsel vergisst.
Erkennung von Geräten, die keine Werte mehr senden oder nach einem Wechsel nicht reagieren.
Falls du Fragen hast oder Verbesserungsvorschläge, lass es uns wissen! Erstelle gerne einen Kommentar, wie du die Lösung findest