[Modul] NMEA GPS

Anbei ein kleines neues Modul, welches Daten von GPS Empfängern (z.B. USB oder einem LTE HAT) auswerten und in ein paar Variablen in IP-Symcon schreibt.

Ihr findet dies aktuell als Beta unter NMEA GPS im Module Store.

Hier noch ein Bild :slight_smile:

paresy

Hallo Paresy,

vielen Dank für das Modul das ich in meinem „Wohnwagen-Projekt“ einsetze.
In unregelmäßigen Abständen wirft das Modul folgenden Fehler:

21.02.2022, 18:39:18 | FlowHandler          | Kann Daten nicht zur Instanz #54543 weiterleiten: 
Fatal error: Uncaught Exception: The line is corrupted. It not corresponding to GSV format in /var/lib/symcon/modules/.store/de.paresy.gps.nmea/libs/vendor/bulton-fr/nmea-parser/src/Frame.php:207
Stack trace:
#0 /var/lib/symcon/modules/.store/de.paresy.gps.nmea/libs/vendor/bulton-fr/nmea-parser/src/Parser.php(42): BultonFr\NMEA\Frame->readFrame()
#1 /var/lib/symcon/modules/.store/de.paresy.gps.nmea/NMEA GPS/module.php(78): BultonFr\NMEA\Parser->readLine('$GPGSV,3,2,11,1...')
#2 /-(3): NMEAGPS->ReceiveData('{"DataID":"{018...')
#3 {main}
  thrown in /var/lib/symcon/modules/.store/de.paresy.gps.nmea/libs/vendor/bulton-fr/nmea-parser/src/Frame.php on line 207

Vielleicht kann man das ja irgendwie abfangen?

Joachim

Ich habe das Modul von Paresy etwas umgebaut und um eine Webhook Möglichkeit erweitert um Geräte die an HTTPs Senden können über Connect einzubinden. Ich bekomme die „It not corresponding to GS? format“ Meldungen regelmäßiger.
Diese kommen soweit ich das nachverfolgt habe aus der genutzten Bibliothek. Ich bekomme Sie bei GSA Meldungen wenn diese nicht vollständig sind. Zum Beispiel weil ich noch keinen gültigen GPS Fix habe oder die Übertragung abgebrochen war. Debuggt werden müsste das in den einzelnen Frames der Library. Da bin ich aber noch nicht zu gekommen mich da einzuarbeiten und das ganze etwas robuster zu machen für IPS. Es scheint soweit ich das sehe kein Ursächliches Problem der Schnittstelle zu sein.

Die GPS Lib die ich verwende hat RegEx Prüfungen ob die Pakete ok sind. Die sind scheinbar sehr strikt und könnten definitiv gelockert werden bzw. Fehlerhafte Pakete einfach verworfen werden. Ich bräuchte Beispiele die diesen Fehler triggern - dann könnte ich mal schauen. Freue mich aber auch über einen PR der dies verbessert.

paresy

Hallo Paresy,

wie „fängt“ man die am Besten?

Joachim

Im Serial Port unter Debug. Dann die Zeitstempel von Fehler und dort der Meldungen vergleichen. Dann hoffentlich ein Muster finden was ihn stört.

paresy

Ich habe auch mal mit einer alten Siri II USB Maus herumgespielt. Leider kommt nur kauderwelsch an.
4.800 8 N 1 und bereits auch 9.600 getestet:

TXT: 13/08/2022, 23:15:31 |                  GPS | <NUL><NUL><NUL><NUL><NUL>
HEX: 13/08/2022, 23:15:31 |                  GPS | 00 00 00 00 00 
TXT: 13/08/2022, 23:15:31 |                  GPS | <NUL><US>R
HEX: 13/08/2022, 23:15:31 |                  GPS | 00 1F 52 
TXT: 13/08/2022, 23:15:31 |                  GPS | <SI>U<ACK>
HEX: 13/08/2022, 23:15:31 |                  GPS | 0F 55 06 
TXT: 13/08/2022, 23:15:31 |                  GPS | `<SUB><ENQ><NUL>
HEX: 13/08/2022, 23:15:31 |                  GPS | 60 1A 05 00 
TXT: 13/08/2022, 23:15:31 |                  GPS | <NUL>+�
HEX: 13/08/2022, 23:15:31 |                  GPS | 00 2B 8D 
TXT: 13/08/2022, 23:15:31 |                  GPS | <NUL><NUL><EM>
HEX: 13/08/2022, 23:15:31 |                  GPS | 00 00 19 
TXT: 13/08/2022, 23:15:31 |                  GPS | I<NUL><NUL>
HEX: 13/08/2022, 23:15:31 |                  GPS | 49 00 00 
TXT: 13/08/2022, 23:15:31 |                  GPS | <NUL><NUL><NUL><NUL>
HEX: 13/08/2022, 23:15:31 |                  GPS | 00 00 00 00 
TXT: 13/08/2022, 23:15:31 |                  GPS | <NUL><NUL><NUL><NUL><NUL>
HEX: 13/08/2022, 23:15:31 |                  GPS | 00 00 00 00 00 
TXT: 13/08/2022, 23:15:31 |                  GPS | <NUL><NUL>/�
HEX: 13/08/2022, 23:15:31 |                  GPS | 00 00 2F D0 
TXT: 13/08/2022, 23:15:31 |                  GPS | <NUL><NUL>'<DLE>
HEX: 13/08/2022, 23:15:31 |                  GPS | 00 00 27 10 
TXT: 13/08/2022, 23:15:31 |                  GPS | <NUL><NUL><NUL><NUL><NUL>
HEX: 13/08/2022, 23:15:31 |                  GPS | 00 00 00 00 00 

Hast du ein Datenblatt? Dort steht sowas drin. NMEA ist sehr leserlich. Das erkennst du sofort wenn es passt.

paresy

Das ist ne ziemlich alte Navilock BU-303 mit Sirf II Chip die auch NMEA kann.
Allerdings ist das Ding nun nicht mehr taufrisch und wer weiß was das für Probleme hat. Datenblatt habe ich nicht mehr gefunden.
In GSPSD funktionierte sie.

Hat jemand eine Idee/Tool, wie ich aus gegebenen Koordinaten je nach Bereich OHNE externe Tools (Idee im Umkreis der Wohnung auf lokale Karte als Bild) einblende und bei entfernten Koordinaten z.B. über offline Datenbanken etwas wie ‚Auto steht aktuell im Großraum Hamburg‘ ausgeben kann?

Hat es schon jemand hinbekommen, die GPS Daten von einem Teletonika Gerät (RUTX11) auszulesen und in die Variable zu schreiben, so dass ich dann mit diesem Modul weiterarbeiten kann?

Klar. Genauso nutze ich es mit meinem RUX11 :slight_smile:

Einfach das NMEA Forwarding nutzen und meinem NMEA Modul einen Server Socket statt dem Serial Port unterjubeln.

paresy

Sehr gut - jetzt habe ich aber einen kleinen Knoten im Kopf.

RUTX11 konfiguriere ich gem. deines Screenshots. Der Router steht jetzt in München. Wie kommuniziert dieser aber mit meinem IP-Symcon System in Mainz?

In IP-symcon habe ich das Modul installiert muss ja nun konfigurieren:

Habe einen Server Socket inkl. Port angelegt. Jetzt könnte ich ja per Portforwarding den Port öffnen, so dass der Router von außen über meine Fritzbox auf IPS zugreifen kann… Dann ergibt es alles wieder Sinn. Mich hat die localhost IP irritiert.

Die Frage ist nur am Rande - wie stelle ich einen externen Zugriff über Server Socket Port her? Wie muss ich die NMEA GPS Instanz konfigurieren?

Kann ich da als Hostname auch meinen ipmagic Link verwenden?

Nein. Der Connect Dienst ist nur für den Symcon Webserver verfügbar

paresy

Wie würdest du den Zugriff von außen auf den Server Socket konfigurieren? Portforwarding Fritz Box? Öffentlich?

VPN. Ansonsten hast du einen offenen Port ohne Authentifizierung.

paresy

erachtest du das als grobe Sicherheitslücke, wenn ich das so betreiben würde? Ich könnte natürlich den rutx11 dauerhaft per vpn verbinden, was ich aber nicht will.

Magst du das Modul so umbauen, dass ich auch über GPS_InsertPosition() o.ä. die Positionsdaten einkippen kann? Ggf. auch den RequireParent deaktivieren?

Würde das anhand des GitHub Moduls auch selbst umbauen, mir fehlt aber weiterhin alles um Git herum.

Nachtrag: ja, ich könnte aus einem anderen Script und einem Client Socket auch in den Server Socket Daten kippen… Aber das wäre ziemlich umständlich, fehleranfällig und unübersichtlich.