Gateway Traffic loggen bzw. auslesen

Hallo Zusammen,

bei TTN Network kann man ja über „Console -> Gateway -> Traffic“ sehen, welche Devices das Gateway connecten und Daten abliefern. Ich würde gern die Device-Adressen und die Häufigkeit loggen um die Auslastung des Gateways abzuschätzen und auch einen Überblick zu bekommen, wieviele neue Devices zu dazu kommen und wie viele verschwinden usw. Leider liefert bieten das CLI-Tools als auch die API keinen Zugriff auf diesen Gesamttraffic am Gateway wie er über die Console zu sehen ist.

Hat jemand eine Idee wie man doch an diese Daten kommt oder was ein guter Ansatz dafür wäre? Mir würde nämlich nur noch einfallen auf dem Raspi-Gateway den PacketForwarder zu modifizieren um diese Infos abzugreifen. Aber eigentlich möchte ich diesen Aufwand nicht betreiben.

Besten Dank schonmal im Voraus.

Gruß Frank vom TTN Network Eberswalde

1 Like

Ja Moin Frank und willkommen hier.

Ich selbst kann dir da leider nicht weiterhelfen, aber unser StatistikGrafikauswertenderNodeRedGrafanaGuru @DasNordlicht weis evtl. einen Lösungsansatz/weg.

Die eine, oder andere Statistik hat er ja schon in unser Grafana gezaubert. Das Wie, ist auf unserer Webseite https://iot-usergroup.de/ beschrieben.

Einige Ergebnisse GWauswertung:
https://grafana.ffslfl.net/d/tLWgndzZk/ttn-gw-analyse?orgId=1

https://grafana.ffslfl.net/d/rNj7hnzZk/nucleon-lora-gw-ubersicht?orgId=1

Gruß

Moin,

Kurzfassung ist einen UDP Port für Grafana erreichbar machen und dann ein zweites Ziel für den Forwarder einrichten. Mit Node-RED, InfluxDB und Gafana dann die Daten zur Anzeige bringen.

Willst du dir die Arbeit nicht machen gibt es noch die Möglichkeit die Daten wie auf unserer GW Map sichtbar zu machen, dort nutzen wir einen von fertigen Dienst von https://ttngw.rexfue.de/?gwid=eui-b827ebfffe2f8b2a um die Statistik anzuzeigen.

2 Like

Besten Dank für eure Antworten. @Nordlicht, du hast einen tollen Hinweis gegeben, ein zweites Ziel beim Packetforwarder einrichten … ich nutze ein RaspiGateway mit Semtech poly_pkt_fwd … ich hoffe bei dem geht das, muss ich erst mal recherchieren.
Ansonsten hättet ihr noch einen Tipp welcher PacketForwarder sich dafür eignet?

Auf jeden Fall schon mal dickes Danke und Gruß

1 Like

ich meine poly_ und mult_ können das beides

So ich bin inzwischen zu einem Ergebnis gekommen, leider kein positives.

Das 2. Ziel beim Packetforwarder hat super geklappt und ich hab das an einen eigenen Server geschickt wo ich in Python einen kleinen Deamon geschrieben habe der die UDP Pakete empfängt und aufbereitet.
Da hab ich dann eine Menge Meta-Infos bekommen (SF, Frequ. usw. ) und habe feststellen müssen, dass die Device ID nicht dabei ist. Diese befindet sich nämlich im verschlüsselten Payload, womit sich meine Idee, alle Devices zu erfassen die über mein Gateway senden, in wohlgefallen aufgelöst hat.
Ist ja klar dass ich den Payload nur für meine eigenen Devices entschlüsseln kann, da ich ja nur für diese über den App-Key verfüge.
Ansonsten hab ich in den restlichen für mich lesbaren Meta-Daten, nichts gefunden anhand dessen ich die unique Devices zählen kann.
Leuchtet mir ja eigentlich auch ein. TTN möchte natürlich die Nutzung privat und anonymisiert halten. Deswegen muss man ja auch jede Application/Device extra für solche Thirdpartydienste (wie TTNmapper) explizit freigeben und sich mit Tracking und Datenerfassungen einverstanden erklären.

Trotzdem vielen Dank für eure Unterstützung. :grin::+1:

1 Like

Hmmm… echt jetzt? Die DeviceIDs tauchen nirgendwo auf???

Vielleicht bin ich da falsch, aber in der Console unter Traffic werden sie doch angezeigt? Klar, die Metadaten kann ich wohl nicht einsehen, aber DevID gibbet doch da.

Gruß

Ja richtig, weil man die Device-IDs in der Traffic Ansicht eines eigenen Gateways sehen kann, dachte ich dass ich diese direkt auf meinem Gateway ebenfalls auslesen/sehen könnte. Aber TTN entschlüsselt ja eh den Payload für jedes einzelne Device und hat damit Zugriff auf den Inhalte des Payloads (wie z.B. die Device ID). Leider kannst du das eben nicht für fremde Devices tun und den Inhalt des Gateway-Traffics bietet dir TTN leider auch nicht per API oder CLI-Tool an.

Überlegung… Also ich bin KEIN Coder!

Könnte man aus dem Frame des Traffics auf der Konsole die Daten extrahieren?

Gruß

Die Deviceadresse ist in den Paketen unverschlüsselt drin. Mein Mikrotik-Gateway zeigt die z.B. auch direkt im Log an:

Die Adresse ist dabei nicht direkt in den Metadaten des Paket-Forwarder Protokolls, aber im data-Teil davon (hier per tcpdump auf Port 1700 abgefangenes Paket direkt vom Gateway):

Diesen Teil bekommt man auch dekodiert, da gibts auch fertigen Code für (hier für node.js, aber als Beispiel taugs :wink: ): https://github.com/anthonykirby/lora-packet
Unter https://lorawan-packet-decoder-0ta6puiniaut.runkit.sh/ kann man das auch Online ausprobieren. Mit dem oben gezeigten Paket steht im dekodierten Data-Teil dann auch die Deviceadresse drin:

Damit sollte prinzipiell also eine Statistik über die „gesehenen“ Devices machbar sein, wenn man nen Gateway hat aus dem man den Traffic ausgeleitet bekommt. Der eigentlich Payload ist natürlich weiterhin verschlüsselt, da aber das Backend die ID braucht um überhaupt die Applikation, in der dann auch die Keys sind, zu ermitteln, wäre es auch ungünstig wenn die Adresse im verschlüsselten Payload wäre.

1 Like

Danke für den wertvollen Beitrag.

Gut zu wissen. :slight_smile:

Gruß

Hallo Seiichiro,

ein riesiges Dankeschön, dass du mich auf den richtigen Weg gebracht hast. Nachdem ich nämlich ein Base64-Decode über den Data-Block gemacht hatte und nur einen Binär-Blob erhielt, ließ ich mich verleiten anzunehmen, dass dieser ganze Block verschlüsselt wäre.

Dank deines Beitrages und dem Hinweis auf dieses „Node.JS LoraPacket“ habe ich mich noch einmal rangesetzt … diesmal erfolgreich.

(1) Ist mein Datenblock aus dem Paket das bei meinem Gateway ankam.

(2) Ist das binäre Ergebnis nach dem Base64 Decode. Ich fing von vorne an mir die Bytes anzusehen und fand dann Byte 2 bis 5 interessant (rote Umrandung).

(3) Dezimale Darstellung der interessanten 4 Bytes

(4) Hexadezimale Darstellung der 4 Bytes … und siehe da, es sind die Zahlen meiner Device-Adresse.

Diese sind dort in Big Endian Notation, weshalb ich sie einfach in umgekehrter Reihenfolge nehmen muss und voila … da hab ich meine Device-Adresse 26011A50.

Jetzt kann ich sinnvoll mit meinen Device-Monitor für Gateways weitermachen.
Nochmal Danke an euch alle!!! :smiley: :+1:

2 Like

Sehr schön!!!

Schreibst du bitte noch ein [gelöst] vornean in die Threadüberschrift?

Gruß