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.
This commit is contained in:
@@ -88,6 +88,22 @@ class Config:
|
||||
cache_ttl_seconds: int = field(
|
||||
default_factory=lambda: int(_get("MONITORINK_CACHE_TTL", "120"))
|
||||
)
|
||||
# Intervalle mini entre deux appels réels à l'endpoint /usage de Claude (rate-limité).
|
||||
# Indépendant de la cadence de rendu : protège du 429 quand on rend souvent (dev 30 s).
|
||||
usage_ttl_seconds: int = field(
|
||||
default_factory=lambda: int(_get("MONITORINK_USAGE_TTL", "120"))
|
||||
)
|
||||
|
||||
# --- 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"))
|
||||
)
|
||||
|
||||
@property
|
||||
def ha_entities(self) -> list[HAEntity]:
|
||||
|
||||
Reference in New Issue
Block a user