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.
This commit is contained in:
@@ -95,14 +95,11 @@ class Config:
|
||||
)
|
||||
|
||||
# --- Refresh partiel e-ink (endpoints /frame.*) ---
|
||||
# Un full refresh est forcé tous les N cycles pour effacer le ghosting (1=toujours full).
|
||||
# En prod 12 (~1 h à 5 min/cycle) ; en dev on descend à 2 (~1 min à 30 s/cycle).
|
||||
full_refresh_every: int = field(
|
||||
default_factory=lambda: int(_get("MONITORINK_FULL_EVERY", "12"))
|
||||
)
|
||||
# Si la zone modifiée dépasse cette fraction de l'écran, on bascule en full (partiel inutile).
|
||||
partial_max_ratio: float = field(
|
||||
default_factory=lambda: float(_get("MONITORINK_PARTIAL_MAX_RATIO", "0.6"))
|
||||
# Un full refresh (flash, efface le ghosting) est forcé au 1er lancement/reset puis toutes les
|
||||
# N minutes — indépendamment du cycle Kobo. Entre deux, on ne fait que des partiels serrés sur
|
||||
# les zones réellement modifiées. En dev on descend à 1-2 min pour tester rapidement.
|
||||
full_refresh_interval_minutes: int = field(
|
||||
default_factory=lambda: int(_get("MONITORINK_FULL_INTERVAL_MIN", "120"))
|
||||
)
|
||||
|
||||
@property
|
||||
|
||||
Reference in New Issue
Block a user