ESP32 Blutdruck BLE Gateway C++ Arduino

Medisana BU570 Blutdruckmessgerät per BLE mit dem ESP32 auslesen

Arduino Projekt, das Blutdruckmessungen mit dem Medisana BU570 Blutdruckmesser per BLE ausliest und über WiFi an REST-API weiterleitet.

Martin Hocquel-Hans ·
 Medisana BU570 Blutdruckmessgerät per BLE mit dem ESP32 auslesen

Überblick

Smart Devices wie Blutdruckmessgeräte sind längst Teil des Alltags, ihre Daten bleiben jedoch häufig in herstellereigenen Apps isoliert. Wer Messwerte in eigene Systeme, Dashboards oder APIs integrieren möchte, stößt schnell an Grenzen. Das Projekt medisana-bu570-esp32-ble-gateway demonstriert ein einfaches Arduino Projekt mit einem ESP32 Mikrocontroller als BLE-WiFi-Gateway, zum Auslesen von Messwerte des Medisana BU570 Blutdruckmessgeräts und weiterverarbeiten per REST-API

Funktionsweise

Der ESP32 verbindet sich via Bluetooth Low Energy (BLE) mit dem Medisana BU570 und abonniert dabei standardkonforme BLE-Charakteristiken gemäß dem BLE Health Device Profile:

  • Blood Pressure Measurement (UUID 0x2A35) – liefert die finalen Messwerte per Indication
  • Intermediate Cuff Pressure (UUID 0x2A36) – liefert Zwischenwerte während der Messung per Notification

Die empfangenen Rohdaten werden auf dem ESP32 geparst und anschließend per WiFi als JSON-Payload an konfigurierbare API-Endpunkte übermittelt.

Features

  • Automatische Geräteerkennung – Scan und Verbindungsaufbau zu kompatiblen BLE-Blutdruckmessgeräten
  • Standardkonformes BLE-Parsing – Implementierung des BLE Health Device Profile (Blood Pressure Service 0x1810)
  • WiFi-Konfiguration per Web-Interface – SSID und Passwort können bequem über einen Browser eingerichtet werden
  • API-Weiterleitung – Messwerte werden als strukturiertes JSON an eigene Endpunkte gesendet
  • RSSI-Tracking – Signalstärke wird bei jeder Übertragung mitgeliefert
  • Zeitsynchronisation – Das Messgerät wird über den Current Time Service (0x1805) mit der aktuellen Uhrzeit versorgt
  • WiFi/BLE-Koexistenz – Konflikte zwischen den Funkschnittstellen werden durch die ESP32 Coexistence-API gezielt minimiert

JSON-Format

Die Messwerte werden in folgendem Format übermittelt:

{
"systolic": 120,
"diastolic": 80,
"map": 93,
"pulse": 72,
"rssi": -55,
"timestamp": "2025-02-17T14:30:45Z"
}

API-Endpunkte

Das Gateway kommuniziert mit drei Endpunkten:

Methode Endpunkt Beschreibung
POST /index.php?endpoint=measurements Finale Blutdruckmessung
POST /index.php?endpoint=intermediate Manschettendruckwerte während der Messung
GET /index.php?endpoint=status Heartbeat alle 60 Sekunden

Voraussetzungen & Abhängigkeiten

Hardware:

  • ESP32-Entwicklungsboard

Bibliotheken:

  • Arduino ESP32 Core (Apache 2.0)
  • ESP32 BLE Library (Apache 2.0)
  • ESP32 Coexistence API
  • ArduinoJson (MIT)

Installation

Das Projekt wird mit der Arduino IDE oder PlatformIO geflasht:

  1. Repository klonen: git clone https://github.com/Hotwheels93/medisana-bu570-esp32-ble-gateway
  2. Abhängigkeiten im Board-Manager und Bibliotheksmanager installieren
  3. dca_ble_gateway.ino öffnen und auf den ESP32 flashen
  4. WiFi-Zugangsdaten über das Web-Interface einrichten
  5. API-Endpunkt in der Konfiguration hinterlegen

Lizenz

Das Projekt steht unter der Apache 2.0-Lizenz und ist vollständig Open Source.

Haftungsausschluss

Dieses Projekt dient ausschließlich Entwicklungszwecken und ist nicht für den Einsatz in der medizinischen Diagnostik oder Therapie geeignet. Es besteht keine Verbindung zur Medisana AG. Die erfassten Daten ersetzen keine ärztliche Beurteilung. Die Nutzung erfolgt ausschließlich auf eigene Verantwortung.