Packet Recorder (Linux)
25.02.2025
Elektronik | Funk | Software
Der Technik-Blog
Der Packet-Recorder zeichnet alle LoRaWAN Uplink Telegramme auf und speichert diese in einer MySQL oder MariaDB Datenbank. Dieses Tool kann anhand der DeviceAdress erkennen, zu welchem LoRaWAN-Netzbetreiber ein Telegramm gehört. Das Programm eröffnet auf UDP-Port 1700 einen Socket (vergleichbar mit dem UDP Packet Forwarder), wo alle Daten von einem Gateway entgegengenommen werden und in einer Datenbank gespeichert werden.
Download Packet-Recorder Quellcode & Programm
Quellcode Kompilieren unter Linux
Grundlagen Semtech UDP Packet Forwarder
Aufbau von einem LoRaWAN Uplink Telegramm
Hello World in C++ programmieren unter Windows mit CMake
Grundlagen LoRaWAN: DeviceAdress & NetID
Hinweis: Dieses Programm benötigt eine Verbindung zu einem MySQL oder MariaDB Datenbank-Server mit nativer Authentifizierung. Verschlüsselte Verbindungen, welche in der Regel bei einer lokalen Datenbankverbindung nicht benötigt werden, werden zurzeit nicht unterstützt.
Das Programm kommt als ausführbare Datei (./) und benötigt einen MySQL oder MariaDB Datenbank-Server mit nativer Authentifizierung. Zudem sollte sichergestellt werden, dass eine Firewall nicht den Port 1700 eingehend blockiert.
Weiters setzt dieses Programm die Installation eines Webservers (Apache oder Nginx) mit PHP voraus.
Das Tool phpMyAdmin wird zu Datenbankverwaltung verwendet. Unter dem Menüpunkt "Benutzerkonten" wird ein neuer Benutzer auf dem lokalen Computer mit nativer Authentifizierung eingerichtet. Zusätzlich soll auch gleich eine Datenbank erstellt werden:
Neben der Datei "./PacketRecorder" befindet sich im Verzeichnis eine weitere Datei, welche als "config.ini" bezeichnet wird. In dieser Datei müssen alle Informationen zur Datenbank-Verbindung hinterlegt werden. Username, Passwort & Datenbankname werden wie zuvor in phpMyAdmin definiert angegeben:
Wurde das Config-File entsprechend editiert, kann das Programm gestartet werden. Konnte der Socket auf UDP-Port 1700 gestartet werden und eine Verbindung zum Datenbankserver hergestellt werden, sieht die Ausgabe vom Programm wie folgt aus:
Das Webinterface besteht aus einer Datei (index.php). Im Heimverzeichnis vom Webserver (/var/www/html/) wird ein neuer Ordner erstellt (packet-recorder) und die PHP-Datei hineinkopiert. Mit dem Texteditor wird die Datei bearbeitet und auch hier müssen wieder die Verbindungsparameter zum Datenbank-Server angeben werden:
Über den Webbrowser kann via http://localhost/packet-recorder auf das Webinterface zugegriffen werden:
Soll der Packet-Recorder dauerhaft laufen, so kann die Anwendung als Dienst installiert werden. Unmittelbar nach dem Systemstart wird das Programm automatisch gestartet und läuft im Hintergrund. Als Verzeichnis für die Programmdateien bietet sich unter Linux der Ordner /opt an. In diesem Ordner wird zunächst über das Terminal ein weiterer Ordner mit dem Namen "packetrecorder" erstellt:
cd /opt
sudo mkdir packetrecorder
Die Dateien (config.ini & PacketRecorder) werden in den erstellten Ordner kopiert. Anschließend wird mit den folgenden Befehlen ein neuer Benutzer erstellt und dieser als Besitzer dem Ordner zugewiesen und die Zugriffsrechte für alle Freigegeben:
sudo useradd -r -s /bin/false packetrecorder
sudo chown packetrecorder:packetrecorder PacketRecorder
chmod 0777 -R packetrecorder
Jetzt wird mit dem Texteditor Nano ein neuer Dienst eingerichtet:
sudo nano /etc/systemd/system/PacketRecorder.service
Folgender Inhalt wird in die Textdatei geschrieben:
[Unit] Description=PacketRecorder Service After=network.target mysql.service Requires=mysql.service [Service] Type=simple ExecStart=/opt/packetrecorder/PacketRecorder WorkingDirectory=/opt/packetrecorder Restart=always User=packetrecorder Group=packetrecorder [Install] WantedBy=multi-user.target
Für den erfolgreichen Systemstart muss der MySQL oder MariaDB Datenbankserver bereits laufen. Der Packet Recorder wird also erst gestartet, nachdem der Datenbankserver gestartet wurde. Zusätzlich gibt es noch eine Verzögerung von 10 Sekunden.
Achtung: Dieses Beispiel erfordert einen MySQL Server, wer MariaDB verwendet, muss die Datei entsprechend anpassen!
Anschließend muss der Dienst aktiviert und gestartet werden:
sudo systemctl daemon-reload
sudo systemctl enable PacketRecorder.service
sudo systemctl start PacketRecorder.service
sudo systemctl status PacketRecorder.service
Der letzte Befehl prüft, ob der Dienst gestartet erfolgreich gestartet werden konnte:
Der Packet Recorder zeichnet alle LoRaWAN Uplink Telegramme von einem Gateway auf. Dieser Artikel beschreibt die Installation dieses Dienstes unter Linux
WeiterlesenDer Packet Recorder zeichnet alle LoRaWAN Uplink Telegramme von einem Gateway auf. Dieser Artikel beschreibt die Installation dieses Dienstes unter Windows
WeiterlesenAEQ-WEB © 2015-2025 All Right Reserved