Files
epaper-dashboard/RECOVERY.md
T
Patrik 5e98b71b82 DOCS-SYNC: README + RECOVERY + NETATMO.md aktualisiert, CHANGELOG neu
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
2026-08-31 01:03:26 +02:00

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-Name netplan-wlan0-IoT
  • Recovery-AP-Test über nmcli device wifi hotspot hat einen WLAN-Hotspot epaper-test gestartet
  • Dies hat wahrscheinlich die WLAN-Verbindung zum Heimnetz unterbrochen
  • SSH-Connect zum Pi schlägt jetzt fehl (Timeout)

Sofortige Hilfe

Option A: Strom-Reset

  1. Pi vom Strom trennen
  2. 10 Sekunden warten
  3. Strom wieder rein
  4. Pi bootet → NetworkManager verbindet sich automatisch mit IoT (sofern in Reichweite)
  5. Nach ~60 Sekunden: ssh koptikp@10.11.3.144 sollte wieder gehen

Option B: Recovery-Hotspot

Falls Strom-Reset nicht hilft (z.B. weil Profil netplan-wlan0-IoT kaputt ist):

  1. Auf dem Laptop WLAN-Liste scannen
  2. epaper-recovery suchen (Passwort recovery1234) — falls der Pi im Recovery-Modus ist oder
  3. epaper-test suchen (Passwort test1234) — falls der Test-Hotspot noch läuft
  4. Verbinden, dann im Browser http://10.42.0.1:8080
  5. Bei Auth-Prompt: admin:changeme123 (oder admin:admin)
  6. Im Netzwerk-Panel: WLAN neu konfigurieren oder "Force AP Mode" / "Disconnect"

Option C: Tastatur + Monitor

  1. HDMI + USB-Tastatur an den Pi
  2. Anmelden als koptikp
  3. sudo nmcli connection show → sehen was aktiv ist
  4. sudo nmcli connection down epaper-test (oder welcher Müll-Profile da sind)
  5. sudo nmcli connection delete epaper-test
  6. sudo nmcli connection up netplan-wlan0-IoT
  7. sudo 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 polkitd SIGHUP 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

  1. Browser: http://<pi>:8080/power (oder http://10.42.0.1:8080/power im Recovery-AP)
  2. Klick auf Display wecken — triggert POST /api/wake, Dashboard-Refresh startet sofort
  3. 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.