Forum: Mikrocontroller und Digitale Elektronik Bluetooth-Standard für Lifestyle-/Fitnessgeräte


von nocloud (Gast)


Lesenswert?

Hallo zusammen,

mittlerweile haben viele Geräte ja eine BT-Schnittstelle. Grundsätzlich 
muss dann ein Smartphone gekoppelt werden, das die Daten in die Cloud 
transportiert.
Ich würde viel lieber die Daten selbst per BT auslesen und ohne Cloud 
auswerten.
Frage: Gibt es hierfür irgendeinen Standard der BT-Übertragung (SPP?)? 
D.h. ich müsste "nur" noch das serielle herstellerspezische Protokoll 
rausfinden, oder muss ich mich auf noch tieferer BT-Ebene damit 
auseinandersetzen?
Ich habe jetzt kein ganz konkretes Produkt im Sinn, sondern möchte nur 
rausfinden, ob sich ein tiefergehendes Beschäftigen überhaupt lohnt.
Gibt es evtl. Projekte oder eine Szene, die sich mit dem "entclouden" 
beschäftigt?

Danke.

von Sven B. (sb2048)


Lesenswert?

Hi

vielleicht hilft dir dieses Video und die verlinkten Sourcen:
https://www.youtube.com/watch?v=osneajf7Xkg

Gruß,
 Sven

von Joachim S. (oyo)


Lesenswert?

nocloud schrieb:
Die meisten dieser Geräte verwenden Bluetooth 4.x bzw. Bluetooth Low 
Energy.
Die Bluetooth SIG hat für Bluetooth 4.x zahlreiche "GATT Services" 
standardisiert für diverse typische Anwendungsfälle, z.B. 
"Körper-Thermometer", "Blutdruckmessung", "Pulsoximeter", 
"Herzfrequenzmesser", "Körper-Waage", "Glukose-Messung":
https://www.bluetooth.com/specifications/gatt/services
Wenn Du auf einen der im obigen Link aufgelisteten "Services" klickst, 
dann findest Du alle nötigen Informationen dazu, wie man mit 
Bluetooth-Geräten kommunizieren kann, die einen der dort aufgelisteten 
Services unterstützen (also z.B. als "Körperwaage" oder 
"Herzfrequenzmesser" fungieren).

Wenn man das Protokoll erst einmal kennt, ist es üblicherweise nicht 
sehr schwer mit solchen Geräten zu kommunizieren; man muss normalerweise 
nur eine handvoll Bytes dekodieren. Folgendes in Node.js geschriebenes 
Code-Fragment genügt bspw. schon, um sich die die Daten von 
Bluetooth-"Herzfrequenzmesser"-Devices ausgeben zu lassen:
1
bluetooth = require('simble');
2
3
bluetooth.requestCharacteristic(0x2A37, 0x180D)
4
.then(characteristic => {
5
  characteristic.subscribe(event => {
6
    console.log('Heart Rate: ' + event.target.value[1]);
7
  });
8
});
Obiger Code sucht nach einem Gerät, das den Bluetooth Service 0x180D 
(="Heart Rate Service": 
https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.service.heart_rate.xml) 
unterstützt, und "subscribed" dann auf die Charakteristik 0x2A37 
(="Heart Rate Measurement": 
https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.heart_rate_measurement.xml). 
Jedes auf diese Weise empfangene Datenpaket enthält als zweites Byte die 
aktuelle Herzfrequenz.

Das Problem ist nur: Nicht alle "Lifestyle/Fitness-Geräte" mit Bluetooth 
4.x-Schnittstelle verwenden den passenden, von der Bluetooth SIG 
standardisierten Service, sondern stattdessen ihr eigenes Protokoll!

Beim Kauf solcher Geräte sollte man daher grundsätzlich Geräte nehmen, 
die einen von der Bluetooth SIG standardisierten Service aus der obigen 
Liste verwenden, und kein proprietäres, hersteller-eigenes Protokoll - 
denn dann ist es vglw. leicht, auch ohne die Hersteller-App mit den 
Geräten zu kommunizieren; dann ist auch die Chance viel höher, eine 
existierende Alternativ-Software zur Hersteller-App zu finden. Leider 
steht nicht gross auf der Verpackung, ob dem so ist, man muss also 
zumindest etwas Internet-Recherche betreiben... :-(

Um ein vorhandenes Bluetooth 4.x-Gadget mal ein bisschen zu untersuchen, 
kann man bspw. die kostenlose Android-App "nRF Connect" benutzen.

von olaf (Gast)


Lesenswert?

> Ich würde viel lieber die Daten selbst per BT auslesen und ohne Cloud
> auswerten.
> Frage: Gibt es hierfür irgendeinen Standard der BT-Übertragung (SPP?)?

Diese Geraete benutzen in der Regel kein Bluetooth sonden BLE, also 
Bluetooth Low Energie. Das hat bis auf dem Namen und der verwendeten 
Frequenz nur wenig mit Bluetooth zutun.

Das hat verschiedene Folgen:

Dein Handy muss mindestens Android 4.4 oder neuer benutzen im sich mit 
so einem Sensor zu verbinden.

Du brauchst mindestens Win10 auf dem PC. Win8 koennte theoretisch auch 
gehen enthaelt aber zuviele Bugs. Jedenfalls hab ich es damit noch nicht 
hin bekommen.

Du brauchst einen modernen Linuxkernel.

Apple: Keine Ahnung. Vermutlich muss man da erstmal seine Oma 
verpfaenden.

Wenn das vorhanden ist dann ist BLE aber die bessere Loesung. Es gibt 
dort grundsaetzlich Profile in denen die Datenuebertragung 
standardisiert wurde. Als Beispiel sei mal die Herzfrequenz, Temperatur 
oder die Batteriespannung genannt. Von daher koennte also ein Sensor mit 
unterschiedlichster Software laufen. Die Frage ist nur ob die Hersteller 
das auch nutzen oder ob sie nicht ganz bewusst Dinge einbauen um sowas 
auszuschliessen. Wobei letzteres sogar in deinem Sinne sein kann. Ich 
hab z.B schonmal bei einem Testaufbau den Herzfrequenzsensor meines 
Nachbarn gesehen. Da koennte man dann gleich mal kontrollieren wie fit 
der olle Sack noch ist. :-)

Es gibt von Nordik eine Android-Software
https://play.google.com/store/apps/details?id=no.nordicsemi.android.log&hl=de

Damit kann man schonmal pruefen was so ein BLE Device grundsaetzlich 
fuer Profile anbietet.

Olaf

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

olaf schrieb:
> Apple: Keine Ahnung. Vermutlich muss man da erstmal seine Oma
> verpfaenden.

Das wohl ausnahmsweise nicht. Das ist nur der Fall, wenn man BT (ohne 
LE) mit iOS-Geräten nutzen will, dann aber sollte man die Großtante 
gleich mit ins Paket stecken.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.