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.
Ü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:
- Repository klonen:
git clone https://github.com/Hotwheels93/medisana-bu570-esp32-ble-gateway - Abhängigkeiten im Board-Manager und Bibliotheksmanager installieren
dca_ble_gateway.inoöffnen und auf den ESP32 flashen- WiFi-Zugangsdaten über das Web-Interface einrichten
- 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.