Hallo, Ich habe eine Android App, die meinen elektrischen Bootsmotor kontrolliert. Damit kann ich das Boot auf Autopilot fahren lassen, zB indem ich eine Route per Google-Maps overlay zeichne, also direkt in der App. Blöd nur, dass das keine Seekarte ist und man im Zweifel Wegpunkte irgendwo und blaue setzt. Deshalb würde ich gern GPX Dateien in die App "laden". Im Prinzip werden die Routen die man in der App zeichnet irgendwie gespeichert. Ich weiß nur nicht wie. Ich vermute Mal irgendeine Datenbank. Könnte mir jemand ein paar Tipps geben, wie man versuchen würde, sich da heranzutasten, diese Datenbank zu bearbeiten?
Hallo! Da würde ich einfach den Programmierer der App fragen. Ändern kannst Du das aber m. W. nur wenn es XML-Dateien sind, meist aber nur mit Adminrechten (dazu muss das Smartphone gerootet werden). Und ohne XML-Kenntnisse wirst Du es schwer haben. Gruß, René
:
Bearbeitet durch User
Bei einem Boot sollte man die Wegpunkte schon ins Blaue setzen. Das ist das Wasser. Grün wäre falsch.
PittyJ schrieb: > Bei einem Boot sollte man die Wegpunkte schon ins Blaue setzen. Das ist > das Wasser. Grün wäre falsch. Der Punkt ist, dass es bei einer Seekarte auf dem Wasser noch etwas mehr gibt als nur "das Blaue". Alligator schrieb: > Könnte mir jemand ein paar Tipps geben, wie man versuchen würde, sich da > heranzutasten, diese Datenbank zu bearbeiten? Du müsstest halt mehr über die App selbst herausfinden. Oder du schneidest die Kommunikation zwischen der App und der Steuerung mit und versuchst, das Protokoll nachzubilden. Es kommt letztendlich auch darauf an, ob hier auf Standards gesetzt oder irgendwas durchweg proprietäres verwendet wird.
Alligator schrieb: > Im Prinzip werden die Routen die man in der App zeichnet irgendwie > gespeichert. Ich weiß nur nicht wie. Ich vermute Mal irgendeine > Datenbank. > Könnte mir jemand ein paar Tipps geben, wie man versuchen würde, sich da > heranzutasten, diese Datenbank zu bearbeiten? Ich würde als erstes einfach mal schauen, was die App so an Daten speichert. Unter Android hat glaube ich jede App normalerweise ich ein eigenes Verzeichnis, in dem die Daten der App abgelegt werden. Daher würde ich einfach als erstes mal untersuchen, was da so für Dateien liegen. Die Standard-Datenbank unter Android ist glaube ich sqlite. Von daher findest Du im Daten-Verzeichnis der App möglicherweise sogar irgendeine sqlite-Datenbank-Datei, die Du vglw. einfach bearbeiten kannst. Ansonsten hättest Du zumindest theoretisch auch die Möglichkeit, den Datenverkehr zwischen Deinem Smartphone und dem Motor mitzuschneiden, das Protokoll zu analysieren und Deine eigene App zu schreiben. Der Datenverkehr wird ja sicherlich per Bluetooth geschehen, dann kann man ihn über die Android-"Entwickleroptionen" bequem mitschneiden und in Wireshark analysieren.
Was soll denn das Rumgeeiere? Du möchtest Hilfe, dann liefere wenigstens ein paar Fakten, wie z.B. den Namen der App. Wenn die App wirklich so beschränkt ist (oder hast du gar kein richtiges Boot, sondern nur ein Fernsteuerspielzeug oder Bait-Boot?), dann analysiere lieber, wie die Daten an den "Autopiloten" gesendet werden und implementiere das neu. Gibt ja genügend gute Software rund um OpenCPN und Avnav für echte Boote und rund um Ardupilot für Ferngesteuertes, welche man ggf. nutzen könnte.
Es handelt sich um die App "Helmsman" von Haswing, einem chinesischen Hersteller. Die App verbindet sich mit der Verbedienung des Motors via Bluetooth und diese verbindet sich wiederum mit dem Motor. Lädt man eine Karte, werden die einzelnen Wegpunkte als GPS Datenpunkte an den Motor gesendet. Im Prinzip ist der Motor dann also autonom, fährt bis zum letzten und hält die Position. Ich will aber gar nicht in die Kommunikation des Motors eingreifen, sondern nur der App eine anderweitig erstellte Karte unterschieben. Anbei ist ein Screenshot des Verzeichnisses der App, was da an Dateien vorhanden ist.
Naja, mit den Dateinamen kommt man kein Stück weiter. Da sollte man mal reinschauen. Und Matlab-Code wird das bestimmt nicht sein. Also schau doch mal in die Dateien rein, ob da was nettes drinnen steht. Wenns kein ASCII ist, dann kommt man eh nicht weiter. Aber vielleicht ist da ja irgendwo eine Textliste oder ähnliches. Wenn SQLITE ist, dann kann man manchmal die Datenbank auch selber fragen, welche Tabellen und Attribute vorhanden sind. SQLITE ist allesdings nicht ASCII, doch ein more auf der Kommandozeile zeigt ähnliche Steuerbytes an, so dass man darauf schliessen kann. Und dann ist programmieren angesagt. Wobei SQLITE in C recht einfach zu bedienen ist.
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.