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

2.8 KiB

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:

DB_FILE=wetterdaten.db
HTTP_PORT=5003
INGESTION_PORT=5004

2. Container starten

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

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

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:

rm wetterdaten.db
docker-compose restart wetterstation-ingestion

Container neu bauen

Nach Code-Änderungen:

docker-compose build --no-cache
docker-compose up -d

Port-Konflikte

Falls Ports bereits belegt sind, passe die Ports in docker-compose.yml an:

ports:
  - "NEUER_PORT:5003"  # für Web Service
  - "NEUER_PORT:5004"  # für Ingestion Service

Health-Checks

Überprüfe, ob Services laufen:

curl http://localhost:5003/health
curl http://localhost:5004/health