PHP Dashboard für HmIP Smartmeter
09.10.2024
Elektronik | Funk | Software
Der Technik-Blog
Im letzten Teil vom Projekt "LoRaWAN GPS Tracker" geht es um die Anzeige von aktuellen Positionsdaten auf einer digitalen Karte. Es gibt bereits fertige Anwendungen, welche für so ein Projekt bestens geeignet sind. Teilweise sind die Schnittstellen dafür bereits im LoRaWAN Netzwerk (TTS, TNN etc.) implementiert, was eine sehr einfache Integration ermöglicht. Trotzdem geht es auch in diesem Artikel wieder um eine Eigenentwicklung, wo die aktuellen Positionsdaten vom LoRaWAN Netzwerk an den eigenen Webserver gesendet werden. Für dieses Projekt reicht ein kleiner Webspace, den es bei einigen Anbietern wie beispielsweise bplaced sogar kostenlos gibt, vollkommen aus.
Im ersten Teil vom Projekt wurde das TTGO GPS LoRa Board in Betrieb genommen. Die NMEA-Datensätze mit den Positionsdaten werden sekündlich vom GPS-Modul (serielle Schnittstelle) an den ESP32 gesendet, verarbeitet und teilweise umgerechnet. Im zweiten Teil vom Projekt wurde das LoRa-Modul aktiviert und bei TTS registriert. Anschließend erfolgte die Implementierung vom Payload Encoder am GPS-Tracker sowie die Integration des Decoders am LoRaWAN Application-Servers. Die Positionsdaten sind ab sofort im LoRaWAN Netzwerk im Klartext ersichtlich. In diesem Artikel sollen die empfangenen und decodierten Datensätze an ein kleines PHP-Skript weitergeben werden. Das PHP-Script enthält eine digitale Karte (Open Street Map) und zeigt die Positionsdaten dort grafisch an. Wird ein neuer Datensatz an das LoRaWAN Netzwerk gesendet, so wird dieser an das PHP-Script weitergeleitet und wenige Sekunden später in der Map angezeigt.
Für alle, die gerne den GPS-Tracker einfach nur einmal testen wollen, gibt es eine entsprechende Anwendung am Testserver. Der LoRaWAN GPS Viewer speichert immer die letzten 20 Positionsdaten ab und zeigt diese in einer Tabelle an. Außerdem wird die letzte Position auf einer Karte grafisch dargestellt. Die Nutzung ist kostenlos und steht bis auf Widerruf uneingeschränkt jedem zur Verfügung. Weitere Informationen zur Einrichtung sowie zum Datenschutz befinden sich am Ende dieses Artikels.
In der Application gibt es bei TTS unter dem Menüpunkt "Integrations" die Möglichkeit, verschiedene Schnittstellen an die Application anzubinden. Unter dem Menüpunkt "Webhooks" können HTTP und HTTPS Abfragen eingebunden werden. Ziel ist es, dass bei der Ankunft von einem Datensatz dieser automatisch an eine Webseite weitergeleitet wird. Während des Requests an den Webserver wird dann die decodierte Payload im JSON-Format zusammen mit vielen META-Daten mittels HTTP-Post übergeben. Weitere Informationen über die Webhook-Kommunikation mit JSON und PHP gibt es im Artikel TTS JSON mit PHP. Zum Anlegen eines eigenen Webhooks wird als Template ein "Custom Webhook" ausgewählt:
Anschließend öffnet sich ein Formular, wo folgende Parameter eingeben werden müssen:
Webhook ID: Eine eigene frei wählbare ID für den Webhook.
Webhook Format: Hier wird JSON ausgewählt
Base URL: Die Haupt-URL vom eigenen Webserver
Uplink Message: Der Pfad zur "uplink.php" Datei
Als "Base URL" wird die URL zum eigenen Webspace angegeben. Für den AEQ-WEB Testserver wird folgende URL angeben:
http://testserver.aeq-web.com/lorawan_gps
Oder für HTTPS
https://ssltestserver.aeq-web.com/lorawan_gps
TTS kann bei bestimmten Ereignissen verschiedene Pfade am Webserver aufrufen. So könnte man ein PHP-Script schreiben, das z. B. JOIN-Requests oder Fehler protokolliert. Kommt es zu einem JOIN, so wird eine andere Datei aufgerufen als bei der normalen Datenübertragung (Uplink). Für den GPS-Tracker wird nur ein Server-Pfad für den Uplink benötigt. Bei der Verwendung des AEQ-WEB Testservers als auch am eigenen Server wird folgender Uplink-Pfad angeben:
/uplink.php
Dieses kleine Testprogramm wird auf den eigenen Webserver hochgeladen und mit TTS verlinkt. Aktuelle Positionsdaten werden von TTS an diese Applikation gesendet und auf einer Karte im Browser grafisch dargestellt. Die PHP-Applikation besteht aus folgenden Dateien:
uplink.php: Diese Datei wird von TTS aufgerufen, sobald ein neuer Datensatz ankommt. Die bereits decodierten Payload-Parameter werden mittels HTTP-POST im JSON-Format von TTS während dem Aufruf übergeben. Anschließend wird das JSON-Paket in einzelne Parameter zerlegt. Das Script erstellt am Webserver im Hauptverzeichnis eine Datei und speichert Koordinaten, Höhe, Satelliten und die aktuelle Uhrzeit (Serverzeit) ab. Jeder Parameter wird mit einem Strichpunkt getrennt.
index.php: Die Index-Datei beinhaltet das Layout der Webseite. Das Script versucht die von der "uplink.php" erstellte "data.txt"-Textdatei zu öffnen und die Koordinaten einzulesen. Anschließend wird eine Karte (Open Street Map) generiert, wo die aktuelle Position des GPS-Empfängers angezeigt wird. Zusätzlich wird die Position, Höhe, Anzahl der Satelliten und die Uhrzeit vom Datenempfang als Text ausgeben.
Unverbindlich und bis auf Widerruf gibt es die Möglichkeit, den GPS-Tracker mit den AEQ-WEB Testserver zu koppeln. Wie bereits in der Konfigurationsanleitung angeben, müssen bei TTS die Base URL und der Uplink Message Pfad auf den Testserver zeigen. Der Testserver ist unter folgender URL erreichbar: http://testserver.aeq-web.com/lorawan_gps/
TTS überträgt im Uplink Message Kanal neben der App-ID auch die Device-ID. Global kann bei TTS eine APP-ID nur einmalig vergeben werden. In der Application befindet sich der GPS-Tracker mit seiner eindeutigen Device-ID. Beide Parameter findet man in der TTS-Konsole. Da eine Device-ID in unterschiedlichen Applikationen mehrfach vergeben werden kann, wird neben dieser ID auch die Application-ID benötigt, um jeden GPS-Tracker eindeutig zu identifizieren. Ähnlich wie bei einem Login werden beide Parameter am Testserver angeben:
Anschließend prüft der Server, ob bereits ein Datensatz vorliegt. Damit das Tool verwendet werden kann, muss mindestens ein Datensatz von TTS bereits an den Testserver gesendet worden sein. Ist dies der Fall, so wird eine entsprechende Meldung mit der Anzahl an aktuellen Datensätze ausgeben. Unter "Actual Pos." wird die Position des GPS-Trackers in einer Map angezeigt:
Unter "Raw Data" befindet sich eine Tabelle, welche die letzte 20 Empfangen Datensätze ausgibt. Neben den Koordinaten werden auch META-Daten wie aktuelle Frequenz, Signalstärke, Airtime oder auch die ID des Gateways, welches die Daten an TTS gesendet hat, angezeigt:
Hinweis: Werden die Daten von einem Gateway aus dem V2 Stack (TTN) empfangen, so lautet die Gateway-ID immer "packetbrocker".
Der Testserver speichert nur die letzten 20 Datensätze und löscht ältere automatisch. Außerdem besteht die Möglichkeit, alle gespeicherten Datensätze unter "Set Device" unwiderruflich zu löschen.
Datenschutz Information
Der Testserver speichert alle übermittelten Parameter in einer Datenbank auf unbestimmte Zeit ab. Für den Anwender besteht die Möglichkeit, durch Eingabe von Device-ID und Application-ID alle vom LoRaWAN-Netzwerk empfangenen Datensätze sofort und unwiderruflich zu löschen. Der Testserver erstellt im Hintergrund ein Logfile, was die IP-Adresse aller Zugriffe speichert. Dies ist für eine Fehldiagnose sowie zum Nachverfolgen eines Missbrauches notwendig. Weitere Informationen befinden sich in der allgemeinen Datenschutzerklärung.
STM Boards programmieren mit dem Arduino IDE - Alle Infos zur Einrichtung und Installation der Boards, Treiber und Bibliotheken
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved