Mobiler Personenzähler

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

osm general

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:

osm create sensor

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

osm sensor übersicht1

Übersichtsseite 2

osm sensor übersicht2

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.

osm ttn settings

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 die TTN 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"}]
osm ttn settings

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 sollte debug_level zudem auf 0 gesetzt werden.
  • In der src/paxcounter.conf müssen PAYLOAD_OPENSENSEBOX und GPSPORT 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.

osm werte

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.