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

Schlagwörter: 

  • Dieses Thema hat 57 Antworten und 5 Teilnehmer, und wurde zuletzt aktualisiert vor 1 Woche von fionnlagh.
Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 55)
  • Autor
    Beiträge
  • #3633
    careyer
    Teilnehmer

    Hallo zusammen,

    ich habe hier ein eigenes Home-Automation System auf Basis RaspberryPi/Node-RED laufen. Hierin habe ich auch ein Dashboard integriert, welches mir den aktuellen Akkustand aller im Haushalt befindlichen Geräte auf einen Blick anzeigt und mich bei Bedarf alarmiert, wenn es Zeit ist das ein oder andere Gerät mal wieder aufzuladen.

    Ich würde hier gerne auch meinen Scooter integrieren, sprich: Ich möchte in zyklischen Abständen Kontakt via Bluethooth zum Scooter aufnehmen und den Akkustand abfragen, um ihn anschließend an mein Dashboard zu melden.

    Hat jemand hier ggf. Erfahrung mit dem Datenformat welches über Bluetooth ausgetauscht wird?

    Ich würde gernen einen ESP32 oder dergleichen als Sensor in den Fahrradkeller packen, der dann 1-2x am Tag aufwacht, sich per Bluetooth mit dem Roller verbindet, den Akkustand abfragt um ihn dann anschließend per WLAN an die Home-Automation zentrale zu melden (z.B. per MQTT).

    So hätte man stets Gewissheit, ob man nochmal nachladen muss oder alles im grünen Bereich für die nächste Fahrt ist.
    Streng genommen könnte die Home-Automation-Zentrale den Scooter bei Unterschreiten eines bestimmten Schwellwerts auch automatisch nachladen lassen. Man steckt beim Abstellen einfach immer das Ladekabel an und die Zentrale entscheidet selbsttätig wann und wie lange Strom aufs Ladegerät geschalten wird 😉

    Über Hilfe/Feedback würde ich mich freuen.

     

    • Dieses Thema wurde geändert vor 3 Wochen, 6 Tage von careyer.
    • Dieses Thema wurde geändert vor 3 Wochen, 6 Tage von careyer.
    • Dieses Thema wurde geändert vor 3 Wochen, 6 Tage von careyer.
    #3637
    MPSv3
    Teilnehmer

    Ohne IOT Modifikationen wird das schwer. Soweit ich das hier gelesen habe, ist unsere Box jedoch closed und sehr speziell. Es gibt eine Lösung aus Polen, jedoch bin ich mir nicht sicher ob damit dein Usecase abgedeckt wird. Ich glaube nicht das du ohne weiteres den „Hack“ aus Polen um Funktionen erweitern kannst. Ohne Mod bist du ziemlich sicher auf die Funktionen angewiesen, die myTIER uns mit der App zur Verfügung stellt. Allerdings ist dies alles Halbwissen von mir und beruht nur auf eigenen Erfahrungen.

    #3639
    Micha
    Verwalter

    Das einfachere wäre sicher, den ESP vom Bordnetz des myTIERs zu speisen und die Spannung direkt am Akku auszulesen. Fürs iPhone und vermutlich auch für Android gibts ne App die heißt „LightBlue“ mit der man Bluetooth Services und Datenformat von Geräten auslesen kann.

    Vielleicht hilft das

    Grüße

    #3648
    fionnlagh
    Teilnehmer

    Man müsste die Tier-App, speziell den MyTier-Bereich genauer unter die Lupe nehmen. Wenn man durch Reverse Engineering rausfindet, wie man sich damit verbindet, ließe sich dies auslesen (und theoretisch auch n ESP32-basierter Schlüsselanhänger entwickeln zum Sperren + Entsperren entwickeln 😀 ).

    Die entsprechenden Befehle, die an den Controller per Bluetooth LE gesendet werden, sind ähnlich wie „AT“-Kommandos mit denen man z.b. Modems steuert. Diese beinhalten im übrigen auch als Parameter das „Bluetooth-Passwort“.

    Verbindung zwischen Handy und Scooter ist so wie ich das sehe verschlüsselt (Natürlich, sonst könnte man durch Sniffen kostenlos Scooter „ausleihen“).

    Das Bluetooth LE des Scooters wird aktiviert, sobald man die App startet. Verbindet sich in dieser Kürze ein anderes Gerät (über Bluetooth LE) mit dem Scooter, hängt die App übrigens fest ohne Fehlermeldung.

    Komme aber nicht weiter tatsächlich. Es fehlt, wie die Befehle an den Roller gesendet werden und wie das Bluetooth LE „gestartet“ wird und wohin diese gesendet werden. Im Bereich Reverse Engineering bin ich relativ neu.

    #3651
    careyer
    Teilnehmer

    Hi,

    danke erstmal an alle für die tollen Beiträge. Ja, irgendwie müsste man doch dahinter kommen. Ich denke fionnlagh, du bist schon auf dem richtigen Weg. Klar die Verbidnung zwischen Scooter und App ist verschlüsselt. Es würde mich aber schwer wundern, wenn die dort noch eine zusätzliche Layer-7 Verschlüsselung eingesetzt hätten. Ich denke das ganze wird auf  „Transportebene“ spricht nur mit dem BT-Kennwort verschlüsselt. Das Kennwort kennen wir ja, d.h. es sollte möglich sein mit einem ESP32 eine erfolgreiche Bluetooth Kopplung mit dem Scooter herzustellen. Wenns dumm läuft plappert der Scooter nach erfolgreichem Verbindungsaufbau über BT einfach drauf los und sendet erstmal seine ganzen Telemetriedaten zwecks Anzeige auf dem Handy (Sperrzustand, Akkustand, Reichweite, …) ohne dass die App das aktiv anfordern muss. Dann müsste man sich nur das Format angucken, ob das was lesbares ist (z.B. JSON String, XML oder dergleichen).

    Was die Steuerung anbelangt denke ich hast du Recht. das wird irgendwas AT-Command mäßiges sein (oder ebenfalls JSON). Da man BLE aber m.W. nicht ohne weiteres Sniffen kann müsste man wohl die App dekompilieren um an die passenden Kommandos ranzukommen.
    Ich dachte bisher, dass es ganz normales BT ist… aber du hattest jetzt BLE erwähnt. Kann ein ESP überhaupt BLE? BLE bin ich noch nicht wirklich fit drin.

    VG

     

    #3652
    fionnlagh
    Teilnehmer

    Jop ESP32 hat Bluetooth LE.

    Könnte man also wunderbar nutzen 🙂

     

    Und die App dekompilieren.. Den Hinweis mit den „AT-Kommandos“ habe ich tatsächlich in der dekompilierten App finden.  Kommando zum Sperren, Steuern des Lichts, Infos anfordern und Passwort ändern.

    Aber da es sich um ein Dekompilat handelt, ist das Lesen nicht sehr leicht.  Jadx oder Ghidra könnte man hierzu nutzen.

    #3670
    careyer
    Teilnehmer

    Hi fionnlagh,

    wow! Du kennst dich gut aus! Vielleicht könnte man hier zusammen daran arbeiten? Ich habe das .apk file mal hier durch geschleust: http://www.javadecompilers.com/apk … Das Ergebnis is ein ZIP mit decompiliertem Code. In „TIERScooterSharing_v3.7.1_apkpure.com_source_from_JADX\TIERScooterSharing_v3.7.1_apkpure.com_source_from_JADX\sources\com\tier\mytier“ finden sich hochinteressante Sachen und leserlicher Code! 😉

    Vielleicht können wir damit was anfangen?
    VG
    careyer

    • Diese Antwort wurde geändert vor 2 Wochen, 5 Tage von careyer.
    #3672
    careyer
    Teilnehmer

    Hier was zum Fahrzeugstatus:

    public VehicleStatus(boolean z, String str, String str2, boolean z2) {
    C11815l.m36450b(str, „batteryPercentage“);
    C11815l.m36450b(str2, „range“);
    this.unlocked = z;
    this.batteryPercentage = str;
    this.range = str2;
    this.isHeadLampTurnedOn = z2;
    }

    Und hier was zum Steuern?

    public final String getBatteryPercentage() {
    return this.batteryPercentage;
    }

    public final String getRange() {
    return this.range;
    }

    public final boolean getUnlocked() {
    return this.unlocked;
    }

    #3673
    MPSv3
    Teilnehmer

    Jungs ihr seid klasse. Weiter so! Vergesst bitte nicht die iOS User! Wenn man helfen kann ohne Programmierkenntnisse, lasst es wissen. Ich bin zum Beispiel Grafikdesigner und könne ein UI beisteuern oder so. Gute Arbeit bis hier hin.

    #3703
    careyer
    Teilnehmer

    Test

     

    #3704
    careyer
    Teilnehmer

    Ich bin leider kein Software Entwickler/Programmierer, aber die dekompilierte App gibt schon eine Menge Insights. So gibt es in den Sourcen die Unterverzeichnisse „com/tier“ und „com/tier/mytier/model“. Schaut man sich den Code an, so wird klar, dass die Kommunikation der App mit dem Scooter über enfache Strings erfolgt. Das Betrifft sowohl Status-/Telemetrie Nachrichten als auch Steuerkommandos. Zumindest die lokale Kommunikation mit der App (also im myTier Betrieb lokal über Bluetooth) scheint nicht kryptografisch gesichert zu sein. D.h. jemand mit etwas Softwareentwicklungs-/Programmierbackground kann hier sicher etwas Code zusammenklöppeln, der die offizielle App ablöst.

    #3705
    careyer
    Teilnehmer

    Wenn jemand etwas Webspace hat, dann könnte ich die dekompilierte Version der App dort mal hochladen, sodass wir vielleicht gemeinsam dran arbeiten könnten.

    Als mögliche Lösungen kommen zwei Varianten in Frage:
    – Eine einfache eigene App, die uns unabhängig von der viel gehassten und instabilen Tier-App macht
    – Eine Lösung den Scooter ohne Handy zu nutzen (z.B. über einen ESP32, der die Bluetooth-Kommunikation mit dem Scooter übernimmt).
    Den ESP könnte man z.B. in eine Art Schlüssel-Plip einbauen und den Scooter einfach über Kopfdruck (Ent-)sperren. Genau wie mit einem Autoschlüssel.

    Das ganze hat m.E. den Vorteil, dass man nicht in die Hardware- und Softare des Scooeters eingreifen muss. Man simuliert lediglich die Kommunikation mit der App über ein kleines externes Bluetooth Gerät.

    #3706
    MPSv3
    Teilnehmer

    Habe selber leider kein Public Webspace mehr. Wie wäre es mit einem Repository? Github wäre doch eine Möglichkeit. Alternativ GoogleDrive oder Dropbox?

    • Diese Antwort wurde geändert vor 2 Wochen, 2 Tage von MPSv3.
    #3724
    careyer
    Teilnehmer

    Irgendwie spinnt das Forum… das was ich schreiben möchte kann ich nicht schreiben… der Beitrag verschwindet einfach

    #3725
    careyer
    Teilnehmer

    Dann eben so:

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 55)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.