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-Simulatoren
GET /zones/{zone_id}: Abfrage aktuellen Zonen-Status und Konfiguration
GET /zones/{zone_id}/history: Abruf historischer Zonendaten
GET /zones: Liste aller Zonen und ihrer aktuellen Zustände
POST /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
Copy# 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
Copy# 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
(View on GitHub)