← Back to Portfolio
Persönliches ProjektN/AN/A

Smart Building Wärmeautomatisierung

Smart Building Wärmeautomatisierung

Ein Ein-Zonen-Smart-Thermostat-Simulationssystem zur Demonstration von IoT-Architekturmustern mit Python, MQTT-Messaging und Echtzeit-Web-Dashboards. Das System simuliert Temperatursensoren, implementiert wetterbewusste Heizungssteuerungslogik und bietet eine Live-Monitoring-Oberfläche mit historischer Datenvisualisierung. Dieses Projekt zeigt entkoppelte Microservices-Architektur, Event-Driven-Kommunikation und Cloud-ready IoT-Deployment-Muster. (GitHub)

Architekturübersicht

Das System folgt einer Publish-Subscribe-Architektur mit drei unabhängigen Python-Komponenten, die über MQTT kommunizieren:

1. Sensor-Simulator (sensor/sensor.py)

  • Zweck: Generiert realistische Raumtemperaturdaten mit einem Random-Walk-Algorithmus
  • Funktionalität:
    • Simuliert Temperaturschwankungen (z.B. 18-24°C Bereich)
    • Veröffentlicht JSON-Temperaturwerte zum MQTT-Topic home/1/temperature
    • Konfigurierbares Veröffentlichungsintervall (Standard: alle paar Sekunden)
    • Verwendet Python-Logging für Debugging und Monitoring
  • MQTT-Client: Eclipse Paho MQTT Python-Client-Bibliothek
  • Ausgabeformat: {"temperature": 21.5} JSON-Nachrichten

2. Controller-Service (controller/controller.py)

  • Zweck: Intelligente Heizungssteuerung mit wetterbasierter Sollwert-Anpassung
  • Funktionalität:
    • Abonniert Command-Topic smart_thermostat/controller/command für Standort-Updates
    • Ruft Echtzeit-Wetterdaten von WeatherAPI.com für angegebenen Standort ab
    • Adaptive Sollwert-Logik:
      • Wenn Außentemperatur < 5°C: Verringert Heizungssollwert (Energieeinsparung)
      • Wenn Außentemperatur > 18°C: Erhöht Sollwert (Komfortoptimierung)
      • Standard-Sollwert: 20°C
    • Veröffentlicht umfassenden Status zu smart_thermostat/controller/status_feed:
      • Aktueller Wetterstandort
      • Aktueller Sollwert-Temperatur
      • Zuletzt abgerufene Außentemperatur
      • Zeitstempel
  • Wetter-Integration: WeatherAPI.com REST API (erfordert API-Schlüssel)
  • Update-Frequenz: Periodische Wetterabrufe und Status-Updates (konfigurierbares Intervall)

3. Web-Dashboard & Data Hub (app.py)

  • Framework: Flask-Webanwendung als zentraler Datenaggregationspunkt
  • MQTT-Subscriber:
    • Abonniert Sensor-Temperaturdaten (home/1/temperature)
    • Abonniert Controller-Status-Feed (smart_thermostat/controller/status_feed)
  • Datenverarbeitungslogik:
    • Vergleicht Innentemperatur mit neuestem Sollwert vom Controller
    • Bestimmt Heizungsaktion: "HEATER ON" wenn Temp < Sollwert, "HEATER OFF" sonst
    • Protokolliert alle Events (Sensorwerte, Controller-Status, Heizungsaktionen) in SQLite
  • Echtzeit-Dashboard (templates/index.html):
    • Server-Sent Events (SSE): Live-Updates ohne Seitenaktualisierung
    • Angezeigte Metriken:
      • Aktuelle Innentemperatur (vom Sensor)
      • Aktueller Sollwert (vom Controller)
      • Heizungsaktionsstatus (ON/OFF)
      • Außentemperatur und Wetterstandort
    • Interaktives Diagramm: Plotly-Zeitreihen-Visualisierung täglicher Temperaturtrends
    • Standort-Update-Formular: Ermöglicht Benutzern, Wetterstandort zu ändern, was MQTT-Befehl an Controller auslöst
  • Datenpersistenz:
    • Tägliche SQLite-Datenbanken: database/temperature_log_YYYY-MM-DD.db
    • Speichert: Zeitstempel, Innentemp, Sollwert, Heizungsaktion, Außentemp, Standort
    • Ermöglicht historische Analyse und Trendvisualisierung
  • MQTT-Publisher: Veröffentlicht Standort-Update-Befehle an Controller

4. MQTT-Broker

  • Implementierung: Eclipse Mosquitto (branchenüblicher MQTT-Broker)
  • Rolle: Zentraler Message-Bus für alle Komponentenkommunikation
  • Standard-Port: 1883 (Standard-MQTT-Port)
  • Verwendete Topics:
    • home/1/temperature - Sensor-Temperaturwerte
    • smart_thermostat/controller/status_feed - Controller-Status-Updates
    • smart_thermostat/controller/command - Befehle an Controller

Technologie-Stack

Kern-Technologien

  • Python 3: Primäre Programmiersprache für alle Komponenten
  • MQTT-Protokoll: Leichtgewichtiges Messaging-Protokoll für IoT-Kommunikation
  • Eclipse Paho MQTT Client: Python-Bibliothek für MQTT-Publish/Subscribe-Operationen
  • Eclipse Mosquitto: MQTT-Message-Broker (kann lokal oder in der Cloud laufen)

Web-Framework & Echtzeit

  • Flask: Leichtgewichtiges Python-Web-Framework für Dashboard und API
  • Server-Sent Events (SSE): Einseitiges Echtzeit-Datenstreaming vom Server zum Browser
  • Jinja2 Templates: Server-seitiges Templating für HTML-Rendering

Datenvisualisierung

  • Plotly Python: Interaktive Charting-Bibliothek für Zeitreihen-Temperaturdiagramme
  • JavaScript: Client-seitige Interaktivität und SSE-Event-Handling

Datenspeicherung

  • SQLite: Eingebettete Datenbank für tägliche Temperaturprotokolle
  • Dateibasiertes Logging: Python-Logging-Modul für Komponenten-Level-Debugging

Externe Services

  • WeatherAPI.com: REST API für Echtzeit-Wetterdaten (kostenloser Tier verfügbar)
  • Requests Library: HTTP-Client für Wetter-API-Aufrufe

Konfigurationsverwaltung

  • python-dotenv: Umgebungsvariablen-Verwaltung via .env-Dateien
  • Sichere API-Schlüssel-Speicherung: Wetter-API-Schlüssel in .env gespeichert (gitignored)

System-Workflow

1. Initialisierungsphase

  • MQTT-Broker (Mosquitto) startet und lauscht auf Port 1883
  • Sensor-Simulator startet, beginnt Temperaturwerte zu veröffentlichen
  • Controller-Service startet, abonniert Befehle, ruft initiales Wetter ab
  • Flask-App startet, abonniert Sensor- und Controller-Topics

2. Kontinuierlicher Betrieb

  • Sensor-Loop: Veröffentlicht Temperatur alle N Sekunden
  • Controller-Loop:
    • Ruft periodisch Wetter ab (z.B. jede Minute)
    • Passt Sollwert basierend auf Außentemperatur an
    • Veröffentlicht Status-Update
  • Dashboard-Loop:
    • Empfängt Sensor- und Controller-Nachrichten via MQTT
    • Bestimmt Heizungsaktion (ON/OFF)
    • Protokolliert in SQLite-Datenbank
    • Pusht Updates an verbundene Browser via SSE

3. Benutzerinteraktion

  • Benutzer öffnet Dashboard bei http://127.0.0.1:5001
  • Dashboard zeigt Live-Daten via SSE an
  • Benutzer aktualisiert Wetterstandort via Formular
  • Flask-App veröffentlicht Standortbefehl zu MQTT
  • Controller empfängt Befehl, aktualisiert Standort, ruft neues Wetter ab

Setup & Konfiguration

Voraussetzungen

  • Python 3.x und pip
  • Git zum Klonen des Repositories
  • MQTT-Broker (Mosquitto) - kann via Homebrew (macOS) oder Paketmanager installiert werden

Installationsschritte

# Repository klonen git clone https://github.com/padawanabhi/smart_heat_automation.git cd smart_heat_automation # Virtuelle Umgebung erstellen python3 -m venv my_env source my_env/bin/activate # Windows: my_env\Scripts\activate # Abhängigkeiten installieren pip install -r requirements.txt # Mosquitto MQTT-Broker installieren und starten # macOS (Homebrew): brew install mosquitto brew services start mosquitto # .env-Datei mit WeatherAPI-Schlüssel erstellen echo "WEATHER_API_KEY=your_api_key_here" > .env

System ausführen

Jede Komponente in einem separaten Terminal ausführen:

# Terminal 1: Sensor-Simulator python sensor/sensor.py # Terminal 2: Controller-Service python controller/controller.py # Terminal 3: Flask-Dashboard python app.py

Dashboard aufrufen bei: http://127.0.0.1:5001

Potenzielle Verbesserungen & Erweiterungen

1. Hardware-Integration

  • Echte Sensoren: Simulation durch tatsächliche Temperatursensoren ersetzen (DS18B20, DHT22)
  • Raspberry Pi Deployment: Sensor und Controller auf Edge-Geräten deployen
  • GPIO-Steuerung: Direkte Hardware-Steuerung für tatsächliche Heizungssysteme
  • Sensor-Fusion: Mehrere Sensortypen kombinieren (Temperatur, Luftfeuchtigkeit, Anwesenheit)

2. Erweiterte Steuerungsalgorithmen

  • PID-Steuerung: Proportional-Integral-Derivative-Controller für sanftere Temperaturregelung implementieren
  • Maschinelles Lernen: Modelle trainieren, um optimale Sollwerte basierend auf historischen Mustern vorherzusagen
  • Reinforcement Learning: Optimale Heizungsstrategien durch Versuch und Irrtum lernen
  • Zeitplanbasierte Steuerung: Tageszeit- und Wochentag-Planung
  • Anwesenheitserkennung: Heizung basierend auf Raumbelegung anpassen (PIR-Sensoren, Smart-Home-Integration)

3. Multi-Zonen-Unterstützung

  • Zonen-Management: Auf mehrere Räume/Zonen mit unabhängiger Steuerung erweitern
  • Zonen-Koordination: Heizung über Zonen hinweg optimieren, um Energieverbrauch zu minimieren
  • Zonen-Priorisierung: Belegte Zonen zuerst heizen, Heizung in unbelegten Bereichen reduzieren

4. Erweiterte Dashboard-Features

  • Benutzerauthentifizierung: Sicheren Zugang mit Login-System
  • Mobile Responsive Design: Für Smartphone/Tablet-Ansicht optimieren
  • Historische Analyse: Mehr-Tage/Woche/Monat-Trend-Analyse
  • Energieverbrauchs-Tracking: Geschätzten Energieverbrauch berechnen und anzeigen
  • Alert-System: Benachrichtigungen für Temperaturanomalien oder Systemausfälle
  • Export-Funktionalität: Historische Daten als CSV/JSON herunterladen

5. Cloud-Integration

  • Cloud-MQTT-Broker: AWS IoT Core, Azure IoT Hub oder Google Cloud IoT verwenden
  • Time-Series-Datenbank: Von SQLite zu InfluxDB oder TimescaleDB migrieren für bessere Skalierbarkeit
  • Cloud-Dashboard: Flask-App in Cloud deployen (Heroku, AWS, Azure)
  • Remote-Zugang: Sichere Remote-Überwachung und -Steuerung ermöglichen
  • Backup & Sync: Cloud-Backup historischer Daten

6. Erweiterte Protokolle & Standards

  • MQTT über TLS: Sichere MQTT-Kommunikation mit SSL/TLS-Verschlüsselung
  • MQTT 5.0: Auf neueste MQTT-Protokollversion für erweiterte Features upgraden
  • CoAP-Alternative: Constrained Application Protocol für ressourcenbeschränkte Geräte implementieren
  • OPC UA-Integration: Industrielles Protokoll-Support für Gebäudeautomatisierungssysteme

7. Energieoptimierung

  • Demand Response: Integration in Versorgungsunternehmen-Demand-Response-Programme
  • Time-of-Use-Optimierung: Heizung basierend auf Strompreisen anpassen
  • Prädiktive Vorheizung: Räume vor Belegung basierend auf Zeitplänen vorheizen
  • Energiekosten-Tracking: Echtzeit-Kostenberechnung und Budget-Alerts

8. Integration & Interoperabilität

  • Home Assistant-Integration: Verbindung zu beliebten Home-Automation-Plattformen
  • IFTTT/Zapier: Aktionen basierend auf Temperatur-Events auslösen
  • Smart Home APIs: Integration mit Google Home, Amazon Alexa
  • REST API: Steuerungs-Endpoints für Drittanbieter-Integrationen bereitstellen

9. Monitoring & Observability

  • Strukturiertes Logging: JSON-formatierte Logs für besseres Parsing
  • Metriken-Sammlung: Prometheus-Metriken für System-Gesundheits-Monitoring
  • Distributed Tracing: Requests über Komponenten hinweg verfolgen
  • Alerting: E-Mail/SMS-Alerts für Systemausfälle oder Anomalien
  • Health Checks: Automatisiertes System-Gesundheits-Monitoring

10. Sicherheitsverbesserungen

  • MQTT-Authentifizierung: Benutzername/Passwort oder zertifikatbasierte Authentifizierung
  • API-Sicherheit: JWT-Tokens für Dashboard-Zugang
  • Netzwerksicherheit: VPN oder sicherer Tunnel für Remote-Zugang
  • Datenverschlüsselung: Sensible Daten im Ruhezustand verschlüsseln
  • Rate Limiting: Missbrauch und DoS-Angriffe verhindern

Anwendungsfälle

  • IoT-Lernprojekt: Verständnis von MQTT, Event-Driven-Architektur und IoT-Mustern
  • Home-Automation-Prototyp: Grundlage für Smart-Home-Heizungssystem
  • Energiemanagement: Heizungsenergieverbrauch überwachen und optimieren
  • Gebäudeautomatisierung: Erweiterbar auf kommerzielle Gebäude-HVAC-Systeme
  • Bildungstool: Unterrichten von IoT-Konzepten, MQTT und Microservices
  • Forschungsplattform: Testen von Steuerungsalgorithmen und Optimierungsstrategien

Wichtige Erkenntnisse & Ergebnisse

  • Entkoppelte Architektur: Demonstriert Microservices-Muster mit unabhängigen, skalierbaren Komponenten
  • Event-Driven-Design: MQTT-Pub/Sub ermöglicht lose Kopplung und Echtzeit-Kommunikation
  • Echtzeit-UX: SSE bietet nahtlose Live-Updates ohne Polling
  • Datengetriebene Einblicke: Historisches Logging ermöglicht Trendanalyse und Optimierung
  • Cloud-Ready-Design: Umgebungsbasierte Konfiguration und Standardprotokolle ermöglichen einfache Cloud-Migration
  • Produktionsmuster: Logging, Fehlerbehandlung und Konfigurationsverwaltung folgen Best Practices

(View on GitHub)

Follow Me