Stand 15.11.2026, zu #15. Wetter und Termine kommen aus Home Assistant.
Home Assistant (raspi-agent:8123)
│ alle 10 Minuten, nur lesen
▼
Küchen-Dienst pi/dienst/hass.py holt Entität, Vorhersage, Temperatur, Sonnenstand
pi/dienst/daten.py macht daraus die Wetterkarte (reine Funktion, getestet)
│ Ereignis „wetter“ über /ereignisse
▼
Kiosk-Seite setzt Ort, Temperatur, Lage, zweite Zeile und das Hintergrundbild
Der Dienst fragt vier Dinge ab:
| Was | Woher | Wofür |
|---|---|---|
| Wetterlage | weather.stuttgart_schn |
Text („Bedeckt“) und Wahl des Bildes |
| Tagesvorhersage | Dienst weather.get_forecasts, daily |
zweite Zeile |
| Temperatur | sensor.stuttgart_schn_temperatur |
große Zahl; fehlt der Sensor, gilt die Temperatur der Wetter-Entität |
| Sonnenstand | sun.sun |
Nachtbild |
Die Temperaturquelle ist dieselbe wie bei den Rollladen-Regeln (DWD Stuttgart-Schnarrenberg, Festlegung vom 18.9.2026).
pi/dienst/daten.py (LAGEN).Zweite Zeile, Nachtbild und Verblassen nach einer Stunde hat Florian am 15.11.2026 so festgelegt (#15).
Der Dienst braucht ein eigenes Token für Home Assistant. Ohne HA_TOKEN läuft er weiter und
zeigt „Keine Wetterdaten“. Die Geheimnisse kommen aus dem 1Password-Environment
kuechen-display, wie bei den anderen Repos (heim-agent#87).
| Name | Wofür |
|---|---|
HA_TOKEN |
langlebiges Token für Home Assistant, nur dieses Gerät |
RUNDFUNK_GERAETE_TOKEN |
Token der rundfunk-Bridge, derselbe Wert wie in rundfunk/.env |
OPENAI_API_KEY |
Diktat ins Suchfeld (#70, docs/stimme-und-geste.md): Transkription und Suchbegriff (MODELLE.md); ohne Schlüssel meldet der Knopf „Kein OpenAI-Schlüssel auf dem Display“ |
1. Token anlegen. In Home Assistant: Profil (unten links) → Sicherheit →
„Langlebige Zugangstoken“ → Token erstellen, Name kuechen-display. Kopieren.
2. In 1Password eintragen. In der App unter Developer → View Environments das Environment
kuechen-display anlegen oder öffnen und beide Namen mit Wert eintragen. Dann als
~/Development/kuechen-display/.env einhängen.
3. Auf den Pi bringen. Erst ohne --ja laufen lassen und die Namen lesen:
~/Development/heim-agent/deploy/pi-env-push.sh kuechen-display
Das Skript schreibt ~/kuechen-display/.env auf dem Pi (Rechte 600) und zeigt nur Namen, nie
Werte. Die Unit kuechen-dienst lädt die Datei per EnvironmentFile.
4. Ausrollen. Startet den Dienst neu, damit er die neuen Werte sieht:
pi/push.sh
Die früheren Token-Dateien unter ~/.config/kuechen-display/ (geraete-token, ha-token)
gelten weiter als Rückfall: Steht ein Name nicht in der .env, nimmt der Dienst die Datei.
Läuft alles über die .env, kann geraete-token auf dem Pi gelöscht werden.
ssh kuechen-display.local 'journalctl -u kuechen-dienst -n 30 --no-pager | grep Wetter'
Dort steht nach dem Start eine Zeile wie Wetter: 11°, Bedeckt, Bild gedaempft, danach nur
noch, wenn sich etwas ändert. Was die Seite bekommt:
ssh kuechen-display.local 'curl -sN --max-time 3 http://127.0.0.1:8080/ereignisse'
Die Werte stehen als Umgebungsvariablen im Dienst (pi/dienst/dienst.py): HA_URL,
WETTER_ENTITAET, TEMPERATUR_SENSOR, ORT, für die Termine KALENDER. Sie sind keine
Geheimnisse und gehören nicht in 1Password: ändern über einen Drop-in der Unit kuechen-dienst.
Die Termine kommen aus dem Familienkalender bei Apple über die CalDAV-Integration von Home Assistant (Festlegung 15.11.2026 in #15). Der Küchen-Dienst fragt sie mit demselben Token ab wie das Wetter, alle zwei Minuten (das Wetter alle zehn).
iCloud ──CalDAV──▶ Home Assistant calendar.family, calendar.abfall
│ Dienst calendar.get_events, heute 0 Uhr bis in sieben Tagen
▼
Küchen-Dienst pi/dienst/hass.py termine_karte: Namen der Kalender, ein Abruf für alle
pi/dienst/daten.py termine_aufbereiten: heute, morgen, Woche (reine Funktion)
│ Ereignis „termine“ über /ereignisse
▼
Kiosk-Seite „Noch heute“, „Morgen … ›“, Seite Morgen/Woche
Regeln:
KALENDER gibt die
Farbe des Punkts: der erste gelb (Family), der zweite rot (Abfall), weitere grau. Neben dem
Punkt steht der Name des Kalenders aus Home Assistant.Die iCloud-Integration in Home Assistant ist ebenfalls eingerichtet, sie ist für die
Anwesenheit da. Ihre Kalender (calendar.florianhuber_icloud_com_…) liest das Display nicht.
Prüfen:
ssh kuechen-display.local 'journalctl -u kuechen-dienst -n 30 --no-pager | grep Termine'
Dort steht eine Zeile wie Termine: heute 2, morgen 1, Woche 6.
Einstellungen (kein Geheimnis, Drop-in der Unit wie oben): KALENDER (Entitäten, durch Komma
getrennt), ZEITZONE (Vorgabe Europe/Berlin).