Commit Graph

23 Commits

Author SHA1 Message Date
jerem
ca4febbc44 Refresh e-ink: multi-régions + full toutes les 2h (basé temps)
Le full refresh apparaissait trop souvent: getbbox() renvoyait un seul
rectangle englobant tous les pixels modifiés, donc météo (haut) + heure de
MaJ (ailleurs) qui changeaient au même cycle produisaient un rectangle
quasi plein écran -> ratio > partial_max_ratio -> full forcé.

- frame.py: détection des bandes horizontales modifiées disjointes
  (_changed_regions), refresh partiel serré par zone. Full basé sur le
  temps écoulé (last_full_at + time.monotonic) au lieu d'un compteur de
  cycles. État pngs/regions en liste, get_png(client, region).
- config.py: full_refresh_interval_minutes (MONITORINK_FULL_INTERVAL_MIN,
  défaut 120). Suppression de partial_max_ratio.
- app.py: /frame.meta renvoie un bloc multi-ligne "MODE SEQ N" + N régions
  "i x y w h"; /frame.png?region=i.
- monitorinkloop.sh: display_meta parse le bloc et fait N fbink partiels.
2026-06-16 14:06:49 +02:00
jerem
85edb5d14c Dashboard: jauges en sens intuitif (noir = consommé qui se remplit, blanc = restant)
Le remplissage noir partait du restant -> une barre quasi pleine se lisait à tort
comme « épuisé ». Le noir représente désormais la conso (gauche->droite), le blanc à
droite = budget restant ; le repère ▼ marque la ligne d'alerte (80 % conso = 20 % rest.).
2026-06-15 23:04:45 +02:00
jerem
3782738d57 Dashboard: refonte design « instrument 1-bit » (jauges graduées, polices vendorisées, glyphes météo)
- Identité noir & blanc pur (zéro gris, anti-ghosting e-ink) ; hachures pour conso/alarme
- Typo vendorisée : Archivo (mots) + JetBrains Mono (nombres tabulaires), @font-face base64
- Jauge signature : noir = restant, repère seuil 20 %, hachures sous le seuil
- Météo : glyphes 1-bit en silhouette (weather.kind) au lieu d'emoji couleur
- Layout rééquilibré (plus de débordement), états dégradés soignés
- dev/preview.py : aperçu hors-ligne du template
2026-06-15 22:56:56 +02:00
jerem
0f6286c154 claude_usage: backoff après échec de refresh OAuth (anti-429)
Token expiré -> refresh tenté à chaque rendu, échec non mémorisé -> on martelait
platform.claude.com et le 429 s'entretenait. On impose désormais un backoff de 5 min
après un refresh échoué (et sur la voie de refresh forcé 401), pendant lequel on sert
la dernière valeur connue au lieu de re-tenter.
2026-06-15 19:50:52 +02:00
jerem
5925b0f9d2 Reboot Kobo: 3 appuis bouton de page (evdev EV_KEY) au lieu du triple-tap tactile
L'ancien triple-tap via finger_trace dessinait des points noirs (outil de demo
FBInk), ne respawnait pas (mort definitif si le process tombait) et le tactile ne
reveille pas l'appareil. Le power, lui, n'emet que des scancodes MSC_SCAN parasites
(etat de charge USB). Les boutons de page emettent des EV_KEY propres (codes 193/194).

reboot_watcher.sh: lit l'evdev (FD persistant, pas de perte d'evenements), declenche
sur 3 press EV_KEY < 3 s, boucle de respawn. Plus de finger_trace.

Refresh: full force au (re)demarrage (reset=1 cote client -> oubli de prev_image cote
serveur) pour eviter un refresh partiel pose sur un ecran efface par le reboot.
2026-06-15 19:38:15 +02:00
jerem
c7395d1c37 Refresh partiel e-ink : ne redessine que la zone changée, full refresh ~1h
Backend : endpoints /frame.meta (ligne 'MODE X Y W H SEQ') + /frame.png qui
servent un crop de la zone modifiée (diff PIL par client) ou l'image pleine.
Full refresh forcé tous les N cycles (MONITORINK_FULL_EVERY=12, ~1h) ou si la
zone change sur plus de 60% de l'écran. Mode 'noop' quand rien ne change.

Anti-429 : l'usage Claude est mis en cache (MONITORINK_USAGE_TTL=120s) avec
repli sur la dernière valeur connue en cas d'erreur transitoire.

Kobo : monitorinkloop.sh récupère meta puis png et fait un fbink partiel
(-g file=,x=,y=) sans flash, full refresh (-c -f) en mode full. Refresh 5 min.
2026-06-15 18:42:32 +02:00
jerem
ce20d3675d Dashboard: retire l'heure/date, remonte meteo + NAS en haut de colonne gauche 2026-06-15 17:20:14 +02:00
jerem
c4011bef0b Dashboard: retire "Abonnement" devant Claude (titre = Claude . Max 5x) 2026-06-15 17:15:54 +02:00
jerem
ba7ea0af3f Affiche la batterie de la Kobo (push via params /image.png) en pied de page 2026-06-15 16:01:09 +02:00
jerem
0178f596ef Codex: vraies jauges 5h/hebdo via wham/usage (token Hermes monte ro) 2026-06-15 15:49:58 +02:00
jerem
319ff3f552 Ajout section Codex (conso 7j + statut limite) via dashboard Hermes 2026-06-15 15:27:13 +02:00
jerem
3191720776 NAS: retirer les soulignements par ligne (moins charge) 2026-06-15 15:07:06 +02:00
jerem
fc4f0efd20 NAS: deplacer le bloc sous la meteo (colonne gauche) 2026-06-15 15:02:18 +02:00
jerem
ca8f725b3a Ajout section NAS (disques, docker, port VPN) via nas_monitor /api/status 2026-06-15 14:58:56 +02:00
jerem
8dad6454f5 Extra usage: montants en euros (centimes/100), affiche utilise / plafond mensuel 2026-06-15 14:51:27 +02:00
jerem
ec1c8226a7 Extra usage: afficher le restant en priorite (restant / utilise / plafond) 2026-06-15 14:41:06 +02:00
jerem
56f71c0ea6 Affichage paysage: canevas 1680x1264, rotation 90deg, layout 2 colonnes 2026-06-15 14:33:05 +02:00
7e2df79499 Reboot par triple-tap (finger_trace) + indice pied de page 2026-06-15 14:03:12 +02:00
1b42e54465 Barres: afficher le % utilisé (barre se remplit a l'usage) au lieu du restant 2026-06-15 12:09:40 +02:00
80c8d0ac93 Affichage des crédits extra_usage + parser validé contre réponse réelle 2026-06-15 11:08:10 +02:00
74d33eb693 Claude: passage au login isolé + refresh (scope user:profile requis par /usage) 2026-06-15 11:03:51 +02:00
789fc92c39 Orthographe: mois en minuscule dans l'en-tête 2026-06-15 10:52:44 +02:00
bc4cf89a4b Backend Monitorink: serveur PNG (Claude usage + météo + HA) 2026-06-15 10:49:31 +02:00