← Back to Portfolio
Persönliches ProjektN/AN/A
Mehrzonen-Heizungsmanagementsystem
Ein produktionsreifes Mehrzonen-Gebäudeheizungsmanagementsystem, das Heizung über mehrere Gebäudezonen mit Modbus TCP-Protokoll simuliert und steuert. Das System verfügt über verteilte Zonen-Simulatoren, einen zentralen FastAPI-Steuerungsserver mit intelligenter Planung, wetterbewusster Optimierung und umfassender Datenprotokollierung. Dieses Projekt demonstriert industrielle Automatisierungsmuster, Protokoll-Integration und skalierbare Gebäudemanagementsystem-Architektur. (GitHub)
Architekturübersicht
Das System implementiert eine verteilte Steuerungsarchitektur mit Zonen-Level-Geräten und zentralisierter Intelligenz:
1. Zonen-Simulatoren (Modbus TCP-Server)
- Zweck: Simuliert individuelle Thermostat-Geräte für jede Gebäudezone
- Funktionalität:
- Modbus TCP-Server: Jede Zone läuft ein unabhängiges Python-Skript, das Modbus-Register exponiert
- Exponierte Register:
- Aktuelle Temperatur (nur lesen)
- Ziel-/Sollwert-Temperatur (lesen/schreiben)
- Belegungsstatus (nur lesen)
- Heizungszustand (EIN/AUS, nur lesen)
- Simulationslogik:
- Temperaturschwankungen basierend auf Heizungszustand und Außenbedingungen
- Belegungsänderungen (simulierte Anwesenheits-/Abwesenheitsmuster)
- Heizungsreaktion auf Sollwertänderungen
- HTTP-Status-Reporting: Sendet periodisch Zonen-Status (Sensorwerte, Zustand) an zentralen Server via REST API
- Modbus-Protokoll: Branchenübliches Modbus TCP/IP für Gebäudeautomatisierungs-Kompatibilität
2. Zentraler Steuerungsserver (FastAPI)
- Framework: FastAPI für hochperformante Async-API-Endpoints
- API-Endpoints:
POST /zones/{zone_id}/data: Empfängt Status-Updates von Zonen-SimulatorenGET /zones/{zone_id}: Abfrage aktuellen Zonen-Status und KonfigurationGET /zones/{zone_id}/history: Abruf historischer ZonendatenGET /zones: Liste aller Zonen und ihrer aktuellen ZuständePOST /zones/{zone_id}/setpoint: Manuell Zieltemperatur setzen (Override)
- Datenpersistenz:
- SQLAlchemy ORM für Datenbankabstraktion
- SQLite-Datenbank speichert:
- Zonen-Konfigurationen (ID, Name, Standort)
- Sensorwerte (Zeitstempel, Temperatur, Belegung)
- Steuerungsbefehle (Sollwertänderungen, Zeitstempel)
- Historische Trends zur Analyse
- Datenbankschema: Normalisierte Tabellen für Zonen, Werte und Befehle mit Foreign-Key-Beziehungen
3. Intelligente Steuerungslogik (APScheduler)
- Planungsframework: APScheduler für periodische Task-Ausführung
- Steuerungsschleife (Geplante Aufgabe):
- Frequenz: Läuft in konfigurierbaren Intervallen (z.B. alle 5 Minuten)
- Datensammlung:
- Ruft aktuellen Status von allen Zonen via Datenbank ab
- Ruft Wettervorhersagedaten von externer API ab
- Entscheidungslogik:
- Belegungsbasiert: Höherer Sollwert für belegte Zonen, niedriger für unbelegte
- Wetter-adaptiv: Passt Sollwerte basierend auf Außentemperatur an
- Energieoptimierung: Reduziert Heizung in unbelegten Zonen
- Komfortoptimierung: Hält komfortable Temperaturen in belegten Zonen
- Modbus-Kommunikation:
- Liest aktuelle Zieltemperaturen von Zonengeräten via Modbus TCP
- Vergleicht mit berechneten optimalen Sollwerten
- Schreibt neue Sollwerte zu Zonen, wenn Anpassung nötig
- Befehlsprotokollierung: Protokolliert alle Steuerungsentscheidungen mit Zeitstempeln und Begründung
4. Modbus TCP-Client
- Bibliothek: pymodbus oder ähnliche Python-Modbus-Bibliothek
- Funktionalität:
- Stellt TCP-Verbindungen zu Zonen-Simulatoren her
- Liest Holding-Register (aktuelle Temp, Sollwert, Belegung, Heizungszustand)
- Schreibt Holding-Register (Zieltemperatur-Updates)
- Fehlerbehandlung für Verbindungsausfälle und Timeouts
- Verbindungspooling für effiziente Multi-Zonen-Kommunikation
5. Wetter-Integration
- Externe API: Wetterservice (z.B. OpenWeatherMap, WeatherAPI.com)
- Verwendete Daten:
- Außentemperatur
- Vorhersagedaten für prädiktive Steuerung
- Integration: HTTP-Requests via Python Requests-Bibliothek
- Caching: Wetterdaten gecacht, um API-Aufrufe zu reduzieren
Technologie-Stack
Backend-Framework
- FastAPI: Modernes, schnelles Python-Web-Framework mit automatischer OpenAPI-Dokumentation
- Async/Await: Non-blocking I/O für gleichzeitige Zonen-Kommunikation
- Pydantic-Modelle: Datenvalidierung und Serialisierung
Industrielle Protokolle
- Modbus TCP/IP: Branchenübliches Protokoll für Gebäudeautomatisierung und industrielle Steuerung
- pymodbus: Python-Bibliothek für Modbus-Kommunikation (Client und Server)
- Protokoll-Vorteile:
- Weitgehend unterstützt von HVAC-Geräten
- Standardisierte Register-Mapping
- Zuverlässige industrielle Kommunikation
Task-Planung
- APScheduler: Advanced Python Scheduler für periodische und Cron-ähnliche Tasks
- Features:
- Cron-Style-Planung
- Intervall-basierte Ausführung
- Job-Persistenz (optional)
- Verteilte Planungsunterstützung
Datenbank & ORM
- SQLite: Leichtgewichtige eingebettete Datenbank (kann für Produktion auf PostgreSQL upgraden)
- SQLAlchemy: Python ORM für Datenbankoperationen
- Alembic: Datenbank-Migrations-Tool (falls verwendet)
- Vorteile:
- ACID-Compliance
- Relationale Datenintegrität
- Abfrageoptimierung
- Einfache Migration zu Produktionsdatenbanken
Externe Services
- Wetter-API: REST API für Echtzeit- und Vorhersage-Wetterdaten
- Requests-Bibliothek: HTTP-Client für API-Aufrufe
Entwicklungstools
- Python-Logging: Strukturiertes Logging für Debugging und Monitoring
- Umgebungsvariablen: Konfigurationsverwaltung
- Type Hints: Python-Typ-Annotationen für bessere Codequalität
System-Workflow
1. Initialisierungsphase
- Zentraler Server startet FastAPI-Anwendung
- Datenbank initialisiert mit Zonen-Konfigurationen
- APScheduler startet Steuerungsschleifen-Job
- Zonen-Simulatoren starten Modbus TCP-Server
- Zonen registrieren sich bei zentralem Server via HTTP
2. Kontinuierlicher Betrieb
- Zonen-Reporting:
- Zonen senden periodisch Status-Updates an zentralen Server
- Updates beinhalten: Temperatur, Belegung, Heizungszustand
- Daten in SQLite-Datenbank gespeichert
- Steuerungsschleife (Alle N Minuten):
- APScheduler triggert Steuerungslogik
- System ruft neueste Zonendaten aus Datenbank ab
- Ruft aktuelle Wetterbedingungen ab
- Berechnet optimale Sollwerte für jede Zone
- Liest aktuelle Sollwerte von Zonen via Modbus
- Vergleicht und aktualisiert Sollwerte falls nötig
- Protokolliert alle Steuerungsentscheidungen
- Modbus-Kommunikation:
- Zentraler Server verbindet sich mit jeder Zone via Modbus TCP
- Liest aktuelle Zustandsregister
- Schreibt neue Sollwert-Register, wenn Anpassungen nötig
3. Zonen-Reaktion
- Zonen empfangen Sollwert-Updates via Modbus
- Heizungssysteme passen sich an, um neuen Sollwert zu erreichen
- Temperatur ändert sich allmählich basierend auf Heizungskapazität
- Aktualisierter Status im nächsten Zyklus gemeldet
Setup & Konfiguration
Voraussetzungen
- Python 3.8+
- pip Paketmanager
- Netzwerkverbindung für Wetter-API
Installation
# Repository klonen git clone https://github.com/padawanabhi/building_heating_management_system.git cd building_heating_management_system # Virtuelle Umgebung erstellen python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # Abhängigkeiten installieren pip install -r requirements.txt # Umgebungsvariablen konfigurieren # .env-Datei erstellen mit: # WEATHER_API_KEY=your_api_key # DATABASE_URL=sqlite:///heating_system.db
System ausführen
# Terminal 1: Zonen-Simulatoren starten (mehrere Instanzen für mehrere Zonen) python zone_simulator.py --zone-id 1 --port 5020 python zone_simulator.py --zone-id 2 --port 5021 # Terminal 2: Zentralen Steuerungsserver starten python main.py # oder: uvicorn app:app --reload
Potenzielle Verbesserungen & Erweiterungen
1. Erweiterte Steuerungsalgorithmen
- Model Predictive Control (MPC): Vorhersage zukünftiger Temperaturen und Optimierung von Sollwerten
- Reinforcement Learning: Lernen optimaler Steuerungsstrategien durch Versuch und Irrtum
- Fuzzy Logic Control: Umgang mit Unsicherheit und ungenauen Eingaben
- PID-Controller: Pro-Zone-PID-Steuerung für präzise Temperaturregelung
- Maschinelles Lernen: Vorhersage von Belegungsmustern und Vorheizen von Zonen
2. Skalierbarkeitsverbesserungen
- Datenbank-Upgrade: Migration von SQLite zu PostgreSQL für Produktion
- Message Queue: Hinzufügen von RabbitMQ oder Kafka für asynchrone Zonen-Kommunikation
- Microservices: Aufteilen in separate Services (Zonen-Manager, Scheduler, API-Gateway)
- Load Balancing: Verteilung der Zonen-Kommunikation über mehrere Worker
- Caching-Layer: Redis für häufig abgerufene Zonendaten
3. Protokollverbesserungen
- Modbus RTU-Support: Hinzufügen von seriellem Modbus für direkte Hardware-Verbindungen
- BACnet-Integration: Branchenübliches Gebäudeautomatisierungsprotokoll
- MQTT-Integration: Hinzufügen von MQTT für Cloud-Konnektivität und Remote-Monitoring
- OPC UA: Moderner industrieller Kommunikationsstandard
- REST API-Erweiterung: Umfassende REST API für alle Operationen
4. Benutzeroberfläche & Visualisierung
- Web-Dashboard: React/Vue.js-Frontend für Echtzeit-Monitoring
- Mobile App: Native oder PWA für mobile Steuerung
- Historische Analytik: Erweiterte Diagramme und Trend-Analyse
- Energie-Dashboards: Echtzeit-Energieverbrauchs-Tracking
- Zonen-Karten: Visuelles Gebäudelayout mit Zonen-Status-Overlay
- Alert-System: E-Mail/SMS-Benachrichtigungen für Anomalien
5. Energieoptimierung
- Demand Response: Integration in Versorgungsunternehmen-Demand-Response-Programme
- Time-of-Use-Optimierung: Anpassung basierend auf Strompreisen
- Belegungslernen: ML-Modelle zur Vorhersage von Belegungsmustern
- Prädiktive Vorheizung: Vorheizen von Zonen vor geplanter Belegung
- Energiekosten-Tracking: Echtzeit-Kostenberechnung und Budget-Management
6. Integration & Interoperabilität
- Building Management Systems (BMS): Integration mit bestehenden BMS-Plattformen
- Smart Home-Plattformen: Home Assistant, OpenHAB, Domoticz
- Cloud-Plattformen: AWS IoT, Azure IoT, Google Cloud IoT
- API-Gateway: Bereitstellung standardisierter APIs für Drittanbieter-Integrationen
- Webhooks: Event-getriebene Benachrichtigungen an externe Systeme
7. Monitoring & Observability
- Prometheus-Metriken: System-Gesundheit, Zonen-Status, Steuerungsschleifen-Performance
- Grafana-Dashboards: Echtzeit-Visualisierung und Alerting
- Distributed Tracing: Verfolgung von Requests über Zonen und Services
- Strukturiertes Logging: JSON-Logs für besseres Parsing und Analyse
- Health Checks: Automatisiertes System- und Zonen-Gesundheits-Monitoring
8. Sicherheit & Compliance
- Modbus-Sicherheit: Modbus über TLS für verschlüsselte Kommunikation
- Authentifizierung: JWT-Tokens für API-Zugang
- Autorisierung: Rollenbasierte Zugriffskontrolle (RBAC)
- Audit-Logging: Umfassendes Audit-Trail aller Steuerungsaktionen
- Netzwerksicherheit: VPN, Firewall-Regeln, Netzwerksegmentierung
- Datenverschlüsselung: Verschlüsselung sensibler Daten im Ruhezustand
9. Erweiterte Features
- Multi-Gebäude-Unterstützung: Heizung über mehrere Gebäude hinweg verwalten
- Zonen-Gruppierung: Zonen für koordinierte Steuerung gruppieren
- Zeitplan-Management: Zeitbasierte Zeitpläne mit Override-Fähigkeiten
- Wartungsmodus: Temporäres Deaktivieren von Zonen für Wartung
- Fehlererkennung: Automatische Erkennung von Sensor-/Geräteausfällen
- Backup-Heizung: Fallback-Strategien für Geräteausfälle
10. Produktions-Deployment
- Docker-Containerisierung: Containerisierung aller Komponenten
- Docker Compose: Multi-Container-Orchestrierung
- Kubernetes: Für großflächige Deployments
- CI/CD-Pipeline: Automatisierte Tests und Deployment
- High Availability: Redundanz und Failover-Mechanismen
- Backup & Recovery: Automatisierte Datenbank-Backups
Anwendungsfälle
- Kommerzielle Gebäude: Bürogebäude, Einzelhandelsflächen, Lagerhäuser
- Wohnkomplexe: Wohngebäude, Eigentumswohnungen
- Industrielle Einrichtungen: Fabriken, Lagerhäuser mit Klimakontrollbedarf
- Bildungseinrichtungen: Schulen, Universitäten mit mehreren Gebäuden
- Gesundheitseinrichtungen: Krankenhäuser, Kliniken mit präziser Klimakontrolle
- Forschung & Entwicklung: Testen von Steuerungsalgorithmen und Optimierungsstrategien
Hauptvorteile
- Skalierbarkeit: Einfaches Hinzufügen neuer Zonen ohne größere Architekturänderungen
- Protokoll-Standard: Modbus gewährleistet Kompatibilität mit bestehenden HVAC-Geräten
- Intelligente Steuerung: Wetter- und belegungsbewusste Optimierung
- Datengetrieben: Historische Daten ermöglichen Analyse und kontinuierliche Verbesserung
- Produktionsreif: FastAPI, SQLAlchemy und APScheduler sind bewährte Technologien
- Erweiterbar: Modulares Design ermöglicht einfaches Hinzufügen neuer Features