Ich habe eine ESP32-Applikation, welche aktuell Temperatur, Feuchtigkeit und ein paar andere Daten einzeln per Bluetooth LE überträgt. Dabei handelt es sich immer nur um den aktuell gemessenen Wert, das funktioniert problemlos. Jetzt würde ich auch gerne gespeicherte Messreihen übertragen, am Besten im CSV-Format, von mir aber auch in was anderem, passenden. Allerdings kann ich nirgends im BLE-Standard irgendwas entdecken, was sich eignet, um Daten zu übertragen, die größer als ein paar Bytes sind. Deswegen: wie kann ich diese Datenreihen per BLE übertragen?
Zonk schrieb: > Jetzt würde ich auch gerne gespeicherte Messreihen übertragen, am Besten > im CSV-Format, von mir aber auch in was anderem, passenden. Allerdings > kann ich nirgends im BLE-Standard irgendwas entdecken, was sich eignet, Das hat auch rein gar nix mit dem BLE-Standard zu tun.
BLE begrenzt erstmal auf 20 Byte. Also ist die Frage, wie man mit „BLE more than 20 Bytes“ sendet.
Dirk B. schrieb: > BLE begrenzt erstmal auf 20 Byte. > > Also ist die Frage, wie man mit „BLE more than 20 Bytes“ sendet. Bau ein Protokoll drumherum, dann kannst du unbegrenzte Anzahl übertragen.
npn schrieb: > Bau ein Protokoll drumherum, dann kannst du unbegrenzte Anzahl > übertragen. das LE begrenzt die Sendezeit. Beliebig lange darf man nicht senden.
Dirk B. schrieb: > npn schrieb: >> Bau ein Protokoll drumherum, dann kannst du unbegrenzte Anzahl >> übertragen. > > das LE begrenzt die Sendezeit. Beliebig lange darf man nicht senden. Was genau hast du an "Protokoll" nicht verstanden?
CSV ist ungeeignet zur Datenübertragung, weil du ja deine Messdaten im Dezimalformat in einem Zeichensatz wie Unicode darstellst und dann kodierst. Aus dem Byte "129" werden dann 3 Byte. Das ist nicht effiziezt. Du kannst dir ja mal überlegen, ob eine "Zeile" deiner Daten mehr als 20 Byte hat. Vielleicht passen die da ja schon rein, wenn du sie geschickt kodierst.
Am einfachsten Du zerlegst Dein Datenpaket in Häppchen von jeweils 18 oder 19 Bytes. Das erste Byte enthält die Anzahl an gültigen Bytes (0 ... 18/19) Das zweite könnte eine Prüfsumme beinhalten. Dann so oft Pakete senden, bis Dir die Daten ausgehen. Ob Dauersenden allerdings das Gelbe vom Ei ist, wenn Du BLE verwendest, ist eine andere Sache. Sollen nur ASCII-Zeichen verschickt werden, so kannst Du Dir u.U. auch das Feld mit der Länge sparen und einfach das Letze Paket mit ungültigen Zeichen auffüllen. Z.B. '\0' was die C-Sprachler bevorzugen würden. So weiß der Empfänger, wann der seine Sachen packen kann und nachhause gehen kann. Oder so...
Zonk schrieb: > Ich habe eine ESP32-Applikation, welche aktuell Temperatur, Feuchtigkeit > und ein paar andere Daten einzeln per Bluetooth LE überträgt. Dabei > handelt es sich immer nur um den aktuell gemessenen Wert, das > funktioniert problemlos. > > Jetzt würde ich auch gerne gespeicherte Messreihen übertragen, am Besten > im CSV-Format, von mir aber auch in was anderem, passenden. Allerdings > kann ich nirgends im BLE-Standard irgendwas entdecken, was sich eignet, > um Daten zu übertragen, die größer als ein paar Bytes sind. > > Deswegen: wie kann ich diese Datenreihen per BLE übertragen? Wenn Du einen Wert übertragen kannst, kannst Du das ja auch mehrmals machen. Schick einfach immer einen Zeitstempel (z.B. als time_t) mit, dann kannst Du die einzelnen Werte zeitlich zuordnen. fchk
Du kannst auch WLAN nehmen. Das braucht zwar mehr Strom, ist aber deutlich schneller. Dadurch gleicht sich das wieder aus.
Optimal für ble ist zuerst mal, die MTU auf 517 byte hochzustellen. Das müssen beide geräte unterstützen. Neben der verminderung der datenmenge (ohne zu viel overhead und ineffizientes encoding) lassen sich die daten in mehrere pakete aufteilen, von denen idealerweise bis zu 6 je connection interval senden lassen.
Das mit dem separaten Protokoll ist grundsätzlich eine gute Idee, allerdings möchte ich mir auf der Empfängerseite jetzt keine eigene App basteln müssen. Deswegen ja auch die Idee mit dem CSV-Format: - ich empfange die Messdaten mit z.B. nRF (oder einer anderen geeigneten App) - ich speichere die Daten und öffne sie dann mit einer anderen App, die mir die CSV-Daten als Graph darstellte In beiden Fällen kann ich auf fertige und frei verfügbare Apps zurückgreifen und muss mir nicht selber noch was zusammenbauen.
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.