# 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 ```