German Wie auf Bluetoothgeräte zugreifen?

Wolli013

Well-Known Member
Licensed User
Longtime User
Eine Frage an die Profis,
wenn ich mir z.B. ein Bluetooth Laser Messgerät kaufe, kann ich dann mit B4A die Mess-Ergebnisse abgreifen, wenn ja wie?.
Habt ein paar links für mich?
 

DonManfred

Expert
Licensed User
Longtime User

Wolli013

Well-Known Member
Licensed User
Longtime User
Nein die suche ist nicht defekt!
Mir ging es eigendlich nur darum ob man die Daten ohne weiteres einfach abgreifen kann!
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Bin jetzt ein bisschen mit BLE 2 am probieren, nur was kann man mit den Daten anfangen?
Und irgendwie gibt es keine richtige Verbindung mit dem Messgerät, es ist immer am blinken.
Bei dem Bluetoothgerät handelt es sich um eine Feuchte und Temperaturmessgerät.
Hier ein paar Daten die ich erhalte.


Name: T605i SN:49324872
Mac Adresse: 98:84:E3:ED:7B:9C
RSSI: -55
Zusatzdaten: (MyMap) {1=[B@3274f08, 2=[B@a0146a1, 9=[B@79650c6, 0=[B@6c0e887}
06
F0FF
543630356920534E3A3439333234383732
0201060302F0FF1209543630356920534E3A3439333234383732000000000000000000000000000000000000000000000000000000000000000000000000
Discovering services.
Connected

Vielleicht kann einer weiterhelfen.
 

Knoppi

Active Member
Licensed User
Longtime User
Sieht doch gut aus, du bekommst die Daten als Map also funktioniert die Übertragung.

Die Schwierigkeit ist jetzt herauszufinden wie die Daten aufgebaut sind.
Wenn der Anbieter die Schnittstelle nich offengelegt hat kann das zu unlösbaren Problemen führen.
Am Einfachsten könnte es sein die aktuelle Temperatur zu bestimen, wenn dein Gerät aber auch Min und Max Temperaturen liefert ist das auch schon nicht mehr so einfach.
Deine Temperatur-Werte sollten im Messberich des Gerätes liegen bsp -20 bis +60 °C evtl auch in °F
Und die Luftfeuchtigkeit im Bereich von 0-100%.
Die Daten werden meistens in Hex übertragen und es kann sein das ohne Vorzeichen gesendet wird und du dann einen Messwert von 20 = 0°C hast.

Ich habe das Problem vor ca 2 Jahren mit einem 433mhz Temperatur-Fühler gehabt, hat mich 3 Tage gekostet alle Werte zu Bestimmen.
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Danke für die Info, aber wie kann man den überhaupt die Daten aus den Zahlen herraus bekommen?
 

MaFu

Well-Known Member
Licensed User
Longtime User
Da musst Du die Dokumentation von dem Messgerät durchschauen!
Der Hersteller muss doch angeben welche Daten wie übertragen werden.
Nicht unbedingt. Die Hersteller bieten bei Messgeräten mit Bluetooth normalerweise eigene Apps dafür an. Die Offenlegung des Protokolls findet dagegen eher selten statt.
 

pucki

Active Member
Licensed User
Longtime User
Es gibt eine Lösung für dein Problem und 3 Möglichkeiten wie das Ergebnis ist

Die Lösung.
Schreib den Hersteller an. Deutsche sind bei Produkten die sie selbst herstellen oft sehr nett. (Eigene Erfahrung)

Die 3 Möglichkeiten des Ergebnis ;)

1.) Der HERSTELLER (nicht der Händler) gibt die Infos zum Protokoll heraus. Meist sind das dann mehr oder weniger gut dokumentierten SDK's

2.) Der HERSTELLER will das du seine App nutzt. Das macht er vielleicht um Infos zu bekommen (siehe AGB's und Datenschutzrichtlinien) Also gibt es nix.

3.) Der HERSTELLER mauert damit keiner raus bekommt wer der echte Hersteller ist. Meist wenn der "Hersteller" nicht der Hersteller ist, sondern nur sein Label drauf pappt.
Kann sogar sein das der Hersteller dann nicht einmal anwortet.

Alternative Lösung.

Du knackst das Protokoll durch Analyse der Werte.

Solange du das nur für dich machst ... wayne ,
ABER wenn du die App dann vertreibst kann es schnell Ärger geben. Wenn du sie vertreiben willst, rede mit den Hersteller. Wenn man vorher mit den Leuten redet ist vieles oft einfacher

Gruß

Pucki
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Danke für die Info, ich habe sie bereits angeschrieben, mal sehen ob sie antworten.
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Wer kann mir denn sagen,wie man die Daten aus so einen String herauslesen kann?

543630356920534E3A3439333234383732
0201060302F0FF1209543630356920534E3A3439333234383732000000000000000000000000000000000000000000000000000000000000000000000000

Habe da irgendwie kein Plan und finde auch nichts darüber hier im Forum!
 

pucki

Active Member
Licensed User
Longtime User
versuchs mal hiermit.

https://www.b4x.com/android/forum/threads/string-functions.10365/#content

* edit *
Mid (StringText As String, Start As Int, Length As Int) As String
Returns the a new String for how ever many characters passed in Length from
a starting position passed in Start.
Example:
Mid("This is a long line of text", 5, 2)

*end*


Sind die Beschreibung der Stringfunction Libs.

Grundsätzlich. Ausschneiden -> umwandeln (wenn nötig in eine echte Zahl) -> verarbeiten ;)

Das Ausschneiden ist ein indirektes Problem. Weil du wissen musst wo du schneiden musst. Also was welche Daten sind, was Prüfsummen, etc. Dafür brauch man ja das Protokoll ;) Sonst könnte es ja fast jeder. ;)

Merke alle Computerdaten dieser Welt sind eigentlich nur eine Reihe von 256 unterschiedlichen Zeichen ;););)

Programtechnisch funktioniert das so. Der Code ist nicht zum kopieren da die syntax nicht stimmen muss. (ist VB for Windows code)

B4X:
lang = len(mein_BT_string)

For i = 1 to lang
teil_string = mid(mein_BT_string,i,1)  ' gibt 1 zeichen ab der Stellen i

' teil-string analsieren (neu zusammenrechnen z.b. etc.
'Wie gesagt das steht im Protokoll

next i

Gruß

Pucki
 
Last edited:

pucki

Active Member
Licensed User
Longtime User
Keiner Tipp noch.

Die Stringfunctions lib. must du auswendig können. Sonst bekommst du irgendwann einmal ein richtiges Problem.

Es gibt nur wenige Libs die man im Kopf haben muss. Diese hier ist die wichtigste. !!! wenn man mit Daten arbeitet. !!

Gruß

Pucki
 

klaus

Expert
Licensed User
Longtime User
Kannst Du näher erkläheren wie Du die Daten in Post #7 bekommen hast.

Ich habe ein bisschen rumgefummelt mit dem String in Post #16.
Das: 543630356920534E3A3439333234383732
ist gleich: T605i SN:49324872
Das Gleiche findet man noch hier:
0201060302F0FF1209543630356920534E3A3439333234383732000000000000000000000000000000000000000000000000000000000000000000000000
Die Zahlenpaare sind hex Werte der ASCII Buchstaben.

Aber was das 0201060302F0FF1209 bedeutet weiss ich nicht.

Beiliegend mein Testprogramm, nutzt die ByteConverter Library.
 

Attachments

  • Entziffern.zip
    6.9 KB · Views: 321
Top