Projekt: mobiler Personenzähler (#18)

epvpn
nerdyscout 3 years ago committed by Gogs
parent 59db4dd440
commit d9ff37d358
  1. 127
      content/projekt/mpaxlora.md
  2. BIN
      static/images/mpaxlora/osm_create_sensor.png
  3. BIN
      static/images/mpaxlora/osm_general.png
  4. BIN
      static/images/mpaxlora/osm_ttn.png
  5. BIN
      static/images/mpaxlora/osm_ttn_settings.png
  6. BIN
      static/images/mpaxlora/osm_uebersicht1.png
  7. BIN
      static/images/mpaxlora/osm_uebersicht2.png
  8. BIN
      static/images/mpaxlora/osm_werte.png
  9. BIN
      static/images/mpaxlora/tbeam.png
  10. BIN
      static/images/mpaxlora/ttn_add_app.png
  11. BIN
      static/images/mpaxlora/ttn_register_device.png

@ -0,0 +1,127 @@
---
title: Mobiler Personenzähler
author: nerdyscout
status: fertig
difficulty: fortgeschritten
time: 4 Stunden bis 4 Wochen ;-)
date: 2020-01-01
image: /images/mpaxlora/tbeam.png
---
## 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](https://thethingsnetwork.org/) zur [OpenSenseMap](https://opensensemap.org/) 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](https://www.amazon.de/s?k=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](https://www.amazon.de/s?k=0%2C96+lcd) anschließen.
In der [platformio.ini](https://github.com/cyberman54/ESP32-Paxcounter/blob/master/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
{{< fluid_img alt="osm general" src="/images/mpaxlora/osm_general.png" >}}
#### 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:
{{< fluid_img alt="osm create sensor" src="/images/mpaxlora/osm_create_sensor.png" >}}
#### 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
{{< fluid_img alt="osm sensor übersicht1" src="/images/mpaxlora/osm_uebersicht1.png" >}}
#### Übersichtsseite 2
{{< fluid_img alt="osm sensor übersicht2" src="/images/mpaxlora/osm_uebersicht2.png" >}}
**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](https://github.com/cyberman54/ESP32-Paxcounter#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.
{{< fluid_img alt="osm ttn settings" src="/images/mpaxlora/ttn_register_device.png" >}}
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"}]`
{{< fluid_img alt="osm ttn settings" src="/images/mpaxlora/osm_ttn_settings.png" >}}
## Firmware des Sensors
Die Programmierung folgt entsprechend der Anleitung vom [ESP32-Paxcounter auf Github](https://github.com/cyberman54/ESP32-Paxcounter#preparing). 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.
{{< fluid_img alt="osm werte" src="/images/mpaxlora/osm_werte.png" >}}
Natürlich können diese Werte über die [API](https://api.opensensemap.org/) 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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Loading…
Cancel
Save