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.
Hi vielleicht hilft dir dieses Video und die verlinkten Sourcen: https://www.youtube.com/watch?v=osneajf7Xkg Gruß, Sven
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.
> 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.