Home-Assistant: Ladestand von Batterie-Devices prüfen

Ich habe in meinem Haus recht viele batteriebetriebene Sensoren von Xiaomi verbaut:

  • Fenster- und Türsensoren
  • Luftfeuchtigkeitssensoren
  • Bewegungsmelder

Eine Problematik, die alle batteriebetriebenen Geräte gemein haben ist, irgendwann sind sie eben leer. Damit mir nun nicht die Batterie des Bewegungssensor an der Eingangstüre genau dann leer geht, wenn keiner zuhause ist und jemand einbricht, habe ich eine Automation erstellt die jede Nacht um 0 Uhr den Zustand aller batteriebetriebenen Geräte in meiner Home-Assistant Installation prüft.

Dazu pflege ich eine Gruppe eben all dieser Devices:

battery_entities:
  entities:
    - sensor.battery_xiaomi_attic
    - sensor.battery_xiaomi_bathroom
    - sensor.battery_xiaomi_bedroom
    - sensor.battery_xiaomi_hwr
    - sensor.battery_xiaomi_kitchen
    - sensor.battery_xiaomi_living
    - sensor.battery_xiaomi_maindoor
    - sensor.battery_xiaomi_office
    - sensor.battery_xiaomi_toilet
    - sensor.battery_xiaomi_fitness
    - sensor.battery_xiaomi_storage
    - sensor.battery_xiaomi_window_living_big
    - sensor.battery_xiaomi_window_living_small
    - sensor.battery_xiaomi_window_dining
    - sensor.battery_xiaomi_window_kitchen_side
    - sensor.battery_xiaomi_window_kitchen_front
    - sensor.battery_xiaomi_window_guest
    - sensor.battery_xiaomi_window_hwr
    - sensor.battery_xiaomi_window_bathroom_side
    - sensor.battery_xiaomi_window_bedroom_side
    - sensor.battery_xiaomi_window_bedroom_garden
    - sensor.battery_xiaomi_window_office_garden
    - sensor.battery_xiaomi_glasbs_living_big_right
    - sensor.battery_xiaomi_changing
    - sensor.battery_xiaomi_motion_bathroom

Zum Zugriff auf die Batterie-Informationen, benötigt es jedoch die Konfiguration eines Template-Sensors im Home-Assistant:

sensor:
  - platform: template
    sensors:
      battery_xiaomi_attic:
        friendly_name: 'Xiaomi Feuchtigkeitssensor - Spitzboden'
        value_template: "{{ states.sensor.humidity_158d0002fb487a.attributes.battery_level|default(-1)|int if states.sensor.humidity_158d0002fb487a is not none }}"
        unit_of_measurement: '%'

Ich bastel mir also für jedes Batterie-Device einen Sensor, packe den in die Gruppe und die Gruppe nutze ich wiederum zur Iteration in der Automatisierung.

Die Grundidee meiner Regel ist dabei die folgende:

Prüfe jede Nacht um 0 Uhr ob irgendein Gerät aus der Gruppe „battery_entities“, einen Ladestand von unter 10% hat. Sollte dieser der Fall sein, wird die Regel ausgeführt und ich suche mir in der „Action“ alle Geräte zusammen auf die diese „Condition“ zutrifft und packe diese in eine Mail an mich.

Die „Condition“ die ich dafür nutze sieht so aus:

condition: template
value_template: >-
  {{ states | selectattr('entity_id', 'in', state_attr('group.battery_entities', 'entity_id')) | map(attribute='state') | map('int') | select("lessthan", 10) | list }}

Die „Action“, so:

data_template:
  message: >
    The following devices reporting a low battery status: {% for item in
    expand('group.battery_entities') %}
      {%- if item.state | int < 10 %}
        {{ item.name }} ({{item.state}}%)
      {% endif %}
    {%- endfor %} Regards - Your Homie
  title: Homie - Report of battery devices with low energy
service: notify.homiemail

Alles zusammen gebracht, sieht dann so aus:

- id: CheckBatteryFromDevices
  alias: Check battery level of battery devices
  trigger:
  - platform: time
    at: 00:00:00
  condition:
  - condition: template
    value_template: '{{ states | selectattr('entity_id', 'in', state_attr('group.battery_entities', 'entity_id')) | map(attribute='state') | map('int') | select("lessthan", 10) | list }}'
  action:
  - data_template:
      title: Homie - Report of battery devices with low energy
      message: "The following devices reporting a low battery status: {% for item\
        \ in expand('group.battery_entities') %}\n  {%- if item.state | int < 10 %}\n\
        \    {{ item.name }} ({{item.state}}%)\n  {% endif %}\n{%- endfor %} Regards\
        \ - Your Homie\n"
    service: notify.homiemail

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert