S01/Mo: Telemetriedaten mit Traccar verwalten

S01, S02, S03, Mó
Gerold
Beiträge: 513
Registriert: Fr 7. Feb 2020, 10:23
Roller: Silence S01
PLZ: 55*
Kontaktdaten:

S01/Mo: Telemetriedaten mit Traccar verwalten

Beitrag von Gerold »

Es gibt einige Open Source Anwendungen, mit denen Daten von GPS Trackern und anderen Telemetriemodulen gespeichert und verwaltet werden können. Eine davon ist Traccar https://www.traccar.org/, dessen Server ein ganze Reihe von Trackern unterstützt.

Traccar bietet eine ganze Reihe von Features, die es auch für die Nutzung mit unseren Rollern interessant macht. So könnnen zurückgelegte Fahrten auf einer Map visualisiert werden und es stehen verschiedene Reports zur Auswertung der Daten zur Verfügung. Einzelne Parameter könne in einem einfachen Diagramm angezeigt werden, so kann man z.B. der Geschwindigkeitsverlauf, der Battriestrom oder die Motortemperatur von einer Fahrt graphisch aufbereiten. Auch eigene Kommandos, so wie Benachrichtigungen beim Auftreten von Alarmen können über verschiedene Kanäle versendet werden. Darüber hinaus enthält Traccar einen Mqtt-Server, der z.B. die empfangenen Daten an eine Smarthome-Anwendung weiterleiten kann und nicht zuletzt eine Traccar-Manager App für das Smartphone.

Zu den unterstüzten Trackern gehören auch die im Silence/Seat eingebauten Module von Astra-Telematics. Leider werden von dem Traccar Astra-Server nur die Astra-Protokolle "K" und "X" unterstützt. Ich habe deshalb im "AstraProtocolDecoder" von Traccar das Protkoll "X" in das Protokoll "Z" umprogrammiert. Den geänderten Decoder hänge ich an den diesen Post an, damit kann Traccar auch mit unsere Roller genutzt werden.

Es gibt hier aber eine Einschränkung. Will man Traccar mit dem geänderten Dekoder verwenden, muss man die Anwendung selbst kompilieren. Dies ist aber in der Taccar Dokumentation nur für Linuxsysteme beschrieben. Man kann dafür auch ein Linuxsystem verwenden, das unter Windows auf einer VM läuft. Als Ergebnis erhält man eine "tracker-server.jar" Datei, die auch auch unter Windows einsetzbar ist.

Die Installation von Traccar sowie das Kompilieren der Anwendung (Build from Source) wird in der Traccar Dokumentation https://www.traccar.org/documentation/ beschrieben. Vor dem Kompilieren muss die Datei "AstraProtocolDecoder.java" durch die hier Angehängte ausgetauscht werden (,txt Endung vorher entfernen). Nach erfolgreicher Kompilierung findet man im Unterordner "/target" die Datei "tracker-server.jar". Diese Datei wird in das Traccar-Installationsverzeichnis hineinkopiert und der Server neu gestartet. Auch die Einrichtung und Bedienung der Anwendung ist in der Doku beschrieben.

Damit Traccar Daten von dem Astra Modul empfangen kann, muss die Konfiguration des Moduls geändert werden. Dies kann über die Serielle Schnittstelle des Moduls erfolgen. Dazu müssen folgende Kommandos ausgeführt werden:
"$IPAD1,<eigene IP/DynDNS-Adresse>"; "$PORT1,5103" und "$MODE,4".
Um alle Protkoll "Z" Module einzusehen, muss mit "$PROT,19,73215772799" die Protokollmaske angepasst werden.
Dateianhänge
AstraProtocolDecoder.java.txt
(16.3 KiB) 12-mal heruntergeladen

Benutzeravatar
error
Beiträge: 1376
Registriert: Di 20. Dez 2022, 19:37
Roller: NIU GT, Silence S01, Vectrix vx-1, Horwin CR6, Twizy
PLZ: 2
Kontaktdaten:

Re: S01/Mo: Telemetriedaten mit Traccar verwalten

Beitrag von error »

Gerold hat geschrieben:
Mo 11. Nov 2024, 13:38
Es gibt einige Open Source Anwendungen, mit denen Daten von GPS Trackern und anderen Telemetriemodulen gespeichert und verwaltet werden können. Eine davon ist Traccar https://www.traccar.org/, dessen Server ein ganze Reihe von Trackern unterstützt.
Was soll ich dazu sagen? You are my hero! Ich habe mich seit gestern abend ein paar Stunden kreuz und quer durch diese Traccar Geschichte gelesen.

Hammer Zeugs. Wusste überhaupt nicht, dass es sowas gibt.
Gerold hat geschrieben:
Mo 11. Nov 2024, 13:38
Einzelne Parameter könne in einem einfachen Diagramm angezeigt werden, so kann man z.B. der Geschwindigkeitsverlauf, der Battriestrom oder die Motortemperatur von einer Fahrt graphisch aufbereiten.
Eigentlich steht meine Silence durch den stetig wachsenden Fuhrpark auf der "zu verkaufen Liste". Deine Apps haben mich diese Entscheidung bereits überdenken lassen und Jetzt kommst du mit sowas um die Ecke? :shock:

Du leistest anscheinend nebenbei in deiner Freizeit, was ich mal irgendwann von einem Hersteller erwarten würde: die Anbindung der "hauseigenen closed Source Telemetrie" an offene Standards.

Hammer! Danke!

SpeedCore
Beiträge: 179
Registriert: Di 6. Dez 2022, 22:08
Roller: Silence S01
PLZ: 6020
Land: A
Kontaktdaten:

Re: S01/Mo: Telemetriedaten mit Traccar verwalten

Beitrag von SpeedCore »

Mega! Vielen Dank! :) Ich habe tatsächlich früher schonmal mit Traccar rumgespielt, damals hatte ich an einer Rallye durch Osteuropa teilgenommen und unser Team war auf unserem Blog live trackbar. Realisiert hatte ich das mit einem Tracker von arvento (gibt's glaub ich nicht mehr), der seine Position an einen Webservice abgeliefert hat. Dieser hat die Position dann in (nahezu) Echtzeit auf einer Karte in unserem Blog dargestellt. Long story short: Ich kannte Traccar, hatte aber keine Ahnung, dass unsere Astra-Module (fast) unterstützt werden :o

Ich habe heute auf meinem Bastel-Raspi mal einen Traccar Docker-Container erstellt, die tracker-server.jar mit dem angepassten Decoder von Gerold kompiliert und im Container ausgetauscht. Soweit läuft das Teil, morgen muss ich dann noch den $PORT1 in meinem Roller ändern, damit das Astra-Modul an den Traccar-Server und nicht wie bisher an den "Silence-Private-Server" berichtet.

Der "Silence-Private-Server" hat einen Bridge-Mode eingebaut, der die Daten - nachdem sie in eine Datenbank geschrieben und per MQTT publiziert wurden - an Silence weiterreicht, damit auch die Original-App noch funktioniert. Ich hätte gerne die Kombination Traccar und Original-App - gibt es eventuell eine Möglichkeit die Daten die Traccar vom Astra-Modul empfängt ebenfalls an Silence weiterzureichen?

Gerold
Beiträge: 513
Registriert: Fr 7. Feb 2020, 10:23
Roller: Silence S01
PLZ: 55*
Kontaktdaten:

Re: S01/Mo: Telemetriedaten mit Traccar verwalten

Beitrag von Gerold »

Das Weiterleiten der Daten ist kein Problem. Ich nutze neben Traccar noch OpenGTS und sende die Daten von Traccar weiter an OpenGTS. Das Problem ist hier, das Traccar und OpenGTS nur mit "$MODE,4" funktionieren, der Server von Silence aber "$MODE,6" verlangt. Man müsste also den Astra Dekoder von Traccar so erweitern, dass er auch mit der "$MODE,6" Einstellung umgehen kann. Das Coding hierzu könnte man u.U. dem "astra-procol-x-parser" von Astra-Telematics https://github.com/astra-telematics/ast ... l-x-parser entnehmen, der sowohl mit "$MODE,6" als auch "$MODE,4" versteht.

Wenn man Traccar vollständig einrichtet, wird die weitere Nutzung der Silence Infrastruktur eigentlich überflüssig. Traccar deckt alle Funktionen der Silence App ab und bietet noch zusätzlich Features wie z.B die Nutzung von mqtt. Dazu ist es auch noch kostenfrei. Ich werde deshalb nicht versuchen, dem Astra Dekoder von Traccar auch noch "$MODE,6" beizubringen. Ich habe im Moment auch noch andere Baustellen, wie z.B. eine Checksum-Überprüfung der empfangenen Daten und der fehlende Command-Dekoder.

SpeedCore
Beiträge: 179
Registriert: Di 6. Dez 2022, 22:08
Roller: Silence S01
PLZ: 6020
Land: A
Kontaktdaten:

Re: S01/Mo: Telemetriedaten mit Traccar verwalten

Beitrag von SpeedCore »

MODE,6 heißt ja nur "Login enabled" also "mit Authentifizierung". Bei MODE,4 ist keine Authentifizierung notwendig. In der Traccar-Config gibt es das Attribut "forward.header" bei dem es in der Beschreibung heißt "Additional HTTP header, can be used for authorization." Möglicherweise kann man damit ja die Authentifizierung bewerkstelligen. Ich muss mir das mal an einem grauen, veregneten Wintertag zu Gemüte führen :D

Im Prinzip stimmt es schon, dass damit die original App überflüssig wird aber leider funktioniert die "Traccar Manager" App bei mir (iOS 18.1) nicht und der Web-View ist nur im "großen" Browser wirklich benutzbar. Das "Look and Feel" (eher nur das Look) war bei der Silence App schon ganz okay.

Gerold
Beiträge: 513
Registriert: Fr 7. Feb 2020, 10:23
Roller: Silence S01
PLZ: 55*
Kontaktdaten:

Re: S01/Mo: Telemetriedaten mit Traccar verwalten

Beitrag von Gerold »

Das Astra Modul benutzt TCP und nicht HTTP, der "Additional HTTP Header" wird daher nicht funktionieren. Der Unterschied zwischen MODE,6 und MODE,4 ist folgender: Bei MODE,6 steckt die IMEI im Login Packet, dieses wird aber nur einmal beim Öffnen der Verbindung gesendet. Bei MODE,4 wird die IMEI jedesmal mit dem Packet-Header gesendet. Details findet man hier: https://github.com/traccar/traccar/issues/5342.

Es gibt noch ein kleines weiteres Problem. Werden die Daten vom Astara Modul nicht direkt an den Silence Server gesendet, kann die Silence App den Roller nur noch über BLE starten bzw. den Sitz öffnen. Über die Mobilfunkverbindung funktioniert das nicht mehr, da die App zwar die Befehle an de Silence Server sendet, dieser diese aber nicht an das Modul, sondern an den Traccar-Server weiterleitet. Hier müsste an also auch noch dafür sorgen, dass Traccar diese Befehle an das Modul sendet.

SpeedCore
Beiträge: 179
Registriert: Di 6. Dez 2022, 22:08
Roller: Silence S01
PLZ: 6020
Land: A
Kontaktdaten:

Re: S01/Mo: Telemetriedaten mit Traccar verwalten

Beitrag von SpeedCore »

Gerold hat geschrieben:
Sa 16. Nov 2024, 01:00
kann die Silence App den Roller nur noch über BLE starten bzw. den Sitz öffnen. Über die Mobilfunkverbindung funktioniert das nicht mehr, da die App zwar die Befehle an de Silence Server sendet, dieser diese aber nicht an das Modul, sondern an den Traccar-Server weiterleitet. Hier müsste an also auch noch dafür sorgen, dass Traccar diese Befehle an das Modul sendet.
Das dürfte ja jetzt auch schon nicht mehr funktionieren, weil mein Roller ja für die Silence-App momentan "offline" ist (weil dieser seine Daten an Traccar sendet). Deshalb wäre meine nächste Frage gewesen, ob man die $SEAT oder $TCOP oder $PWON Commands irgendwie von Traccar an das Modul senden kann..? Ich habe gesehen, dass es eine "Send Command" Funktion im Traccar gibt, habe diese aber noch nicht ausprobiert.

Gerold
Beiträge: 513
Registriert: Fr 7. Feb 2020, 10:23
Roller: Silence S01
PLZ: 55*
Kontaktdaten:

Re: S01/Mo: Telemetriedaten mit Traccar verwalten

Beitrag von Gerold »

Man kann in Traccar benutzerdefinierte Befehle abspeichern und diese an das Modul senden. Die Befehle müssen als Hex-Werte und nicht als ASCII-String abgelegt werden, also z.B. "2454434F50" statt "$TCOP" . Die Kommandos werden auch ausgeführt, beim Empfang der Rückantwort "$TCOP,OK" wird aber ein Fehler in AstraProtocol.java durch die Zeile "pipeline.addLast(new LengthFieldBasedFrameDecoder(1024, 1, 2, -3, 0));" ausgelöst. Verhindern man dies, in dem man die Zeile einfach aussternt, alternativ kann an dieser Stelle ein zusätzlicher AstraFrameDekoder eingebaut werden, welcher Reportdaten und Commands unterschiedlich behandelt.

SpeedCore
Beiträge: 179
Registriert: Di 6. Dez 2022, 22:08
Roller: Silence S01
PLZ: 6020
Land: A
Kontaktdaten:

Re: S01/Mo: Telemetriedaten mit Traccar verwalten

Beitrag von SpeedCore »

Ich habe gesehen, dass in der von dir zitierten Codezeile die maximale Größe der Antwort auf 1024 (Zeichen? Bytes?) gesetzt wird. Die tatsächliche Antwortgröße auf das $TCOP Command war ca. 22000 groß. Ich habe also in der Zeile die 1024 durch 32768 ersetzt, mit der modifizierten AstraProtocol.java neu kompiliert, die tracker-server.jar im Docker Container ausgetauscht und siehe da - der Fehler ist weg:

Code: Alles auswählen

2024-11-17 21:57:39  INFO: [T7987f926: astra > 5.35.xxx.xxx] $TCOP
2024-11-17 21:57:40  INFO: [T7987f926: astra < 5.35.xxx.xxx] $TCOP,OK\r\n
Um festzustellen, ob jetzt auch wirklich die Sitzbank geöffnet wurde müsste ich in die Tiefgarage gehen und das ist mir jetzt zu weit :lol:

Gerold
Beiträge: 513
Registriert: Fr 7. Feb 2020, 10:23
Roller: Silence S01
PLZ: 55*
Kontaktdaten:

Re: S01/Mo: Telemetriedaten mit Traccar verwalten

Beitrag von Gerold »

Die Antwortgröße hat aber nur 9 Byte und nicht 21571. Das Problem ist, das der LengthFieldBasedFrameDecoder hier Byte 1 und 2 der Antwort zur Größenberechnung heranzieht https://netty.io/4.0/api/io/netty/handl ... coder.html. Bei den Reportdaten ist das richtig, bei den Kommandos aber Quatsch. Bei $TCOP,OK\r\n wird so aus "TC" = 0x5443 = 21571 ein viel zu großer Wert geliefert. bei anderen Kommandos ist das ähnlich. Es wurde halt bei der Programmierung von AstraProtocol.java das Versenden von Kommandos nicht berücksichtigt.
Das das Kommando ausgeführt erfolgreich wurde, sieht man an der Antwort $TCOP,OK, bei einem Fehler würde $TCOP,ER geliefert werden.

Antworten

Zurück zu „Silence / SEAT“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste