myTIER Forum Foren App / Steuergerät / Controller IoT Akkustand via Bluetooth auslesen

Schlagwörter: 

Ansicht von 15 Beiträgen – 16 bis 30 (von insgesamt 58)
  • Autor
    Beiträge
  • #3727
    MPSv3
    Teilnehmer

    Ja das Forum hier spinnt total und wird auch nicht mehr wirklich administriert. Du hattest oben ja schon ein kleines Tutorial gepostet so, dass ich mir den Code gestern schon näher angeguckt hab.

    Das ganze ist relativ gut überschaubar jedoch ohne Programmierkenntnisse kaum reproduzierbar was die Funktionen genau callen. Das mit den Strings ist soweit korrekt wie ich das einschätzen kann. Jedoch erwartet der Roller sicherlich mehr als ein „return this.unlocked“ mit gesicherter BLE Verbindung. Das wäre schon fast zu einfach.

    Meine Programmierkenntnisse reichen definitiv nicht aus um ein komplettes Bild zu erlangen. Wäre echt super wenn sich da noch jemand anschließt, der sich mit Programmieren und RE auskennt.

    #3728
    pilpop
    Teilnehmer

    Wisst ihr wo das bluetooth im scooter sitzt? In der lot bob oder unterhalb des displays?

    #3729
    fionnlagh
    Teilnehmer

    Habe mit dem ESP32 mal versucht, eine Verbindung aufzubauen (Standard AT-Firmware):

    at+bleinit=0
    at+bleinit=1
    at+bleconn=0,”B8:xx:xx:xx:xx:xx” (Verbindung zum Scooter aufbauen, kein Pairing)
    at+blegattcprimsrv=0 (Primäre Services auslesen)
    [2020-05-17_10:15:47]+BLEGATTCPRIMSRV:0,1,0×1801,1
    [2020-05-17_10:15:47]+BLEGATTCPRIMSRV:0,2,0×1800,1
    [2020-05-17_10:15:47]+BLEGATTCPRIMSRV:0,3,0x2C00,1
    AT+BLEGATTCINCLSRV=0,1
    nix.
    AT+BLEGATTCCHAR=0,1 (Charakteristika anzeigen)
    [2020-05-17_10:17:49]+BLEGATTCCHAR:”char”,0,1,1,0x2A05,0x20
    [2020-05-17_10:17:49]+BLEGATTCCHAR:”desc”,0,1,1,1,0×2902
    AT+BLEGATTCCHAR=0,2
    [2020-05-17_10:18:11]+BLEGATTCCHAR:”char”,0,2,1,0x2A00,0x4e
    [2020-05-17_10:18:11]+BLEGATTCCHAR:”char”,0,2,2,0x2A01,0x4e
    [2020-05-17_10:18:11]+BLEGATTCCHAR:”char”,0,2,3,0x2A04,0x02
    AT+BLEGATTCCHAR=0,3
    [2020-05-17_10:18:22]+BLEGATTCCHAR:”char”,0,3,1,0x2C01,0x18
    [2020-05-17_10:18:22]+BLEGATTCCHAR:”desc”,0,3,1,1,0×2902
    [2020-05-17_10:18:22]+BLEGATTCCHAR:”char”,0,3,2,0x2C02,0x18
    [2020-05-17_10:18:22]+BLEGATTCCHAR:”desc”,0,3,2,1,0×2902
    [2020-05-17_10:18:22]+BLEGATTCCHAR:”char”,0,3,3,0x2C03,0x18
    [2020-05-17_10:18:22]+BLEGATTCCHAR:”desc”,0,3,3,1,0×2902
    [2020-05-17_10:18:22]+BLEGATTCCHAR:”char”,0,3,4,0x2C04,0x18
    [2020-05-17_10:18:22]+BLEGATTCCHAR:”desc”,0,3,4,1,0×2902
    [2020-05-17_10:18:22]+BLEGATTCCHAR:”char”,0,3,5,0x2C10,0x18
    [2020-05-17_10:18:22]+BLEGATTCCHAR:”desc”,0,3,5,1,0×2902

     

    Nun ist rauszufinden, mit welchen Parametern (Verschlüsselung etc) man die Kopplung durchführt und an welchen dieser “Ports” man die Befehle senden muss bzw man Feedback bekommt 🙂

     

    Das Bluetooth dürfte in der IOT Box sitzen.

    #3732
    careyer
    Teilnehmer

    Das Bluetooth stitzt in der IoT Box und zwar oberhalb der GPS Antenne.

    Ich vermute der myTier Bereich (dessen Code Anteil ja wirklich sehr überschaubar ist), ist in der Tat ziemlich einfach gestrickt. Würde mich zumindest wundern, wenn man für eine Hand voll Scooter die man seitens TIER quasi “fachmännisch entsorgt” hat, viel Arbeit und Entwicklungaufwand investiert hätte.


    @fionnlagh
    : Du schreibst du hast versucht dich mit einem ESP32 via BLE zu verbinden und suchst nur noch nach dem passenden Parametern und der Verschlüsselung. Ich gehe davon aus du hast beim BLE-Connect das Scooter-Passwort mitgegeben? Wenn’s dumm läuft ist das die einzige Sicherheit. Gut Baudrate usw.. muss man ml verschiedenen Varianten probieren. Aber Code-seitig sieht es so aus, als ob du einfach Befehle via String an den Scooter senden kannst, wenn du dich erfolgreich via BLE connected hast.

    #3733
    careyer
    Teilnehmer

    Wenn ich das richtig sehen und hiernach interpretiere (https://randomnerdtutorials.com/esp32-bluetooth-low-energy-ble-arduino-ide/), dann haben wir hier:

    1 Profil
    – Service 1
    — Characteristic 1.1 + Description
    Service 2
    — Characteristic 2.1
    — Characteristic 2.2
    — Characteristic 2.3
    – Service 3
    — Characteristic 3.1 + Description
    — Characteristic 3.2 + Description
    — Characteristic 3.3 + Description
    — Characteristic 3.4 + Description
    — Characteristic 3.5 + Description

    Kannst du den ESP32 Sketch teilen, den du verwendet hast?

    • Diese Antwort wurde geändert vor 4 Jahren, 7 Monaten von careyer.
    • Diese Antwort wurde geändert vor 4 Jahren, 7 Monaten von careyer.
    #3737
    careyer
    Teilnehmer

    #3738
    fionnlagh
    Teilnehmer

    @careyer: Habe keinen Sketch an sich genommen, es war die Standard-Firmware, die auf einem ESP32 drauf ist. Diese kann man mit AT-Befehlen steuern: https://www.espressif.com/en/support/download/at

     

    #3745
    fionnlagh
    Teilnehmer

    So, ich habe eine etwas andere Herangehensweise versucht:

    2 PCs, 2 Bluetooth Dongles und die Software “btlejuice”. Ich habe mich also zwischen den E-Scooter und meinem Handy geschaltet.

    Folgendes habe ich rausgefunden:

     

    1. Handy verbindet sich per Bluetooth LE (mit einer zufälligen MAC) mit dem Scooter, offenbar ohne Sicherheit bzw Pairing 😉

    2. Sobald die beiden verbunden sind, wird an das Charakteristika 0x2c10 ein AT-Befehl gesendet, der den Akkustand etc.. ausliest. Dies sieht so aus: AT+BKINF=(Bluetooth Passwort),0$\r\n. Geantwortet wird via Notification auf dem gleichen Kanal mit “+ACK:BKINF,1,0.0,0.00,1634.4,0,57,0$\r\n” . In diesem Fall hat mein Scooter ein Batteriestand von 57%. Was die anderen Werte sind, weiß ich nicht (Vielleicht Geschwindigkeit? 🙂 )

    3. Sperren und Entsperren des Scooters: Er sendet an 0x2c10 den Befehl AT+BKSCT=(Bluetooth Passwort),0$\r\n (bzw 1), die Antwort: “+ACK:BKSCT,0$\r\n”

     

    Ich denke, damit lässt sich arbeiten 😉

    #3746
    fionnlagh
    Teilnehmer

    Hab weiter getestet..

    Die Ausgabe des Befehls AT+BKINF gibt folgendes in der Reihenfolge zurück:

    +ACK:BKINF,0,0.0,0.00,1634.4,7,57,1$ oder +ACK:BKINF,0,21.3,0.00,1634.4,9,57,1$

    1. Ist scheinbar immer 0
    2. Aktuelle Geschwindigkeit, wie sie auf dem Scooter Display angezeigt wird (KM/h. Hatte meinen aufgebockt zum testen)
    3. (Vermutlich) Gefahrene km seit Entsperren. Beginnt nach Entsperren bei 0, zählt dann beim Beschleunigen hoch.
    4. (Vermutlich) Gefahrene Kilometer seit Inbetriebnahme? Zählt wie der vorherige Wert auch hoch, setzt sich beim Sperren nicht zurück, ist bei meinem Scooter auf (eben diesem) Wert
    5. Der Wert zählt irgendwie +1, sobald das Rad sich dreht und der Befehl AT+BKINF ausgeführt wird. Zweck unbekannt, vermutlich Startgeschwindigkeitskontrolle?
    6. Akkukapatizät in %
    7. 0 wenn Wegfahrsperre aktiv (Gesperrt), 1 wenn nicht(Entsperrt)
    #3747
    MPSv3
    Teilnehmer

    Gute Arbeit bis hier hin! Bin gespannt!

    #3748
    fionnlagh
    Teilnehmer

    Irgendwie kann ich nicht editieren…

    Zum obigen Beitrag folgende Ergänzungen:

    Parameter 1 ist der Status der Wegfahrsperre (1 = ist an, 0 = ist aus)

    Parameter 7 ist Aktivierungsstatus (0 = ist gesperrt Display ist aus, 1= ist entsperrt und Display zeigt was an)

    #3753
    careyer
    Teilnehmer

    @fionnlagh : Mega! Du bist der Mann!!! … Das sind sehr gute Neuigkeiten! Ich lag mit meiner Vermutung also offenbar richtig, dass man sich seitens TIER nicht sehr viel Mühe gegeben hat die Kommunikation über Bluetooth extra abzusichern. Ich denke damit sind wir auf einem super weg uns von dieser verflixten App unabhängig zu machen. Tolle Arbeit!!!! 🙂 #highFive

    P.S: Mega! Ich sehe gerade du hast es sogar hinbekommen den Gesamtkilometerstand auszulesen! Cool

    • Diese Antwort wurde geändert vor 4 Jahren, 7 Monaten von careyer.
    #3756
    careyer
    Teilnehmer

    Hmm… ich frage mich, ob man das auch mit der App “nRF Connect” (iOS + Android) machen kann. Die App erlaubt es einem zum BLE des Scooters zu verbinden und die einzelnen Characteristika abzufragen bzw. Commandos an diese zu senden…. ich hab das mal probiert, aber leider ohne Erfolg. Vielleicht hab ich den String nicht korrekt formatiert oder den falschen Datentypen ausgewählt (UTF-8)? Das wäre auf jeden Fall schon mal ein guter Anfang, den jeder mal ausprobieren könnte.

    #3760
    careyer
    Teilnehmer

    Also ich hab jetzt mal mit “nRF Connect” und mit “LightBlue” probiert… beides sind Universal BLE Apps für Android und iOS. Man kann mit beiden Daten an die jeweiligen Characteristka schicken, allerdings will es bei mir auf’s verrecken nicht klappen. Vieleicht formatiere ich den String irgendwie falsch? Ich habs versucht mit “AT+BKINF=(Bluetooth Passwort),0$\r\n.” wobei ich die Klammern um das Kennwort auch mal weggelassen habe und auch den “.” am Ende mal mitgeben habe und mal weggelassen habe. Aber irgedwie kommt vom Scooter nichts zurück. Was mache ich da wohl falsch?

    #3762
    fionnlagh
    Teilnehmer

    tipp, mit \r\n meine ich Steuerzeichen oder ein klassisches “Enter”

    Ich hatte irgendwie mit nRF Connect es auch mal probiert (Den ganzen Befehl hexadezimal eingegeben).

     

    Was mir beim Schnüffeln auch auffiel, dass die Befehle in 2 Schritten gesendet werden:

    1. AT+BKINF=btpasswort,

    2. 0$/r/n

    Vermutung liegt nahe, dass das Bluetooth LE Interface nur 20 Bytes auf einmal empfangen kann.

     

    Habe noch was weiteres versucht. Ich erinnere mich an Höllenhund, der die IoT Box ja ausgelesen hat. Sowas könnte ich auch, jedoch sind mir die Spannungen, das Pinout des Anschlusses und die Baudrate unbekannt. Wäre lustig, so könnte man noch weitere Befehle probieren. Ich bin durchaus im Besitz zweier CP2102 UART Wandler 🙂 🙂 .. In der “Gebrauchsanweisung” der IoT-Box (die man bei FCC bekommt) steht z.b. n AT-Befehl, der NFC aktivieren soll… Wäre nice.

Ansicht von 15 Beiträgen – 16 bis 30 (von insgesamt 58)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.