No description
Find a file
2021-11-26 18:03:51 +01:00
.github/workflows Update docker-ci.yml 2021-06-05 19:48:04 +02:00
.vscode modified config+authorization 2021-11-26 16:00:02 +01:00
api possibility for weather-query of multiple sensors + fix wrong flux-query 2021-11-26 18:03:51 +01:00
config modified config+authorization 2021-11-26 16:00:02 +01:00
storage possibility for weather-query of multiple sensors + fix wrong flux-query 2021-11-26 18:03:51 +01:00
weathersource weatherSourceBase as composition to mqtt-source and rest-api 2021-11-26 13:46:57 +01:00
.gitignore modified config+authorization 2021-11-26 16:00:02 +01:00
Dockerfile optimize Dockerfile using scratch image 2021-04-03 13:29:39 +02:00
go.mod decode userId from jwt token 2021-08-22 19:52:34 +02:00
go.sum decode userId from jwt token 2021-08-22 19:52:34 +02:00
LICENSE license 2021-04-26 20:18:55 +02:00
main.go weatherSourceBase as composition to mqtt-source and rest-api 2021-11-26 13:46:57 +01:00
README.md modified config+authorization 2021-11-26 16:00:02 +01:00
thunder-collection_weather-api.json removed self-token-validation -> validate token in another service 2021-08-22 14:35:26 +02:00

Go

weather-api

Ziel des Projektes weather-api ist es, eine einfache API für die Erhebung von Wetterdaten zu entwickeln. Kleine, selbstgebaute Wetterstationen können ihre Messergebnisse an die weather-api senden. Dort werden diese Verarbeitet, persistiert und können später wieder abgefragt werden.

Benötigte Fremdapplikationen

Für den Betrieb der weather-api werden einige Fremdapplikationen benötigt.

MongoDB

In der MongoDB Datenbank werden Sensordaten der Sensoren (z.B. Name, ID, Location, ...) gespeichert.

InfluxDB

Anfallende Wetterdaten werden in einer InfluxDB (Timeseries DBMS) gespeichert.

MQTT-Broker (optional)

Die Wetter-API kann Wetterdaten von Sensoren unteranderem über MQTT entgegennehmen

Umgebungsvariablen

Key Default-Wert Auswirkung
MONGO_HOST localhost:27017 Hostadresse mongodb
MONGO_DB weathersensors DB-Namen mongodb
MONGO_USER admin Username mongodb
MONGO_PASSWORD admin Passwort mongodb
MONGO_COLLECTION sensors mongodb-Collection, in der Wettersensoren gespeichert werden
INFLUX_HOST localhost:8086 Hostadresse influxdb
INFLUX_TOKEN token Token für influxDB
INFLUX_ORG org_name Organisationsnamen Influx
INFLUX_BUCKET bucket_name Bucket-Namen, in dem die Wetterdaten abgespeichert werden
MQTT_HOST localhost:1883 Hostadresse MQTT-Broker
MQTT_TOPIC sensor/# MQTT-Topic, in welchem nach Wetterdaten geschaut wird
MQTT_USER mqtt Username für MQTT
MQTT_PASSWORD mqtt Passwort für MQTT
MQTT_PUBLISH_DELAY 1000 Innerhalb dieser Zeitspanne wird ein Wetterdatensatz noch durch weiter eintreffende Werte ergänzt. Danach wird der Datensatz veröffentlicht (in Millisekunden)
MQTT_ANONYMOUS false Anonyme Anmeldung am MQTT-Broker verwenden (ohne Username und Passwort)
ACCESS_CONTROL_ALLOW_ORIGIN_HEADER * CORS-Header
USE_JWT_TOKEN_VALIDATION_URL false Tokenvalidierung an einer URL
JWT_TOKEN_VALIDATION_URL localhost:5000 URL für die JWT-Token Validierung
USE_JWT_TOKEN_VALIDATION_SECRET true Tokenvalidierung mit der Angabe eines Secrets
JWT_TOKEN_VALIDATION_SECRET token_Secret_value Secret um die Signatur des JWT-Tokens zu überprüfen
ALLOW_UNREGISTERED_SENSORS false Wetterdaten nicht registrierter Sensoren erlauben