Die Gebäudedaten‑App ist so aufgebaut, dass sie verschiedene Bereiche eines Gebäudes strukturiert darstellen kann. Dazu gehören nicht nur Innenräume wie Wohnzimmer, Küche oder Büro, sondern auch Außenbereiche wie Terrasse, Garten oder Balkon. In diesem Artikel tauchst du tief in die Zonenlogik der App ein und lernst, wie die App Innen‑ und Außenbereiche unterscheidet, wie der OutdoorScreen funktioniert und wie die Navigation zwischen den Zonen umgesetzt ist.
Dieser Artikel ist ein wichtiger Schritt, bevor du in den nächsten Artikeln die Wettervorhersage integrierst. Denn die Außensensoren bilden die Brücke zwischen internen Gebäudedaten und externen Wetterdaten. Wenn du verstehst, wie die App mit Zone 2 (Außenbereich) umgeht, wirst du später die Wettervorhersage viel natürlicher in die App einfügen können.

1. Was sind Zonen – und warum braucht die App sie?
Die Gebäudedaten‑App arbeitet mit zwei Zonen:
- Zone 1: Innenräume
- Zone 2: Außenbereich
Diese Einteilung ist nicht nur logisch, sondern auch technisch sinnvoll. Innenräume haben typischerweise mehrere Räume, in denen verschiedene Sensoren installiert sind. Der Außenbereich hingegen wird in der App als eine eigene Zone behandelt, die ebenfalls Räume und Sensoren enthalten kann — auch wenn es in der Praxis meist nur einen „Raum“ gibt, z. B. „Außenbereich“.
Die Zonen sind in der Datenbank hinterlegt und werden über die Tabelle zones verwaltet. Jeder Raum gehört zu einer Zone, und jeder Sensor gehört zu einem Raum. Dadurch entsteht eine klare Hierarchie:
Zone → Raum → Sensor → Messwerte
Diese Struktur ist flexibel genug, um später erweitert zu werden — z. B. um weitere Zonen wie „Keller“, „Garage“ oder „Dachboden“.

2. Wie die App Zonen lädt – ein Blick in die Datenbankabfragen
Die Datenbankabfragen für Zonen und Räume sind in services/database/queries.py definiert. Die Abfrage für Räume einer Zone sieht so aus:
SELECT id, name FROM rooms WHERE zone_id=? ORDER BY name ASC
Das bedeutet:
- Die App lädt alle Räume, deren
zone_idder gewünschten Zone entspricht. - Die Räume werden alphabetisch sortiert.
Für Zone 1 (Innenbereich) kann es mehrere Räume geben, z. B.:
- Wohnzimmer
- Küche
- Büro
- Schlafzimmer
Für Zone 2 (Außenbereich) gibt es typischerweise nur einen Raum, z. B.:
- Außenbereich
Aber die App ist flexibel genug, um mehrere Außenräume zu unterstützen — falls du das später möchtest.

3. Der OutdoorScreen – der Spezialfall für Zone 2
Der OutdoorScreen ist ein eigener Screen, der speziell für die Außensensoren entwickelt wurde. Er funktioniert ähnlich wie der RoomScreen und der SensorScreen, aber mit einem wichtigen Unterschied: Er lädt nicht mehrere Räume, sondern nur den ersten Raum der Zone 2.
Der Code sieht so aus:
zone_id = 2
rooms = get_rooms_by_zone(zone_id)
room_id, room_name = rooms[0]
sensors = get_sensors_by_room(room_id)
Das bedeutet:
- Die App lädt alle Räume der Zone 2.
- Sie nimmt den ersten Raum aus der Liste.
- Sie lädt alle Sensoren dieses Raums.
Warum nur der erste Raum?
Weil die App davon ausgeht, dass der Außenbereich nur einen Raum hat. Das ist in den meisten Fällen sinnvoll — du hast draußen vielleicht einen Temperatursensor, einen Feuchtesensor oder einen Windsensor, aber du wirst selten mehrere „Außenräume“ definieren.
Wenn du später mehrere Außenbereiche unterstützen möchtest, kannst du den OutdoorScreen leicht erweitern. Aber für das aktuelle Projekt ist die Annahme völlig ausreichend.

4. Die Navigation zum OutdoorScreen – ein eigener Button im Startscreen
Der Startscreen bietet drei Buttons:
- Räume
- Außensensoren
- Wettervorhersage
Der Button für die Außensensoren öffnet den OutdoorScreen:
def open_outdoor(self):
self.manager.current = "outdoor"
Das ist bewusst einfach gehalten. Der OutdoorScreen kümmert sich selbst darum, die richtigen Sensoren zu laden.
5. Wie der OutdoorScreen Sensoren darstellt
Der OutdoorScreen erzeugt für jeden Sensor einen Button — genau wie der SensorScreen. Wenn der Benutzer auf einen Sensor klickt, passiert Folgendes:
- Der
AppStatewird aktualisiert:sm.state.current_sensor_id = sid sm.state.current_sensor_name = sname - Der vorherige Screen wird gespeichert:
sm.state.previous_screen = sm.current - Die App wechselt zum Diagramm‑Screen:
sm.current = "diagrams"
Der Code ist nahezu identisch mit dem SensorScreen — und das ist gut so. Die App bleibt dadurch konsistent und leicht verständlich.
6. Warum Außensensoren wichtig sind – die Brücke zur Wettervorhersage
Die Außensensoren sind nicht nur ein nettes Extra — sie sind ein wichtiger Bestandteil der App. Sie bilden die Brücke zwischen internen Gebäudedaten und externen Wetterdaten.
Beispiele:
- Außentemperatur vs. Innentemperatur
- Außenfeuchte vs. Innenfeuchte
- Außensensorwerte vs. Wettervorhersage
Wenn du später die Wettervorhersage integrierst, wirst du feststellen, dass die Außensensoren eine natürliche Ergänzung sind. Sie ermöglichen Vergleiche, Analysen und Visualisierungen, die ohne sie nicht möglich wären.

7. Die Rolle des AppState im OutdoorScreen
Der AppState spielt auch im OutdoorScreen eine zentrale Rolle. Er speichert:
- die aktuelle Zone
- den aktuellen Raum
- den ausgewählten Sensor
- den vorherigen Screen
Dadurch bleibt die Navigation konsistent. Wenn du vom Diagramm‑Screen zurückgehst, landest du wieder im OutdoorScreen — nicht im RoomScreen oder Startscreen.
Das ist wichtig, weil der OutdoorScreen ein eigener Bereich ist, der nicht Teil der normalen Raumstruktur ist.
8. Fehlerbehandlung im OutdoorScreen
Der OutdoorScreen geht davon aus, dass Zone 2 mindestens einen Raum hat. Wenn das nicht der Fall ist, würde die App abstürzen. In der Praxis ist das aber kein Problem, weil die Datenbank beim Initialisieren immer einen Außenraum anlegt.
Wenn du möchtest, kannst du später eine Fehlerbehandlung einbauen — aber für das aktuelle Projekt ist das nicht notwendig.
9. Warum die Zonenlogik so wichtig ist
Die Zonenlogik ist ein zentraler Bestandteil der App. Sie sorgt dafür, dass:
- Innen‑ und Außenbereiche sauber getrennt sind
- die Navigation klar und intuitiv bleibt
- die Datenbankstruktur flexibel bleibt
- die Wettervorhersage später nahtlos integriert werden kann
Ohne die Zonenlogik wäre die App unübersichtlich und schwer zu erweitern.
10. Fazit: Die Außensensoren sind bereit für die Integration der Wettervorhersage
Nach diesem Artikel verstehst du:
- wie die Zonenlogik funktioniert
- wie der OutdoorScreen aufgebaut ist
- wie die Navigation zwischen Innen‑ und Außenbereichen funktioniert
- wie der AppState alle Screens verbindet
- warum Außensensoren wichtig sind
- wie die App später die Wettervorhersage integrieren kann
Damit bist du perfekt vorbereitet für Artikel 5, in dem du die Wettervorhersage vollständig in die App einbindest.