GPS über Teltonika Router

Hey zusammen, Anscheind bin ich zu blöd das zu finden oder nicht die richtigen Threads im Kopf zu verknüpfen?

Ich würde gerne die GPS daten von meinem RUT955 im VanPi nutzen.

Ich habe GPSD schon installiert und die Host Adresse vom Router eigegeben.
NVMe forwording ist an und auf die Ip des Routers eingestellt.

Aber leider bekomme ich das irgendwie noch nicht hin.

Hat das einer schon hinbekommen?

GPSD brauchst du dabei nicht.
und das mit dem HTTP funktioniert auch irgendwie nicht.
die einzioge möglichkeit die du hast ist über Modbus. den Cilent einrichten den Server einrichten, Data zu Server einrichten.
ich hatte das schon mal laufen, und dann habe ich dummerweise die Fiermware erneuert.

Das sollte dir helfen.
Gruß Arno
Edit
du musst nur aufpassen das ist nicht wie hier beschrieben


Datentyp iist 32bit float 3412 (big endian ??? oder sowas :wink: )
Irgendwo in einer der vielen Seiten ist das beschrieben

So übertrage ich meine GPS-Daten von einem RUTX50 zu node-red (auf Venus GX):



1 Like

@ak68
Kannst du denn Flow mal exportieren und reinstellen??
Ich hab das eben nochmal mit MQTT versucht, aber irgendwie funktioniert das nach dem Firmware Update nicht mehr, und mit Modbus kahm nur Schrott rüber. Beim rut955 ist das übrigens Register Adresse 144 und 146
Gruß Arno

Bitte schön:
flows.json (9.4 KB)

Welches Firmware-Update meinst Du (VanPI oder Venus 3.40 ?)
DAS hat auch bei mit zu komischen Fehlfunktionen der Victron-Nodes geführt, so dass ich wieder zur Version 3.33. gegangen nin

1 Like

Das Update des Telkonika Routers.
ich hab den vor 2 Monaten gekauft, da war eine Version drauf 6.???
Jetzt bin ich auf 7.6.13 das war das 4. Update in kurzer Zeit.
und es funktioniert nichts mehr wie vorher :frowning:
Venus hab ich nicht.
Gruß
Arno

Danke funktioniert
der RUT 955 hat zu Node-Red Modbus-Registeradresse -1
In der Liste habe ich Adresse 144 und 146, in Node Red habe ich wie du 143 und 145 angeben müssen.
Wenn du anstatt global.set “GV_lat”, und GV_lon, wie Pekaway “latitude” und “longitude” angibst. dann kannst du das GPS auch in der App abfragen.
Gruß Arno

1 Like

Man kann sich zu dem Teltonika Routern auch per SSH verbinden.
Man hinterlegt die ssh keys und kann dann über eine exec Node die Verbindung aufbauen und alle möglichen Daten des Routers abfragen.
Das war der Lösungsansatz den ich mal verfolgt (und umgesetzt) hatte.

1 Like

Hi zusammen vielen Dank für die zahlreichen Antworte.

Ich habe es mit dem MODBus probiert leider lässt sich die Pallette aber bei mir nicht Installieren

Ich hab aktuell die Node REd Version 3.0.2 liegt es daran?

Hast du dazu vielleicht eine kleine Anleitung?

Eigentlich müsstest du dir nur die Palette “node-red-contrib-modbus” installieren,
dann sollte das funktionieren. die Palette habe ich schon seid 2 Jahren drauf, und installiere sie nach jedem Update neu, und ich hatte noch nie Probleme mit der Instalation.
Ich hab auch die Version 3.0.2, das ist ja dieVersion die mitgeliefert wird.

Ist schon etwas her…hat das jemand zum laufen bekommen? Würde gerne die GPS Infos meines Rutx11 zum Van Pi überliefern aber keine Ahnung wie.

Moin Johannes
wenn du das so machst wie hier diskutiert wurde, solte das funktionieren.
wenn der Rutx11 das gleiche Menü hat. Ich gehe aber davon aus, das sich die Software nicht deutlich unterscheidet, basiert alles auf OpenWRT.
Gruß
Arno

Frohes Fest,

ich habe das mit ein bisschen rumprobieren ohne modbus hinbekommen. Kurz zusammengefasst mit NMEA forwarding im Teltonika RUTX50 und im VanPI nur mit NodeRed und den Paletten die es eh schon gab, TCP in und NMEA.

Lang bzw. komplette Anleitung:

Im Router habe ich unter Services → GPS → NMEA forwarding aktiviert.


Bei den NMEA sentences habe ich lediglich GPGGA aktiviert:

Dann habe ich in NodeRed eine tcp in Node genutzt und auf Listen 8500 gestellt. Der Port war der Default beim Teltonika, geht aber auch jeder andere. 8500 könnte mit der 2nd Node Red Instance kollidieren, sofern man die aktiviert hat.
Dann hab ich mir aus dem Connections Flow einfach die Filter GPGGA Funktion geklaut und die beiden Nodes die danach kommen, NMEA und Set Variables.

[{"id":"91d071a3482c2afc","type":"group","z":"1e6ef8f9be1549aa","name":"GPS","style":{"label":true},"nodes":["bef94a48cc8ac545","c6c775612405a49b","6dcaf91a393607aa","21665260d560f605"],"x":54,"y":119,"w":752,"h":82},{"id":"bef94a48cc8ac545","type":"tcp in","z":"1e6ef8f9be1549aa","g":"91d071a3482c2afc","name":"","server":"server","host":"","port":"8500","datamode":"stream","datatype":"utf8","newline":"\\n","topic":"","trim":false,"base64":false,"tls":"","x":140,"y":160,"wires":[["21665260d560f605"]]},{"id":"c6c775612405a49b","type":"nmea","z":"1e6ef8f9be1549aa","g":"91d071a3482c2afc","name":"","property":"payload","outputProperty":"payload","x":530,"y":160,"wires":[["6dcaf91a393607aa"]]},{"id":"6dcaf91a393607aa","type":"function","z":"1e6ef8f9be1549aa","g":"91d071a3482c2afc","name":"set variables","func":"if (msg.payload.hasOwnProperty(\"sentence\")) {\n    flow.set(\"usb_gps\", true)\n}\nelse {\n    flow.set(\"usb_gps\", false)\n}\nif (msg.payload.hasOwnProperty(\"sentence\") && msg.payload.lat != \"\") {\n    global.set(\"latitude\", msg.payload.lat);\n    global.set(\"longitude\", msg.payload.lon);\n    global.set(\"gps_updated\", new Date()); // date needed to show when the last valid gps data has arrived (in smartphone app)\n    return msg\n}\n","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":710,"y":160,"wires":[[]]},{"id":"21665260d560f605","type":"function","z":"1e6ef8f9be1549aa","g":"91d071a3482c2afc","name":"filter&validate gpgga","func":"function isGgaSentenceValid(ggaSentence) {\n    // Check if the sentence starts with '$' and ends with a valid checksum\n    if (ggaSentence.startsWith('$')) {\n        const sentenceParts = ggaSentence.split('*');\n\n        // Ensure there are two parts (NMEA sentence and checksum)\n        if (sentenceParts.length === 2) {\n            const nmeaSentence = sentenceParts[0].substring(1); // Exclude the leading '$'\n            const checksum = sentenceParts[1].trim();\n\n            // Calculate the checksum and compare with the provided checksum\n            const calculatedChecksum = calculateChecksum(nmeaSentence);\n            return calculatedChecksum === checksum;\n        }\n    }\n\n    return false;\n}\n\nfunction calculateChecksum(sentence) {\n    let checksum = 0;\n\n    // XOR each character between '$' and '*'\n    for (let i = 0; i < sentence.length; i++) {\n        if (sentence[i] === '*') {\n            break;\n        }\n        checksum ^= sentence.charCodeAt(i);\n    }\n\n    // Ensure the checksum is two characters long\n    return checksum.toString(16).toUpperCase().padStart(2, '0');\n}\n\nif (msg.payload.includes(\"$GPGGA\")) {\n    // Example GGA sentence\n    msg.payload = msg.payload.trim()\n    const ggaSentence = msg.payload\n\n    // Check if the GGA sentence is valid\n    const isValid = isGgaSentenceValid(ggaSentence);\n\n    if (isValid) {\n        return msg;\n    } else {\n        return null\n    }\n}\n","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":340,"y":160,"wires":[["c6c775612405a49b"]]}]

Funktioniert. Im Webinterface vom VanPi sehe ich zwar keine Karte (cannot get /ui/map), aber in der App gehts und im WebIF sehe ich ich auch die Latitude und Longitude. Das ganze ist mit einer frisch installierten 2.0.4 getestet. Aut dem RUTX50 läuft RUTX_R_00.07.11.3.

VG Maurice

5 Likes

@moe.camp
ich habe es bei meinen RUT955 so eingestell und funktioniert :slight_smile:
Firmware [RUT9_R_00.07.06.16] bei mir läuft noch 2.0.3.
Alle Wege führen nach Rom auch dieser :slight_smile:
Gruß Arno

2 Likes

@moe.camp richtig gut! Danke für deine Anleitung!

Hat auf Anhieb perfekt funktioniert, auch in der WebGUI. Habe einen RUTC50 im Einsatz.

Danke Dir!
Grüße Kai

geiler shit …
habe mir einen (gebrauchten) RUTX50 als Ersatz für meine stromfressende Fritte besorgt und muss sagen, wenn ich gewusst hätte, wieviel besser und cooler ein Router sein kann, hätte ich das schon viel eher gemacht.

Danke an die Tüftler hier, ich habe mit diesen 2 kleinen Einstellungen die GPS Map in meinen VanPi integriert.

Vielleicht lässt sich das ja in einer zukünftigen Version als alternative zu der USB-GPS-Mouse gleich mit einbauen ?

P.S.
liesse sich da auch noch die Höhe über nN mit einbauen ?
Die Werte kommen ja scheinbar bereits an, ich habe nur keinen Plan, wie ich die extrahiere

Ich habe gerade diese super Anleitung gefunden und in meinem RUT956 alle Einstellungen hinterlegt.

Das NMEA forwarding scheint offensichtlich zu funktionieren, da im Webinterface vom Router die “Forwarded sentences” gezählt werden und im UI von NodeRed steht beim TCP listen Block auch 1 connection.

Leider wird aber weder im WebUI von VanPi, noch in der App die Karte und auch nicht Lat/Long aktualisiert.

Was mache ich falsch? Hat Jemand eine Idee?

Viele Grüße
Philipp

PS: Im Menü vom Router kann ich auch sehen, dass eine GPS Verbindung vorhanden und korrekt ist.

Hast du den Flow genommen??


Dann häng mal ein paar debug nodes hinter die einzelnen Nodes und schau mal ob da überhaupt was rauskommt.
Ist sonst ein Ratespiel wo der Fehler liegen könnte

Jetzt läuft es!
Ich habe den Flow nochmal ordentlich mit dem Code importiert. Vorher hatte ich den nur per drag and drop reingezogen.

Super! Danke :slight_smile: