Einlesen und Anzeigen getrennt
Einlesen per HTPP (nicht mehr MQTT)
This commit is contained in:
110
DOCKER_README.md
110
DOCKER_README.md
@@ -1,26 +1,26 @@
|
||||
# Wetterstation Docker Setup
|
||||
|
||||
## Architektur
|
||||
|
||||
Die Wetterstation besteht aus zwei unabhängigen Services:
|
||||
|
||||
1. **Ingestion Service** (Port 5004): Empfängt POST-Daten und schreibt in die Datenbank
|
||||
2. **Web Service** (Port 5003): Stellt das Web-Interface und Lese-APIs bereit
|
||||
|
||||
Beide Services teilen sich eine gemeinsame SQLite-Datenbank via Volume.
|
||||
|
||||
## Voraussetzungen
|
||||
- Docker und Docker Compose installiert
|
||||
- MQTT Broker Zugang (Host, Port, Benutzername, Passwort)
|
||||
|
||||
## Installation
|
||||
|
||||
### 1. `.env` Datei erstellen
|
||||
Kopiere `.env.example` zu `.env` und fülle deine Daten ein:
|
||||
### 1. `.env` Datei erstellen (optional)
|
||||
Erstelle eine `.env` Datei für benutzerdefinierte Konfiguration:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
Bearbeite `.env` mit deinen MQTT-Credentials:
|
||||
```
|
||||
MQTT_HOST=dein_broker.com
|
||||
MQTT_PORT=1883
|
||||
MQTT_TOPIC=vantage/live
|
||||
MQTT_USER=dein_benutzer
|
||||
MQTT_PASSWORD=dein_passwort
|
||||
DB_FILE=wetterdaten.db
|
||||
HTTP_PORT=5003
|
||||
INGESTION_PORT=5004
|
||||
```
|
||||
|
||||
### 2. Container starten
|
||||
@@ -28,34 +28,102 @@ DB_FILE=wetterdaten.db
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
Die Anwendung läuft dann unter `http://localhost:5003`
|
||||
Die Services laufen dann unter:
|
||||
- Web-Interface: `http://localhost:5003`
|
||||
- Ingestion API: `http://localhost:5004/api/data/upload`
|
||||
|
||||
### 3. Container verwalten
|
||||
```bash
|
||||
# Logs anschauen
|
||||
# Logs anschauen (beide Services)
|
||||
docker-compose logs -f
|
||||
|
||||
# Logs nur Ingestion Service
|
||||
docker-compose logs -f wetterstation-ingestion
|
||||
|
||||
# Logs nur Web Service
|
||||
docker-compose logs -f wetterstation-web
|
||||
|
||||
# Container stoppen
|
||||
docker-compose down
|
||||
|
||||
# Container neustarten
|
||||
docker-compose restart
|
||||
|
||||
# Nur Ingestion Service neustarten
|
||||
docker-compose restart wetterstation-ingestion
|
||||
```
|
||||
|
||||
## Datenverwaltung
|
||||
Die SQLite-Datenbank (`wetterdaten.db`) wird als Volume persistiert und bleibt erhalten, auch wenn der Container gelöscht wird.
|
||||
Die SQLite-Datenbank (`wetterdaten.db`) wird als Volume persistiert und bleibt erhalten, auch wenn die Container gelöscht werden.
|
||||
|
||||
## Services im Detail
|
||||
|
||||
### Ingestion Service
|
||||
- **Port**: 5004
|
||||
- **Endpoints**:
|
||||
- `POST /api/data/upload` - Empfängt Wetterdaten
|
||||
- `GET /health` - Health-Check
|
||||
- **Zweck**: Schreibt Daten in die Datenbank
|
||||
|
||||
### Web Service
|
||||
- **Port**: 5003
|
||||
- **Endpoints**:
|
||||
- `GET /` - Web-Interface
|
||||
- `GET /api/data/day` - Daten der letzten 24h
|
||||
- `GET /api/data/week` - Daten der letzten Woche
|
||||
- `GET /health` - Health-Check
|
||||
- **Zweck**: Visualisierung und Datenabruf
|
||||
|
||||
## Externe Zugriffe
|
||||
|
||||
### Daten senden (von außen)
|
||||
```bash
|
||||
curl -X POST http://your-server-ip:5004/api/data/upload \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"dateTime": "2026-01-27 12:00:00",
|
||||
"barometer": 1013.2,
|
||||
"outTemp": 5.6,
|
||||
"outHumidity": 72,
|
||||
"windSpeed": 3.2,
|
||||
"windDir": 180,
|
||||
"windGust": 5.0,
|
||||
"rainRate": 0.0,
|
||||
"rain": 0.0
|
||||
}'
|
||||
```
|
||||
|
||||
### Web-Interface aufrufen
|
||||
Öffne im Browser: `http://your-server-ip:5003`
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Datenbank-Fehler
|
||||
Falls die Datenbank beschädigt ist, kannst du sie löschen und neu erstellen:
|
||||
Falls die Datenbank beschädigt ist:
|
||||
```bash
|
||||
rm wetterdaten.db
|
||||
docker-compose restart
|
||||
docker-compose restart wetterstation-ingestion
|
||||
```
|
||||
|
||||
### MQTT-Verbindungsfehler
|
||||
Überprüfe deine `.env` Datei auf korrekte Credentials:
|
||||
### Container neu bauen
|
||||
Nach Code-Änderungen:
|
||||
```bash
|
||||
docker-compose logs wetterstation | grep -i mqtt
|
||||
docker-compose build --no-cache
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### Port-Konflikte
|
||||
Falls Ports bereits belegt sind, passe die Ports in `docker-compose.yml` an:
|
||||
```yaml
|
||||
ports:
|
||||
- "NEUER_PORT:5003" # für Web Service
|
||||
- "NEUER_PORT:5004" # für Ingestion Service
|
||||
```
|
||||
|
||||
### Health-Checks
|
||||
Überprüfe, ob Services laufen:
|
||||
```bash
|
||||
curl http://localhost:5003/health
|
||||
curl http://localhost:5004/health
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user