Hermes
fe1c06b306
FEAT-NETATMO-02: Komplettes Redesign auf 4x4 WarmNews-Layout
...
* Indoor: 5 Sensoren (1x Main + 4x NAModule4) prominent mit Tag, Temp, CO2-Bar
* Outdoor: Big-Temp + 12h-Verlaufsgraph + Min/Max/Luftfeuchte
* Wind/Regen: je mit Mini-Verlauf + 1h/24h-Bars
* Forecast: 3 Tage mit Min/Max + Regen-Bar
* Batterie-Indikatoren mit %-Anzeige an Aussen, Wind, Regen und allen 5 Indoor-Sensoren
* CO2-Bars mit ppm-Wert + Grün/Gelb/Rot-Schwellen
* Sans-Schrift only, WarmNews-Farbpalette (warm-weiss, Tinte-schwarz, Akzent-Farben)
* Subtile Box-Rahmen + Accent-Strips für visuelle Trennung
designbase.py neu hinzugefügt als Template-Modul.
tools/netatmo_auth.py: Auth-Flow leicht angepasst (Redirect-URI auf Pi-IP statt localhost).
2026-08-29 20:24:03 +04:00
hermes
9b91598f5b
FIX-NETATMO-01: Netatmo-Plugin an 2025-API anpassen + /config-Bug fixen
...
Netatmo hat 2025 den OAuth-Password-Grant komplett abgeschaltet.
Auth-Flow ist jetzt nur noch Authorization Code + Refresh-Token.
Ausserdem Domain-Migration api.netatmo.net → api.netatmo.com mit
Azure-Front-Door-WAF die form-urlencoded POSTs blockt.
Plugin (plugins/netatmo.py):
- URLs auf api.netatmo.com umgestellt
- _post_form sendet JSON statt form-urlencoded (umgeht WAF)
- _obtain_tokens nutzt nur noch Refresh-Token-Grant
- fetch() zeigt klare Fehlermeldung wenn refresh_token fehlt
- config_schema: username/password → refresh_token
- Bessere Fehlertexte (zeigt 'tools/netatmo_auth.py erneut ausführen')
Helper (tools/netatmo_auth.py):
- Lokaler HTTP-Server auf 0.0.0.0:8765 fuer Authorization-Code-Callback
- Erkennt LAN-IP automatisch
- Erkennt Chromium auf dem Pi (Display :0) fuer localhost-Redirect
- Tauscht Code gegen Access+Refresh Token via api.netatmo.com
- Schreibt refresh_token in config.json unter plugin_configs.netatmo
Bug-Fix /config:
- AttributeError: module 'dashboard' has no attribute 'SLOTS'
- legacy v1 slot-logik entfernt (nutzt nicht mehr dashboard_mod.SLOTS)
- /config macht jetzt NUR noch refresh_interval_s speichern
- Slot-Belegung laeuft seit v2 ueber /api/layout (drag&drop)
2026-08-29 19:06:10 +04:00
hermes
25b0432757
FEAT-NETATMO-01: Netatmo Weather Station Plugin
...
OAuth2 Password-Grant + Refresh-Token on-the-fly. Holt sich automatisch
einen neuen Access-Token wenn der alte abläuft (3h Gültigkeit).
Module: NAMain (Indoor), NAModule1 (Outdoor), NAModule2 (Wind),
NAModule3 (Regen), NAModule4 (Extra Indoor).
Slot-responsive:
1x1 — Outdoor-Temp prominent + Mini-Status
4x1 — Indoor | Outdoor | Wind/Regen kompakt (3 Spalten)
1x4 — Vertikale Liste aller Module
2x2 — Indoor-Card (mit CO2-Bar) + Outdoor-Card + Wind/Regen-Bereich
4x4 — Volle Ansicht mit Min/Max, Windrose, Timestamps
Config-Optionen:
client_id/client_secret/username/password (secrets via Admin-UI)
station_filter (substring-match für Multi-Setup)
show_indoor/outdoor/wind/rain/compass/secondary (bools)
co2_thresholds (ppm, default ok@600,warn@1000,alert@1500)
temp_unit (C/F), wind_unit (kmh/ms)
Plus:
- plugins/NETATMO.md: vollständige Doku (Setup, Optionen, Diagnose)
- config.netatmo.example.json: copy-paste Beispiel-Config
- layout.py: netatmo default-size = 4x4 (4 Sub-Cards brauchen Platz)
- README.md: Plugin-Tabelle erweitert
Verifiziert: /api/plugins.json listet netatmo, Auto-Loader erkennt es,
Admin-UI zeigt das Config-Form.
2026-08-29 18:35:29 +04:00
hermes
8f3480ee2e
FIX-CFG-01: Unchecked checkbox → False (statt Wert beibehalten)
...
Bug: Wenn ein User eine Bool-Checkbox unchecked ließ, sendete der
Browser das Form-Field gar nicht. /api/plugin_config und /plugins/<idx>
machten 'continue' und überschrieben den alten True-Wert nie.
Fix: Bei ftype=bool und form_val=None explizit new_cfg[key] = False setzen.
Betrifft z.B. clock_wordclock.show_date/show_weekday/show_es_ist.
2026-08-29 18:35:24 +04:00
hermes
d71b17d5c9
FIX-WC-01: WordClock Redesign - 3 klare Zonen ohne Überlappung
...
Vorher: 11x8-Grid mit starrem Layout, viele Buchstaben-Cluster überlappten
sich gegenseitig, Stunden-Pixel-Font war unleserlich klein/groß gemischt.
Nachher: QlockTwo-inspiriertes Layout in 3 diskreten Zonen:
- Header (Wochentag + Datum, accent, klein)
- Wort-Grid (ES IST + Minuten-Phrase in einer sauberen Zeile)
- Stunden-Block (Stunde in großer Aldrich-Schrift)
Plus:
- Minuten-Dots oben rechts (QlockTwo-typisch: ●●●● für Sektor-Offset)
- Bug-Fix: font_key-Fallback überspringt 'clock'-Pixel-Font
- Bug-Fix: 12/24h Stunden-Mapping für Wortuhr (16:30 = 'halb fünf' → FÜNF)
- Neue Option 'show_es_ist' zum Ein-/Ausblenden des 'ES IST'-Prefixes
- Slot-size-aware: 1x1 single-line, 2x2/4x4 zones, small fallback < 240x140
Verifiziert auf Pi-Display: 'VIERTEL NACH VIER' / 'HALB FÜNF' rendern sauber.
2026-08-29 18:35:20 +04:00