Ziel und Funktionsweise
In dem folgendem Projekt wird versucht Personen, bzw. deren Geräte mit WLAN & Bluetooth, zu zählen.
Der aktuelle Zählerstand wird über LoRaWAN an das TheThingsNetwork zur OpenSenseMap gesendet. Mit dem integrierten GPS Empfänger kann sogar eine mobile Messeinrichtung gebaut werden. Somit würden sich zum Beispiel die Fahrgastzahlen im ÖPNV messen lassen.
Hinweis zum Datenschutz
Bei dem hier vorgestellten Projekt werden MAC Adressen verarbeitet. Diese gelten als personenbezogene Daten.
Diese Daten werden für kurze Zeit im Speicher behalten und anschließend wieder verworfen. Nach der hier vorgestellten Methode ist es nicht möglich eine Person, bzw. deren Aufenhaltsort, eindeutig zu identifizieren.
Hardware
Das Board TTGO T-Beam beinhaltet einen ESP32 Mikroprozessor, ein LoRa Funkmodul und einen GPS Empfänger.
Damit sind die drei wesentlichen Komponenten bereits verbaut und es muss nichts zusätzlich angeschlossen werden. Wer möchte könnte noch ein 0.96" LC Display anschließen.
In der platformio.ini sind auch einige andere Boards definiert. Diese sollten ebenso gut geeignet sein.
Konfiguration
Schritt 1: opensensemap.org
Zunächst erzeugt man im Dashboard von OpenSenseMap einen neue Messstation und trägt einige Werte ein:
Allgemein
Name: pax - dieser ändert sich später noch einmal
Aufstellungsort: mobil
Standort
Hier entsprechend einen Startwert eintragen wo die neue Messstation erstmalig erscheinen soll.
Hardware
Von diesen Einstellungen interessiert nur der Bereich “Manuelle Konfiguration”, dort muss ein Sensor wie abgebildet konfiguriert werden:
Erweitert
Hier würden sich bereits Daten zum TTN Netzwerk einstellen lassen. Da wir diese noch nicht haben kommen wir später nochmal zurück und fügen diese dann ein.
Fertigstellen
Zum Abschluss des Vorgangs werden zwei Übersichtsseiten gezeigt:
Übersichtsseite 1
Übersichtsseite 2
Wichtig: Eine senseboxID wird pro Messstation vergeben, dabei kann jede Station mehrere Sensoren haben. Jeder Sensor hat zusätzlich seine eigene ID. Diese IDs werden im folgenden benötigt und dürfen nicht verwechselt werden!
Abschließend nun die neu angelegte Messstation editieren und dort wo zuvor “pax” als senseBox Name eingetragen wurde nun die sensboxID eingeben.
Schritt 2: thethingsnetwork.org
Zuallererst muss in der Console von TTN eine neue Applikation erstellt werden.
Um die empfangenen Daten korrekt zu dekodieren müssen die Einstellung für das Payload format gesetzt werden. Dazu die Daten aus dem packed_decoder.js
und packed_convert.cs
in die entsprechenden Felder in der Konsole kopieren.
Um die Daten später an opensensemap.org weiterzuleiten ist es nötig unter Integrations die HTTP Integration hinzuzufügen. Für den Access Key kann ein beliebiger Schlüssel verwendet werden, in das Feld URL kommt https://ttn.opensensemap.org/v1.1
, Methode POST
und als Custom Header Name Content-Type: application/json
Anschließend kann die Messstation registriert werden, hierzu wird die senseBoxID in der TTN Console als deviceID verwendet. Die Device EUI wird automatisch generiert.
In den Einstellungen noch kontrollieren das als Aktivierungsmethode OTAA
ausgewählt wurde.
Schritt 3: modifizieren von opensensmap.org
- Da jetzt erst die
TTN Application ID
und dieTTN Device ID
bekannt sind müssen diese noch in der Sensorkonfiguration nachgetragen werden. - als Decoding Profil
LoRa serialization
auswählen. - in die decoding options wird folgendes kopiert und dabei natürlich die SensorID angepasst.
[{"decoder":"latLng"},{"sensor_id":"SENSOR-ID","decoder":"uint16"}]
Firmware des Sensors
Die Programmierung folgt entsprechend der Anleitung vom ESP32-Paxcounter auf Github. Hier sind nur die nötigsten Schritte erklärt.
Nach dem Herunterladen des Codes, öffne das Projekt mit PlatformIO und editiere folgende Dateien:
- Setze in der platformio.ini die Variable
halfile
entsprechend der verwendeten Hardware. Für den Produktivbetrieb solltedebug_level
zudem auf 0 gesetzt werden. - In der src/paxcounter.conf müssen
PAYLOAD_OPENSENSEBOX
undGPSPORT
jeweils auf 1 gesetzt werden. - src/lmic_config hier werden länderspezifische Einstellungen festgelegt, für Europa sollte alles soweit schon richtig sein.
- Kopiere die src/loraconf.sample.h und benenne sie um zur src/loraconf.h. Darin müssen nun die Werte für APPEUI und APPKEY eingetragen werden.
- Kopiere die src/ota.sample.conf und benenne sie um zur src/ota.conf. Diese Einstellungen werden benötigt für das Over-the-Air update.
Abschließend sollte sich die Firmware bauen und auf die Hardware übertragen lassen.
Inbetriebnahme
Damit sind alle Einstellungen fertig und die Station kann in Betrieb genommen werden. Die Messstation sollte nun an ihrer Position auf der Karte von opensensebox auftauchen und dort auch Werte übermitteln.
Natürlich können diese Werte über die API abgefragt werden um damit weitere Dinge zu tun.
Fehlersuche
Falls Probleme auftreten versuche folgendes, bzw. stelle dir diese Fragen:
- Ist ein LoRa Gateway in der Nähe welches die Pakete empfängt?
- Solange kein GPS Signal empfangen wird sendet die Station nur PAX Werte ohne Positionsangabe.
- Mit einem seriellen Kabel lassen sich nützliche Informationen auslesen.