2023-10-26 16:50:13 +02:00
2023-12-18 17:23:59 +01:00
2023-10-25 16:52:37 +02:00
2023-12-18 17:23:59 +01:00
2023-12-18 17:23:59 +01:00
2023-10-25 16:52:37 +02:00
2023-10-25 16:52:37 +02:00
2023-10-25 16:52:37 +02:00
2023-12-18 17:23:59 +01:00
2023-12-18 17:23:59 +01:00
2023-12-18 17:23:59 +01:00

Installation der Container

rxf 2023-11-30

Dateien

Directory-Struktur

Die Datei noise.tgz enthält die folgenden Dateien und Verzeichnisse:

<LOCALDIR>
|
+- <d>noisesensors
       |
       +- <f>docker-compose.yml
       +- <d>log
       +- <d>data
       |  +- <d>mongo
       |  |  +- <d>data  
       |  |  +- <d>entries
       |  |  |  +- <f>create.js
       |  + <d>influx
       |  |  + <d>data   

<f>: file,  <d>: directory       
  • docker-compose.yml
    enthält die Anweisungen für die Docker-Container. Dies kann so an das aktuelle Portainer-Stack angehängt werden.
  • log
    Ablage für die Logdateien der einzelnene Container (noise.log, sensorapi.log und readin.log) . Diese werden täglich komprimiert. Es werden Versionen für 7 Tage aufgehoben.
  • data
    hier darunter befinden sich alle Daten, sowohl die Datenbanken als auch Konfigurationen. Außerdem werden jeweils die laufend eingelesenen Daten als actdata.json abgelegt. Diese werden bei jedem neuen Einlesen wieder überschrieben.
  • data/mongo
    Verzeichnis für die Mongo-Datenbank
  • data/mngo/data
    hier befinden sich die eingelesenen Daten
  • data/mongo/entries
    hier liegt die Datei create.js, mit deren Hilfe bei ersten Start der Datenbank die Collections und die Indexe erzeugt werden.
  • data/influx
    Verzeichnis für die Influx-Datenbank
  • data/influx/data
    Hier dann die eingelesenen Daten

Aufrufe

Entpacken des Tar-Files noise.tgz in einem beliebigen Verzeichnis (das Direktoty noisesensors wird angelegt). Der komplette Pfad zu dem Verzeichnis (also ab root) muss in der Environmentvariablen LOCALDIR hinterlegt werden.

Nun das docker-compose.yml in das Portainer-Stack einfügen. Zusätzlich folgende Environment-Variablen festlegen:

DOCKER_INFLUXDB_INIT_USERNAME=<username>
DOCKER_INFLUXDB_INIT_PASSWORD=<passwort>
DOCKER_INFLUXTOKEN=<token>
MONGO_ROOT_USERNAME=<username1>
MONGO_ROOT_PASSWORD=<passwort1>
LOCALDIR=<directory, in die das .tgz entpackt wurde>

<username>, <passwort>, <username1>, <passwort1> und <token> sind anzupassen.

Danach einloggen in das Docker-Registry auf citysensor.de:

docker login docker.citysensor.de

Einloggen mit Username und Passwort (siehe mail), anschließend kann das Portainer-Stack gestartet werden (die Container werden beim ersten mal automatisch von docker.citysensor.de herunter geholt).

Damit sollte dann Alles laufen. Das Programm holt alle 5min die neuesten Daten von sensor.community ab und speichert sie in der Influx- und in der Mongo-Datenbank.
Das Logfile kann via tail -f log/noise.log im Verzeichnise noisesensors mitgeschrieben werden.

Container

  • readin
    Über diesen Container werden alle 5 min. die aktuellen Daten von sensor.community abgeholt und in den beiden Datenbanken gespeichert

  • logrotate
    Mit Hilfe dieses Containers werde die Log-Files im Unterverzeichnis log täglich rotiert. Es werden 7 Versionen behalten, ältere gelöscht.

  • sensorapi
    Über diesen Container werde die Daten aus der Mongo-Datenbank ausgelesen, aufbereitet und als JSON- oder CSV-Datei ausgegeben.

  • noise
    Mit diesem Container wird die Grafik aufbereitet. Auch kann darüber die API (im Container sensorapi) angesprochen und die Daten abgerufen werden. (Für die Parameter der Anfrage siehe die extra Beschreibung Laerm_API). Dieser Container sollte von außen über einen Domainnamen erreichbar sein. Ansonsten hört er auf Port 3003 auf HTTP-Anfragen.

  • mongodb
    Die Mongo-Datenbank. Es gibt eine Datenbank namens sensor_data. Diese hat folgende Collections:

    • noise_sensors
      Hier weden die reinen Messwerte der einzelnen Sensoren (time, sensorid, Werte) gesammelt.
    • properties
      Hier liegen für alle Sensoren die Metadaten (wie Ortskoordinaten, Typ, Zeitpunkt der letzten Übertragung etc.)
    • statistics
      Dient nur Kontrolle, schreibt verschiedenen Statistikdaten wie Dauer des Einlesens, Dauer des Speicherns in den DBs etc.
      Zugriff:
      Am Besten über das Programm MongoDB Compass. Zugangsdaten entprechend der im Portainer hinterlegten.
  • influxdb
    Die Influx-Datenbank. Hier werden in dem Bucket sensor_data die reinen Messwert der einzelnen Sensoren gespeichert.
    Zugriff:
    http://<server>:8086
    Logindaten: Entsprechen der im Portainer hinterlegten.

Description
Alle 5 min die Daten von sensor.community abholen und in eine MongoDB speichern
Readme 192 KiB
Languages
JavaScript 87.9%
Shell 10.3%
Dockerfile 1.8%