README.md: - Architektur-Diagramm: clock_wordclock + netatmo ergaenzt - Neue Sektion 'Shared Foundation' (palette.py + plugins/base.py) - Neue Sektion 'DeepSleep / Energie' (Weckzeiten, CPU-Throttle, /power Route) - Plugin-Tabelle korrigiert: alle Config-Felder auf aktuellen Stand (system: show_uptime/show_load/compact, strava: client_id/secret/refresh_token, spotify: Last.fm statt Spotify API, gmail: oauth_token_json, minimax: subscription_key, netatmo: client_id/secret/refresh_token) - Eigenes-Plugin-Sektion: Hinweis auf shared helper-Nutzung - Quick-Start config.json mit power-Block-Beispiel RECOVERY.md: - Neue Sektion 'Display-Refresh aus Admin-UI erzwingen' (POST /api/wake) - Neue Sektion 'DeepSleep-Fehlkonfiguration' (manueller Fix via SSH/Recovery-AP) plugins/NETATMO.md: - Sektion 3: Slot-Tabelle aktualisiert (compact / compact_2x2 / full_4x4) - Neues V1-Status-Update ASCII-Layout mit allen Sektionen - Design-Regeln explizit aufgelistet - Sektion 4 Optionen auf aktuellen Stand (refresh_token statt username/password, show_forecast statt show_secondary/show_compass, bar_gradient weg) - Sektion 6 Technische Details: Forecast-Quelle Open-Meteo, neue interne Methoden (_render_compact_2x2, _render_full_4x4, _get_12h_history, _get_forecast), shared helper explizit aufgelistet CHANGELOG.md (neu): - Keep-a-Changelog-Format mit [Unreleased] fuer aktuelle Aenderungen - FEAT-DEEPSLEEP + FEAT-NETATMO-06 + REFACTOR-PLUGINS dokumentiert - 'Earlier' Sektion mit letztem Git-Log der NETATMO-Iterationen
3.2 KiB
3.2 KiB
Recovery wenn der Pi nicht mehr per SSH erreichbar ist
Was passiert ist
- Auf dem Pi lief ein WLAN mit SSID
IoT, Profil-Namenetplan-wlan0-IoT - Recovery-AP-Test über
nmcli device wifi hotspothat einen WLAN-Hotspotepaper-testgestartet - Dies hat wahrscheinlich die WLAN-Verbindung zum Heimnetz unterbrochen
- SSH-Connect zum Pi schlägt jetzt fehl (Timeout)
Sofortige Hilfe
Option A: Strom-Reset
- Pi vom Strom trennen
- 10 Sekunden warten
- Strom wieder rein
- Pi bootet → NetworkManager verbindet sich automatisch mit
IoT(sofern in Reichweite) - Nach ~60 Sekunden:
ssh koptikp@10.11.3.144sollte wieder gehen
Option B: Recovery-Hotspot
Falls Strom-Reset nicht hilft (z.B. weil Profil netplan-wlan0-IoT kaputt ist):
- Auf dem Laptop WLAN-Liste scannen
epaper-recoverysuchen (Passwortrecovery1234) — falls der Pi im Recovery-Modus ist oderepaper-testsuchen (Passworttest1234) — falls der Test-Hotspot noch läuft- Verbinden, dann im Browser http://10.42.0.1:8080
- Bei Auth-Prompt:
admin:changeme123(oderadmin:admin) - Im Netzwerk-Panel: WLAN neu konfigurieren oder "Force AP Mode" / "Disconnect"
Option C: Tastatur + Monitor
- HDMI + USB-Tastatur an den Pi
- Anmelden als
koptikp sudo nmcli connection show→ sehen was aktiv istsudo nmcli connection down epaper-test(oder welcher Müll-Profile da sind)sudo nmcli connection delete epaper-testsudo nmcli connection up netplan-wlan0-IoTsudo reboot
Was ich anders machen würde
- Hotspot-Tests nie auf einem produktiven Pi laufen lassen, ohne physischen Zugang als Fallback zu haben
- Watchdog-Code war korrekt; das Problem ist die PolicyKit-Konfiguration
- Polkit-Restart nach Rule-Update: besser nur
polkitdSIGHUP schicken, nicht systemctl restart (das hat in dieser Session offenbar den Polkit-Daemon in einem inkonsistenten Zustand hinterlassen)
Display-Refresh aus Admin-UI erzwingen
Falls das Display im DeepSleep-Modus ist (z.B. ausserhalb der Weckzeiten) und du es manuell wecken willst, ohne den Pi neu zu starten:
Option 1: Admin-UI Energie-Tab
- Browser:
http://<pi>:8080/power(oderhttp://10.42.0.1:8080/powerim Recovery-AP) - Klick auf Display wecken — triggert
POST /api/wake, Dashboard-Refresh startet sofort - CPU-Throttle wird automatisch deaktiviert, Display rendert, geht zurück in Sleep
Option 2: Per curl direkt
curl -X POST http://<pi>:8080/api/wake
# Response: {"ok": true, "woken_at": "2026-08-31T00:42:13"}
Das funktioniert auch im Recovery-AP-Modus (10.42.0.1) — solange der Admin-Service läuft.
DeepSleep-Fehlkonfiguration
Wenn wake_times so gesetzt ist, dass das Display nie aufwacht (z.B. leere Liste
oder Einträge in der Vergangenheit), bleibt das Dashboard dauerhaft im Sleep:
# SSH-Zugang nötig (koptikp)
ssh koptikp@<pi>
# config.json direkt editieren:
nano /home/koptikp/.hermes/projects/pi/config.json
# → "deepsleep_enabled": false setzen
# → "wake_times": ["07:00", "12:00", "18:00"] setzen
# Service neu starten:
systemctl --user restart epaper-dashboard
Alternativ über die Recovery-AP: http://10.42.0.1:8080/power → DeepSleep deaktivieren.