No description
.github/workflows | ||
.vscode | ||
api | ||
config | ||
storage | ||
weathersource | ||
.gitignore | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
LICENSE | ||
main.go | ||
README.md | ||
thunder-collection_weather-api.json |
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 |