Wenn nachts das Handy spricht – Blutzucker-Überwachung mit Home Assistant

Eigentlich sollte es eine ganz normale Nacht werden. Doch kurz nach acht am Abend meldete sich mein Smartphone mit einer Sprachansage: „Achtung! Blutzucker 68, fällt leicht. Bitte etwas essen oder trinken.“ Ein paar Stunden später, um kurz vor eins, das gleiche Spiel noch einmal. Beide Male war das Problem nach wenigen Minuten gelöst – und beide Male war ich froh, dass mein Home Assistant wach geblieben ist, während wir es nicht waren.

Meine Frau trägt einen Dexcom G7 – einen Sensor zur kontinuierlichen Glukosemessung. Seit einigen Wochen landen die Werte auch in meinem Home Assistant. In diesem Beitrag zeige ich, was in dieser Nacht vorgefallen ist, wie die Technik dahinter funktioniert und wie du so etwas selbst aufbauen kannst.

Wichtig vorweg: Home Assistant ist hier ein zusätzlicher Beobachter für Angehörige – kein Medizinprodukt und kein Ersatz für die Alarme der Dexcom-App oder ärztlichen Rat. Wer diesen Aufbau nachbaut, lässt die Original-Alarme bitte immer eingeschaltet.

Die Nacht in Zahlen

Der komplette Verlauf von 18:00 bis 10:30 Uhr – jeder Punkt auf der Linie ist ein Messwert, die Kästen zeigen, wann Home Assistant Meldungen verschickt hat.

Was die Kurve erzählt:

  • 19:50 – 20:05 Uhr: Der Wert fällt innerhalb von nur 15 Minuten von 107 auf 68 mg/dl. Um 20:05 Uhr geht die erste Meldung raus – als Push-Nachricht und als laute Sprachansage über den Alarm-Kanal des Handys. Um 20:15 Uhr folgt eine Erinnerung, weil der Wert immer noch bei 70 liegt.
  • 20:32 Uhr: Der Wert ist wieder über 90 – Entwarnung aufs Handy.
  • 21:00 – 22:00 Uhr: Vermutlich der typische „Rebound“ nach dem Gegensteuern – die Kurve klettert auf rund 200 und pendelt sich danach langsam wieder ein.
  • 00:56 Uhr: Zweiter Abfall auf 77 mg/dl, wieder mit Sprachalarm. Sechs Minuten später stehen schon 93 auf der Uhr, kurz danach 117 – Entwarnung um 01:02 Uhr. Ein so steiler Wiederanstieg kann auch ein sogenanntes Kompressions-Tief sein (wer auf dem Sensor liegt, drückt die Messung künstlich nach unten). Ob echt oder nicht: Nachsehen schadet nie.
  • 03:26 Uhr: Nachtspitze von 213 mg/dl – ärgerlich, aber weit unter meiner Alarmschwelle. Hier blieb das Handy bewusst still.
  • 09:53 Uhr: Rund 20 Minuten kamen keine Werte an. Auch das meldet Home Assistant – denn ohne Daten gibt es auch keine Warnungen.
Zeit im Zielbereich – trotz der beiden Ausreißer nach unten lag der Wert rund 83 % der Zeit zwischen 70 und 180 mg/dl.

Ein paar Kennzahlen aus den 180 Messwerten dieser gut 16 Stunden:

KennzahlWert
Tiefster Wert68 mg/dl (20:05 Uhr)
Höchster Wert213 mg/dl (03:26 Uhr)
Mittelwert141 mg/dl
Zeit im Zielbereich 70–18083 %
Zeit unter 70unter 1 % (ca. 6 Minuten)
Variationskoeffizient24 % (Schwankungsbreite)
Meldungen aufs Handy2 Alarme, 1 Erinnerung, 2 Entwarnungen, 1 Daten-Hinweis

Die Statistik ist hier nur Beiwerk – das Wesentliche ist, dass die Meldungen jeweils innerhalb weniger Minuten auf dem Handy waren.

So funktioniert die Technik

Der Weg eines Messwerts – vom Oberarm bis zur Sprachansage.

Die Kette besteht aus fünf Gliedern:

  1. Der Sensor: Der Dexcom G7 sitzt am Oberarm und misst den Zuckergehalt in der Gewebeflüssigkeit – etwa alle fünf Minuten ein Wert, zehn Tage lang plus zwölf Stunden Nachlaufzeit.
  2. Die Dexcom-App: Sie empfängt die Werte per Bluetooth Low Energy auf dem Smartphone meiner Frau und hat ihre eigenen Alarme.
  3. Dexcom Share: Die App lädt die Werte in die Dexcom-Cloud hoch. Dort können „Follower“ – etwa Angehörige – mitlesen.
  4. Home Assistant: Die offizielle Dexcom-Integration fragt Dexcom Share regelmäßig ab und stellt zwei Entitäten bereit: den Glukosewert in mg/dl und den Trend (steigt, fällt, stabil …).
  5. Automationen: Hier passiert die eigentliche Arbeit – Schwellen prüfen, melden, erinnern, entwarnen.

Man könnte fragen: Warum nicht einfach die Dexcom-Follow-App? Die gibt es, und sie funktioniert. Der Mehrwert von Home Assistant liegt woanders: Die Werte stehen neben allem anderen – auf meinem Start-Dashboard, auf der Pixel-Anzeige an der Wand, mit der Restlaufzeit des Sensors. Und ich kann die Alarme genau so bauen, wie sie für uns passen – inklusive Sprachansage und Daten-Überwachung.

Die Programmierung dahinter

Drei Automationen bilden das Herz des Systems. Die Entitätsnamen habe ich für den Artikel vereinfacht.

1. Warnung bei niedrigen Werten – mit Hysterese

Der Kniff heißt Hysterese (zwei getrennte Schwellen für „Alarm“ und „Entwarnung“): Der Alarm geht unter 80 mg/dl los, die Entwarnung kommt aber erst über 90. Ohne diesen Abstand würde ein Wert, der um 80 herumpendelt, im Minutentakt Alarm und Entwarnung auslösen. Wer schon einmal eine Squelch-Schwelle am Funkgerät eingestellt hat, kennt das Prinzip.

alias: Blutzucker – Warnung unter 80
triggers:
  - trigger: numeric_state
    entity_id: sensor.dexcom_glukosewert
    below: 80
    id: niedrig
  - trigger: time_pattern        # Erinnerung alle 15 Minuten
    minutes: "/15"
    id: erinnerung
  - trigger: numeric_state
    entity_id: sensor.dexcom_glukosewert
    above: 90
    id: ok
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: [niedrig, erinnerung]
          - condition: numeric_state
            entity_id: sensor.dexcom_glukosewert
            below: 80
        sequence:
          - action: notify.mobile_app_pixel_9a
            data:
              title: "⚠️ Blutzucker niedrig"
              message: "{{ states('sensor.dexcom_glukosewert') }} mg/dl – bitte etwas essen oder trinken!"
              data:
                channel: Blutzucker
                priority: high
                ttl: 0
          - action: notify.mobile_app_pixel_9a     # Sprachansage
            data:
              message: TTS
              data:
                tts_text: "Achtung! Blutzucker {{ states('sensor.dexcom_glukosewert') }}."
                media_stream: "{{ 'alarm_stream_max' if trigger.id == 'niedrig' else 'alarm_stream' }}"
          - action: input_boolean.turn_on
            target:
              entity_id: input_boolean.blutzucker_niedrig
      - conditions:
          - condition: trigger
            id: ok
          - condition: state
            entity_id: input_boolean.blutzucker_niedrig
            state: "on"
        sequence:
          - action: notify.mobile_app_pixel_9a
            data:
              title: "✅ Blutzucker wieder ok"
              message: "{{ states('sensor.dexcom_glukosewert') }} mg/dl"
          - action: input_boolean.turn_off
            target:
              entity_id: input_boolean.blutzucker_niedrig
mode: single

Ein paar Details, die in der Nacht den Unterschied machen:

  • media_stream: alarm_stream_max – die Sprachansage der Home-Assistant-Companion-App läuft über den Alarm-Kanal von Android, mit maximaler Lautstärke. Das weckt auch dann, wenn das Handy auf leise steht. Die Erinnerungen danach kommen etwas leiser.
  • priority: high und ttl: 0 – die Nachricht wird sofort zugestellt und nicht vom Energiesparmodus zurückgehalten.
  • Eigener Benachrichtigungskanal „Blutzucker“ – so lässt sich in Android festlegen, dass genau diese Meldungen auch durch „Bitte nicht stören“ kommen.
  • Ein Hilfsschalter (input_boolean) merkt sich, dass ein Alarm aktiv war – nur dann gibt es auch eine Entwarnung.
  • Trendpfeile: In der Push-Nachricht wird der Trend als Pfeil angezeigt (⇈ ↑ ↗ → ↘ ↓ ⇊), in der Sprachansage als „steigt“, „fällt leicht“ usw. Interessant in dieser Nacht: Beim schnellen Abfall um 20 Uhr meldete der Trend nur „fällt leicht“ – der Pfeil hinkt dem tatsächlichen Verlauf manchmal hinterher.

2. Warnung bei hohen Werten – erst nach 30 Minuten

Hohe Werte sind selten akut gefährlich, sollen aber nicht unbemerkt bleiben. Deshalb meldet Home Assistant erst, wenn der Wert 30 Minuten am Stück über 270 mg/dl liegt (for: minutes: 30), danach alle 30 Minuten eine Erinnerung und unter 250 die Entwarnung. Kurze Spitzen nach dem Essen – oder wie hier die 213 um halb vier – lösen bewusst nichts aus. Niemand soll nachts für einen Wert geweckt werden, der sich ohnehin von selbst erledigt.

3. Wächter für den Wächter: „Keine Daten“

Die wichtigste Automation ist vielleicht die unscheinbarste. Alle Alarme nützen nichts, wenn keine Werte mehr ankommen – etwa weil das Handy meiner Frau außer Reichweite ist, der Sensor kurz aussetzt oder die Cloud hakt. Deshalb prüft ein Template, wann der letzte Wert gemeldet wurde:

triggers:
  - trigger: template
    value_template: >
      {{ states('sensor.dexcom_glukosewert') in ['unavailable','unknown']
         or (now() - states.sensor.dexcom_glukosewert.last_reported).total_seconds() > 1200 }}
    for:
      minutes: 1
actions:
  - action: notify.mobile_app_pixel_9a
    data:
      title: "⚠️ Blutzucker: keine Daten"
      message: "Warnungen für niedrig/hoch funktionieren gerade nicht."
  - wait_template: >
      {{ states('sensor.dexcom_glukosewert') not in ['unavailable','unknown'] }}
    timeout: { hours: 24 }
  - action: notify.mobile_app_pixel_9a
    data:
      title: "✅ Daten wieder da"
      message: "{{ states('sensor.dexcom_glukosewert') }} mg/dl – Warnungen laufen wieder."

Wichtig ist hier last_reported statt last_changed: Bleibt der Wert zufällig zweimal gleich, ändert sich der Zustand nicht – gemeldet wurde er aber trotzdem. So gibt es keine Fehlalarme bei stabilen Werten. Heute Morgen um 09:53 Uhr hat genau diese Automation angeschlagen, sechs Minuten später kam die Entwarnung.

Und drumherum

  • Sensor-Restlaufzeit: Die Dexcom-Integration liefert keine Information darüber, wann der Sensor abläuft. Deshalb führt ein input_datetime das Ablaufdatum mit; ein Knopf „Sensor gewechselt“ setzt es auf „jetzt + 10 Tage“. Am Abend vor dem Ablauf gibt es einen Hinweis, im Dashboard einen Fortschrittsbalken von Grün über Gelb nach Rot.
  • Start-Dashboard: Aktueller Wert, Trend und Restzeit auf einen Blick – am Mac genauso wie auf dem Handy.
  • Divoom Pixoo: Die kleine 16×16-Pixel-Anzeige an der Wand zeigt im Wechsel Uhrzeit, Außentemperatur und den Blutzuckerwert. Angebunden ist sie über einen Raspberry Pi Zero 2 W als Bluetooth-MQTT-Brücke.

Was ich aus der Nacht mitnehme

  • Die Kette hat funktioniert: Sobald ein Wert in Home Assistant ankam, war die Meldung innerhalb einer Sekunde auf dem Handy. Die eigentliche Verzögerung von wenigen Minuten steckt im Weg über Dexcom Share.
  • Weniger ist mehr: Sechs Meldungen in einer Nacht sind genug. Jede zusätzliche, unnötige Meldung erhöht die Gefahr, dass man irgendwann wegdrückt, ohne hinzusehen.
  • Ein neuer Sensor braucht Ruhe: Der aktuelle G7 wurde erst am Vortag gesetzt. Gerade in den ersten 24 Stunden gab es mehrere kurze Datenlücken – gut, dass die Überwachung dafür schon lief.

Bezugsquellen

  • Dexcom G7 – in Deutschland auf Rezept, Kostenübernahme durch die Krankenkasse nach ärztlicher Verordnung. Infos unter dexcom.com. Die Funktion „Share“ wird in der Dexcom-App aktiviert und braucht mindestens einen eingeladenen Follower.
  • Home Assistant – kostenlos und Open Source: home-assistant.io
  • Dexcom-Integration – direkt in Home Assistant enthalten: home-assistant.io/integrations/dexcom
  • Home Assistant Companion App für Android – kostenlos im Google Play Store (für iOS im App Store)
  • Raspberry Pi als Home-Assistant-Server, z. B. bei Amazon – alternativ die fertige Home Assistant Green
  • Divoom Pixoo Pixel-Anzeige, z. B. bei Amazon
  • Raspberry Pi Zero 2 W für die Pixoo-Brücke, z. B. bei Amazon

Zum Schluss

Technik kann Sorgen nicht wegnehmen – aber sie kann dafür sorgen, dass man im richtigen Moment Bescheid weiß. Für uns ist das ein gutes Gefühl, gerade nachts. Wer selbst mit Diabetes im Haushalt lebt und mit Home Assistant arbeitet: Ich freue mich über Erfahrungen, Ideen und Verbesserungsvorschläge – ob hier in den Kommentaren oder auf den bekannten Kanälen.

Hinweis: Dieser Beitrag beschreibt ein privates Bastelprojekt. Er ersetzt keine medizinische Beratung. Therapieentscheidungen gehören in die Hände von Ärztin oder Arzt und Diabetesteam.


Hashtags: #HomeAssistant #Dexcom #DexcomG7 #CGM #Diabetes #Blutzucker #SmartHome #Hausautomation #RaspberryPi #OpenSource #DIY #Pixoo #Divoom #Automation #DL7AG #Amateurfunk

Unterstütze DL7AG

Hat dir dieser Beitrag geholfen?

DL7AG ist ein unabhängiges Projekt rund um Amateurfunk, Wetter, Satelliten und Technik – ohne Werbung, ohne Paywall, dafür mit sehr viel Kaffee. Wenn dir der Beitrag gefallen hat, spendier mir doch einen.

☕ Kaffee ausgebeneinfach & sicher via Ko-fi