HA Blueprint Automatische Batteriewarnung für alle Geräte

HA Blueprint Automatische Batteriewarnung für alle Geräte

31. August 2025 12:00 · Home Assistant


Kurzfassung: Dieses Blueprint prüft täglich zu deiner Wunschzeit alle Entitäten mit device_class: battery (sowohl sensor mit % als auch binary_sensor), sammelt alle, die unter deinem Schwellwert liegen bzw. „an“ sind – und führt dann deine frei konfigurierbaren Aktionen aus (Push, Telegram, E‑Mail, …).


📥 Ein‑Klick‑Import

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

💡 Tipp: Falls der Import‑Dialog meckert, nutze die RAW‑URL (ersetzt blob/main durch raw/main).


🧩 Blueprint‑Beschreibung

blueprint:
  name: Erkennung & Benachrichtigung bei niedrigem Batteriestand für alle Batterie-Sensoren
  description: Überprüft regelmäßig alle Sensoren mit der Geräteklasse 'battery' …
  domain: automation

🔧 Eingaben / Optionen

  • Schwellenwert für Batteriewarnung (threshold) Slider 5–100 %, Schrittweite 5 %, Standard 20 %. Alles < threshold gilt als „niedrig“.
  • Zeitpunkt der Überprüfung (time) Uhrzeit, zu der geprüft wird (Standard 10:00).
  • Wochentage der Überprüfung (day) Liste der Wochentage (ISO‑Wochentag 1–7). Wichtig: Mindestens einen Tag wählen – ist die Liste leer, läuft die Automation nie.
  • Ausgeschlossene Sensoren (exclude) Entitäten (z. B. Smartphone‑Batterie) die ignoriert werden sollen. Mehrfachauswahl möglich.
  • Aktionen (actions) Beliebige Aktion(en), die ausgeführt werden, wenn mindestens ein Sensor als niedrig erkannt wurde. Du kannst im Nachrichtentext {{sensors}} verwenden – das wird durch eine Zeilenliste der betroffenen Sensor‑Namen ersetzt.

🧠 Funktionsweise (vereinfacht)

  • Sucht in states.sensor alle Battery‑Sensoren mit Einheit % und nimmt jene mit 0 ≤ Wert < threshold auf.
  • Sucht zusätzlich in states.binary_sensor nach Battery‑Sensoren mit Zustand on und nimmt diese auf.
  • Baut daraus die Variable sensors als Zeilenliste (ein Name pro Zeile).
  • Trigger: täglich zur gewählten Uhrzeit.
  • Bedingung: es gibt mindestens einen Eintrag in sensors und der heutige Wochentag ist in day enthalten.
  • Aktion: führt exakt die in actions konfigurierten Schritte aus.

🚀 Schnelleinstieg

  1. Importieren per Badge oben.
  2. Instanz anlegen: Zeit, Wochentage, Schwellenwert wählen.
  3. Entitäten ausschließen (optional), z. B. Smartphone‑Batterie.
  4. Aktion(en) definieren, z. B. Mobile Push + Persistente Notification.
  5. Speichern – fertig.

📨 Praxis‑Beispiele für Aktionen

1) Mobile App Push

- service: notify.mobile_app_DEIN_TELEFON
  data:
    title: "🔋 Batterie‑Alarm"
    message: |
      Folgende Batterien sind niedrig (Schwellenwert {{ threshold }}%):
      {{ sensors }}

2) Persistente Benachrichtigung (für's Log)

- service: persistent_notification.create
  data:
    title: "🔋 Batterie‑Alarm"
    message: |
      <b>{{ now().strftime('%d.%m.%Y %H:%M') }}</b><br>
      Die folgenden Batterien sind niedrig (≤ {{ threshold }}% bzw. binär *an*):<br>
      {{ sensors | replace('
', '<br>') }}

3) Telegram

- service: notify.telegram
  data:
    message: |
      🔋 *Batterie‑Alarm*
      _Schwelle:_ {{ threshold }}%

      {{ sensors }}
    parse_mode: markdown

Du kannst Aktionen natürlich kombinieren (Push und Telegram und Log), oder stattdessen eine Szene / ein Script triggern.


🧪 Test & Fehlersuche

  • Schnelltest: Setze den Schwellenwert testweise z. B. auf 95 % und lege die nächste Uhrzeit gleich fest.
  • Keine Treffer? Prüfe, ob deine Battery‑Sensoren die Einheit % haben. Ohne Prozent‑Einheit werden sie absichtlich übersprungen.
  • Binäre Battery‑Sensoren: Werden als „niedrig“ gewertet, wenn ihr Zustand on ist.
  • Nichts passiert? Hast du mindestens einen Wochentag ausgewählt? Ist die Uhrzeit schon vorbei, wird erst am nächsten gewählten Tag ausgelöst.
  • Smartphone nervt? Einfach in exclude aufnehmen.

❓ FAQ

Warum nur Sensoren mit Prozent‑Einheit? Um falsche Alarme zu vermeiden. Manche Integrationen liefern Spannungswerte – die sind nicht vergleichbar.

Kann ich mehrere Instanzen anlegen? Ja, z. B. eine für „täglich 08:00“ (Push) und eine für „sonntags 18:00“ (E‑Mail‑Reminder).

Lässt sich die Liste sortieren? Die sensors‑Liste ist bereits stabil formatiert (eine Zeile je Gerät). Sortierung kann bei Bedarf in einer angehängten Template‑Aktion erfolgen.


🧾 Vollständiges Blueprint (Referenz)

Du verwendest am besten den Import‑Button oben; hier zur Nachschlagezwecken die Rohfassung (identisch zur Version aus dem Link):

blueprint:
  name: Erkennung & Benachrichtigung bei niedrigem Batteriestand für alle Batterie-Sensoren
  description: >
    Überprüft regelmäßig alle Sensoren mit der Geräteklasse 'battery', ob sie 
    einen bestimmten Schwellenwert unterschreiten, und führt dann eine Aktion aus.
  domain: automation
  input:
    threshold:
      name: Schwellenwert für Batteriewarnung
      description: Batterie-Sensoren unterhalb dieses Wertes werden als schwach angesehen 
        (ebenso wie binäre Batterie-Sensoren mit dem Wert 'on').
      default: 20
      selector:
        number:
          min: 5.0
          max: 100.0
          unit_of_measurement: '%'
          mode: slider
          step: 5.0
    time:
      name: Zeitpunkt der Überprüfung
      description: Die Überprüfung wird zur konfigurierten Zeit durchgeführt.
      default: '10:00:00'
      selector:
        time: {}
    day:
      name: Wochentage der Überprüfung
      description: >
        Wähle die Wochentage aus, an denen die Überprüfung durchgeführt werden soll.
        Mehrere Tage können gleichzeitig ausgewählt werden.
      default: []
      selector:
        select:
          options:
            - label: Montag
              value: "1"
            - label: Dienstag
              value: "2"
            - label: Mittwoch
              value: "3"
            - label: Donnerstag
              value: "4"
            - label: Freitag
              value: "5"
            - label: Samstag
              value: "6"
            - label: Sonntag
              value: "7"
          multiple: true
          mode: list
    exclude:
      name: Ausgeschlossene Sensoren
      description: Batterie-Sensoren (z. B. Smartphone), die von der Erkennung ausgeschlossen werden sollen. 
        Nur Entitäten werden unterstützt, Geräte müssen einzeln ausgewählt werden!
      default: {entity_id: []}
      selector:
        target:
          entity:
            device_class: battery
    actions:
      name: Aktionen
      description: Benachrichtigungen oder ähnliche Aktionen, die ausgeführt werden sollen. 
        {{sensors}} wird durch die Namen der Sensoren mit niedrigem Batteriestand ersetzt.
      selector:
        action: {}

variables:
  day: !input 'day'
  threshold: !input 'threshold'
  exclude: !input 'exclude'
  sensors: >-
    {% set result = namespace(sensors=[]) %}
    {% for state in states.sensor 
        | selectattr('attributes.device_class', '==', 'battery') 
        | selectattr('attributes.unit_of_measurement', 'defined') 
        | selectattr('attributes.unit_of_measurement', '==', '%') %}
      {% if 0 <= state.state | int(-1) < threshold | int and not state.entity_id in exclude.entity_id %}
        {% set result.sensors = result.sensors + [state.name ~ ' (' ~ state.state ~ ' %)'] %}
      {% endif %}
    {% endfor %}
    {% for state in states.binary_sensor 
        | selectattr('attributes.device_class', '==', 'battery') 
        | selectattr('state', '==', 'on') %}
      {% if not state.entity_id in exclude.entity_id %}
        {% set result.sensors = result.sensors + [state.name] %}
      {% endif %}
    {% endfor %}
    {{ result.sensors | join('
') }}

trigger:
- platform: time
  at: !input 'time'

condition:
- "{{ sensors != '' and (now().isoweekday() | string) in day }}"

action:
- choose: []
  default: !input 'actions'

mode: single

Viel Spaß – und nie wieder überraschend leere Batterien! 🔋🎯

1 💬 3 🔁 9 ⭐