Files
wetterstation_python/DOCKER_README.md
rxf 511cc31dc0 Einlesen und Anzeigen getrennt
Einlesen per HTPP (nicht mehr MQTT)
2026-01-27 12:52:54 +00:00

130 lines
2.8 KiB
Markdown

# 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
## Installation
### 1. `.env` Datei erstellen (optional)
Erstelle eine `.env` Datei für benutzerdefinierte Konfiguration:
```bash
DB_FILE=wetterdaten.db
HTTP_PORT=5003
INGESTION_PORT=5004
```
### 2. Container starten
```bash
docker-compose up -d
```
Die Services laufen dann unter:
- Web-Interface: `http://localhost:5003`
- Ingestion API: `http://localhost:5004/api/data/upload`
### 3. Container verwalten
```bash
# 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 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:
```bash
rm wetterdaten.db
docker-compose restart wetterstation-ingestion
```
### Container neu bauen
Nach Code-Änderungen:
```bash
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
```