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 20% 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')) | selectattr('state', 'lt', '20') | list | length > 0 }}

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 < 20 %}
        {{ 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'')) | selectattr(''state'', ''lt'', ''20'') | list | length > 0
      }}'
  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 < 20 %}\n\
        \    {{ item.name }} ({{item.state}}%)\n  {% endif %}\n{%- endfor %} Regards\
        \ - Your Homie\n"
    service: notify.homiemail

DIY: ZigBee Glasbruchsensor

Als stolzer Eigenheimbesitzer mit KNX, ich nenne es mal, Grundverkabelung (Licht, Heizung und Rollos) kamen relativ schnell, nach Fertigstellung des Bau’s, weitere „Dinge“ auf, die man gut Smart machen kann.

Ich selber, bin ein großer Fan von Home-Assistant. Hier kann man allerlei Technologien an einem Ort integrieren.

So habe ich diverse Steckdosen mit WLAN-Aktoren von Shelly versehen, oder Bewegungsmelder und Luftfeuchtigkeitssensoren von Xiaomi „verbaut“.

Für meine Partnerin ist einer der großen Vorteile eines Smart-Home, die Sicherheit die man erhöhen kann. So ist im Eingangsflur eine ONVIF-Kamera aufgestellt. Die Eingangstüre ist mit einem Bewegungssensor versehen und alle Fenster haben Öffnungssensoren. Alles ist zusammen verbunden und diverse Automations-Regeln feuern bei diversen Zuständen und alarmieren im Falle eines Einbruchs oder spielen Musik ab, schalten das Licht an oder fahren die Rollos runter.

Was mir hier jedoch noch fehlte, waren Glasbruchsensoren. Die Automatisierung erkennt, wenn wir nicht zuhause sind und jemand z.B. die Terassentüre aufmacht. Was aber nicht erkannt wird ist, wenn jemand die Scheibe einschlägt und durch die Scheibe in den Innenraum tritt.

Abhilfe schafft hier nur ein Glasbruchsensor. Da ich nichts gefunden habe was mir passt, dachte ich mir, kann man doch bestimmt auch selber bauen.

Meine Lösung, ist eine selbstgebaute Verbindung zwischen einem ABUS Glasbruchsensor passiv (GMB7300) und einem Xiaomi Aqara Fenstersensor.

Der Xiaomi Fenstersensor kommuniziert mittels ZigBee mit seiner Zentrale und diese Zentrale kann im Home-Assistant sehr einfach eingerichtet werden.

Der Sensor, im original, schaltet mittels Magnetschalter. Diesen Magnetschalter habe ich einfach mit einer Zange „abgeknipst“ und den Glasbruchsensor angelötet.

Ab jetzt schaltet der Glasbruchsensor die Kontakte und der Xiaomi Sensor meldet entsprechend weiter. Testen kann man das ganze indem man den Glasbruchsensor anbringt und mit einer Münze gegen die Scheibe „flitscht“ (einfach mal googeln).

Der ABUS Sensor hat knappe 15 EUR gekostet und der Aqara Sensor knappe 10. Somit hat man für 25 EUR einen funktionalen Glasbruchsensor der ohne große Probleme in die Home-Assistant Automatisierung eingebunden werden kann.

Disclaimer: Ich bin kein Elektriker oder Fensterbauer. Jeder ist für sein Handeln selber verantwortlich und natürlich kann diese Lösung keine Garantie auf Funktion geben, für mich selber passt es. Es muss eben nur jeder für sich selber entscheiden.