German Wie auf Bluetoothgeräte zugreifen?

Wolli013

Well-Known Member
Licensed User
Longtime User
Ich nutze die BLE Lib


B4X:
Sub Manager_DeviceFound (Name As String, Id As String, AdvertisingData As Map, RSSI As Double)
 
Log("Name: " & Name)
Log("Mac Adresse: " & Id)
Log("RSSI: " & RSSI)
Log("Zusatzdaten: " & AdvertisingData)

Dim data1() As Byte = AdvertisingData.Get(1)
Dim data2() As Byte = AdvertisingData.Get(9)
Dim data3() As Byte = AdvertisingData.Get(0)
 
Dim bc As ByteConverter
Log(bc.HexFromBytes(data1))
Log(bc.HexFromBytes(data2))
Log(bc.HexFromBytes(data3))

End Sub
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Rufst Du auch ReadData(Service As String) auf?
Ja.

Was bekommst Du im Event DataAvailable (ServiceId As String, Characteristics As Map)
Anbei die Screenshots.
Screenshot_20171206-174057.png Screenshot_20171206-174131.png Screenshot_20171206-174139.png
 

klaus

Expert
Licensed User
Longtime User
Tja, da bin ich mit meinem Latein am Ende.
Denn in diesen Strings ändert sich nur der erste Teil:
00002a28-0000-1000-8000-00805f9b434fb
Sieht fast so aus wie eine fortlaufende Zahl.
Die Werte in grau Hardware Revision, Software Revision usw, und speziell ?experimental wie bekommst Du diese?
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Über diesen Aufruf
B4X:
Sub Manager_DataAvailable (ServiceId As String, Characteristics As Map)
    CallSub3(Main, "DataAvailable", ServiceId, Characteristics)
End Sub
 

Wolli013

Well-Known Member
Licensed User
Longtime User
B4X:
Sub DataAvailable (Service As String, Characteristics As Map)
    pbReadData.Visible = False
    clv.Add(CreateServiceItem(Service), 30dip, "")
    For Each id As String In Characteristics.Keys
        clv.Add(CreateCharacteristicItem(id, Characteristics.Get(id)), 40dip, "")
    Next
End Sub
 

klaus

Expert
Licensed User
Longtime User
Versuch mal so was:
B4X:
Public Sub ReadData
    For Each s As String In ConnectedServices
        manager.ReadData2(s, "Software Revision")
    Next
End Sub
Anstatt Software Revision versuch auch die Anderen.
Speziell ?experimental.
Es währe interssant zu wissen was ? in ?experimental bedeutet.
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Das kommt dann

No matching characteristic found.
und es kommen keine Daten mehr zur Listen Anzeige

Oder sollen die ganzen Zahlen eingegeben werden die über
Software Revision stehen?
 

Knoppi

Active Member
Licensed User
Longtime User
Hi Wolli,

wenn du die daten entschlüsseln willst solltest du ein paar test werte generieren
zb zimmertemp.(ca 18°C) , körpertemp.(ca 37°C), heizungtemp.(ca 48°C) und
dann die ausgelesenen werte daraufhin vergleichen wo sich was geändert hat.
diese stellen dann in dezimal umwandeln und prüfen ob du etwa die gleichen temp werte hast.
aber achtung mache stellen können prüfziffern sein.

wie schon gesagt ich hab vor 2 Jahren ca 3 Tage gebraucht um meinen Tempfühler zu decodieren.
also GEDULD und AUSDAUER solltest du haben

ps: du solltest dich aber mit string zerlegung und umwandeln von zahlensystemen auskennen
 

klaus

Expert
Licensed User
Longtime User
Keine Ahnung.
Du musst versuchen etwas damit rumzuspielen.
Ich habe keine direkte Erfahrung in diesem Bereich.
Ich habe Erinnerungen als ich vor 20 - 30 Jaheren mit Messgeräten 'gespielt' hatte.
Mit RS232 und IEEE-488 Verbindungen.
Mein Vorteil, damals, war dass ich Bedienungsanleitungen hatte.
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Ja und für mich ist Bluetooth ein Neuland, naja irgendwie wird man es schon rausbekommen.
Ich habe den Händler ja wegen dem Protokol angeschrieben aber bis jetzt noch keine Antwort erhalten.
 

Knoppi

Active Member
Licensed User
Longtime User
wenn ich den thread richtig verfolgt habe
sollte der string aus post#7 alle daten beinhalten
0201060302F0FF1209543630356920534E3A3439333234383732000000000000000000000000000000000000000000000000000000000000000000000000
also ich denke das das auslesen der bluetooth daten funktioniert
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Wenn ich das Gerät mit der orginal App verbinde, blinkt es Orange und sobald es richtig verbunden ist dann blinkt es Grün.
Wenn ich es über die BLE App anspreche bleibt es immer Orange blinkend, so das ich vermute das die Daten überhaupt nicht gesendet werden.
 

Knoppi

Active Member
Licensed User
Longtime User
Ok dann kann es sein das dein messgerät eine empfagsbestätigung verlangt oder eine andere art von 'shake hands'
dann brauchst du die protokoll daten vom hersteller
 

pucki

Active Member
Licensed User
Ok dann kann es sein das dein messgerät eine empfagsbestätigung verlangt oder eine andere art von 'shake hands'
dann brauchst du die protokoll daten vom hersteller

Mit 1000 % Sicherheit braucht es das. Sonst könnte ja jeder kommen. Das BT-Protokoll ist ein Sicherheitsprotokoll. Deshalb muss man auch eine "Erst-Verbindung machen und fast immer bestätigen. Geräte die keine Daten-Eingabe-Möglichkeiten haben, brauchen den Verbindungsschlüssel der in der Anleitung steht (oft 0000). Die alternative Möglichkeit ist, das die App des Herstellers automatisch ein Schlüssel generneriert. Erst wenn BEIDE Geräte sich einig sind, das BEIDE Geräte berechtigt sind, Daten auszutauschen fangen Sie an ihren Job zu machen.

Ich denke das DANN das Gerät nur noch sendet und das andere (die App) empfängt. (BT-Protokoll-Daten mal ausgeschlossen)

Es kann also gut sein, das das Gerät nur die Seriennummer schickt und seine Kennung und sonst nix, bevor die Verbindung autorisiert ist. Ist so eine Verbindung autorisiert ist mit großer Wahrscheinlichkeit anzunehmen, das das Gerät laufend "Datensätze" schickt mit fortlaufender Nr. . Die App liest den Datensatz zeigt die Messwerte an, und berechnet vielleicht sogar Statistik.

Also ist zu klären ob deine APP autorisiert ist, Daten auszutauschen.

Wenn der Hersteller allerdings von seiner APP eine besondere Antwort erwartet sehen deine Chancen sehr mies aus.

Kleiner Hinweis am Rande. BT ist eine normale Serielle Datenübertragung. Hier kannst du dir mal ein grundsätzliche Überblick über den Aufbau des Protokoll ansehen. www.rvs.uni-bielefeld.de/lecture/bluetooth/bluetooth-joern.pdf ;)

Wenn die Verbindung per Gerät hergestellt ist, braucht das Gerät aber ein Anstoß das es anfängt Daten zu senden. Das macht man deshalb um Strom zu sparen. Stell bei dein Handy einfach mal BT + WLAN ab. Dein Akku hält bis zu 30 % länger. (mache ich immer).

Gruß

Pucki
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Ich habe gerade mit den Hersteller telefoniert und sollte nochmal eine Emailanfrage (an einer anderen Emailadresse) diesbezüglich machen.
Mal sehen ob ich jetzt Antwort erhalte.
Ich halte euch auf dem laufenden.
 
Top