Mit diesem Artikel schließt du die siebenteilige Serie zur Gebäudedaten‑App ab. In den vorherigen Artikeln hast du die Navigation, die Datenbank, die Sensorlogik, die Diagrammerstellung, die Zonenstruktur und die Integration der Wettervorhersage im Detail kennengelernt. Dieser letzte Artikel fasst alles zusammen, ordnet die Architektur ein und zeigt dir, wie du das Projekt in Zukunft erweitern kannst — ohne die bestehende Struktur zu gefährden.
Dieser Artikel ist bewusst reflektierend aufgebaut. Er zeigt dir, warum die App so stabil funktioniert, welche Designentscheidungen sie so flexibel machen und wie du das Projekt in Zukunft weiterführen kannst. Gleichzeitig bekommst du eine klare Übersicht über alle Module, ihre Aufgaben und ihre Abhängigkeiten.

1. Die Gebäudedaten‑App als modulares Gesamtsystem
Die Gebäudedaten‑App ist ein Paradebeispiel für eine modular aufgebaute Kivy‑Anwendung. Sie besteht aus mehreren klar getrennten Bereichen:
- Screens für die Benutzeroberfläche
- Services für Datenbank, Sensorlogik und Diagrammerstellung
- KV‑Layouts für die visuelle Darstellung
- WeatherApp‑Modul für die Wettervorhersage
- AppState als zentraler Navigationszustand
- app.py als Einstiegspunkt
Diese Struktur sorgt dafür, dass die App leicht verständlich, gut wartbar und problemlos erweiterbar ist. Jeder Bereich hat eine klar definierte Aufgabe, und die Module sind so entkoppelt, dass Änderungen an einem Teil der App keine unerwarteten Auswirkungen auf andere Teile haben.

2. Die Rolle des AppState – das verbindende Element
Der AppState ist eines der wichtigsten Elemente der App. Er speichert alle Informationen, die für die Navigation relevant sind:
- aktuelle Zone
- aktueller Raum
- aktueller Sensor
- vorheriger Screen
Dadurch müssen die Screens nicht direkt miteinander kommunizieren. Stattdessen greifen sie alle auf denselben Zustand zu. Das macht die App flexibel und verhindert enge Kopplungen zwischen den Screens.
Beispiel:
- Der SensorScreen setzt
current_sensor_id. - Der DiagrammScreen liest
current_sensor_id. - Der OutdoorScreen setzt
current_zone_id. - Der RoomScreen liest
current_zone_id.
Diese Struktur ist robust und leicht erweiterbar.

3. Die Datenbank als stabile Grundlage
Die Datenbank ist das Herzstück der App. Sie enthält alle Informationen über:
- Zonen
- Räume
- Sensoren
- Messwerte
Die Tabellenstruktur ist bewusst einfach gehalten, aber sie bildet die Grundlage für die gesamte App. Die Abfragen sind klar strukturiert und leicht verständlich.
Beispiel:
SELECT id, name FROM rooms WHERE zone_id=? ORDER BY name ASC
Diese Abfrage lädt alle Räume einer Zone.
Die Datenbank ist flexibel genug, um später erweitert zu werden — z. B. um weitere Zonen, Räume oder Sensortypen.

4. Die Sensorlogik – wie die App Daten erzeugt
Der SensorService erzeugt Zufallswerte, um die Live‑Aktualisierung zu simulieren. Das ist wichtig, weil die App ohne echte Sensoren keine Daten hätte. Der SensorService sorgt dafür, dass die App immer aktuelle Werte hat.
Beispiel:
value = random.uniform(19.0, 24.0)
timestamp = datetime.now().isoformat(timespec="seconds")
Diese Werte werden in die Datenbank geschrieben und später im Diagramm angezeigt.

5. Die Diagrammerstellung – Matplotlib als Visualisierungstool
Der DiagrammService ist für die Erstellung der Diagramme verantwortlich. Er verwendet Matplotlib, um ein einfaches Liniendiagramm zu erzeugen. Die Diagramme werden transparent gespeichert, damit sie sich gut in das UI einfügen.
Beispiel:
fig, ax = plt.subplots(figsize=(6, 3), dpi=100)
ax.plot(timestamps, values, color=color, linewidth=1.8)
fig.savefig(path, transparent=True)
Die Diagramme sind leicht, modern und gut lesbar.

6. Die Zonenlogik – Innen und Außen sauber getrennt
Die App unterstützt zwei Zonen:
- Zone 1: Innenräume
- Zone 2: Außenbereich
Diese Struktur ist nicht nur logisch, sondern auch technisch sinnvoll. Innenräume haben typischerweise mehrere Räume, während der Außenbereich meist nur einen Raum hat.
Der OutdoorScreen lädt die Sensoren der Zone 2:
zone_id = 2
rooms = get_rooms_by_zone(zone_id)
room_id, room_name = rooms[0]
sensors = get_sensors_by_room(room_id)
Diese Struktur ist flexibel genug, um später erweitert zu werden — z. B. um mehrere Außenbereiche.

7. Die Wettervorhersage – ein vollständig integriertes Modul
Die Wettervorhersage‑App ist ein eigenständiges Modul, das du vollständig in die Gebäudedaten‑App integriert hast. Sie besteht aus:
- ForecastScreen
- WeatherReader
- WeatherApiClient
- WeatherParser
- download_icon
- visualizer.kv
Die Integration erfolgt in app.py:
weather_settings = Settings()
sm.add_widget(ForecastScreen(settings=weather_settings, name="weather"))
Mehr ist nicht nötig.

8. Die Navigation – klar, intuitiv und konsistent
Die Navigation erfolgt über den Startscreen. Der Benutzer kann:
- Räume anzeigen
- Sensoren anzeigen
- Diagramme anzeigen
- Außensensoren anzeigen
- Wettervorhersage anzeigen
Alles über drei Buttons.
Beispiel:
def open_forecast(self):
self.manager.current = "weather"
Die Navigation ist bewusst einfach gehalten, damit die App leicht zu bedienen ist.

9. Warum die App so stabil ist
Die App ist stabil, weil sie:
- modular aufgebaut ist
- klare Verantwortlichkeiten hat
- eine saubere Trennung von Logik und Layout besitzt
- eine robuste Datenbankstruktur hat
- eine einfache Fehlerbehandlung nutzt
- den AppState als zentrales Bindeglied verwendet
- Matplotlib für die Visualisierung nutzt
- die Wettervorhersage als eigenständiges Modul integriert
Diese Struktur ist professionell und leicht erweiterbar.
10. Ausblick: Wie du die App in Zukunft erweitern kannst
Die App ist so aufgebaut, dass du sie jederzeit erweitern kannst. Mögliche Erweiterungen:
Weitere Sensoren
Du kannst neue Sensortypen hinzufügen, z. B.:
- CO₂
- VOC
- Luftdruck
- Helligkeit
Weitere Räume oder Zonen
Du kannst neue Räume oder Zonen hinzufügen, z. B.:
- Keller
- Garage
- Dachboden
Weitere Diagramme
Du kannst zusätzliche Diagramme im bestehenden Stil hinzufügen.
UI‑Verbesserungen
Du kannst das UI modernisieren, z. B.:
- dunkles Theme
- neue Icons
- animierte Übergänge
Erweiterung der Wetteranzeige
Du kannst zusätzliche Wetterdaten anzeigen, z. B.:
- UV‑Index
- Sonnenauf‑ und ‑untergang
- Luftdruck
Fazit: Die Gebäudedaten‑App ist ein solides, erweiterbares Gesamtsystem
Nach diesem Artikel verstehst du:
- wie die Architektur aufgebaut ist
- wie die Module zusammenarbeiten
- warum die App so stabil ist
- wie du sie in Zukunft erweitern kannst
Damit ist die Serie abgeschlossen. Du hast eine App, die sowohl Gebäudedaten als auch Wetterdaten visualisiert und deren Struktur so modular ist, dass du sie jederzeit erweitern kannst.Wenn du möchtest, kann ich dir jetzt: