Kobo: mode prod (refresh 5 min, frontlight eteint, WiFi cycle + suspend)
- monitorink.sh: MONITORINK_REFRESH 30 -> 300 (5 min) - monitorinkloop.sh: frontlight_off() (ecrit 0 dans /sys/class/backlight/*), cycle WiFi (wifi_down: release-ip + disable-wifi) autour du fetch, sleep -> suspend_for (rtcwake mem) + repli sleep si la veille echoue (USB) - README: documente les reglages prod
This commit is contained in:
@@ -42,6 +42,9 @@ afin de ne pas réinventer (et risquer de casser) la gestion WiFi/suspend spéci
|
||||
## Utilisation
|
||||
- Lancer « Monitorink » depuis NickelMenu. La boucle démarre : l'écran se met à jour, puis le
|
||||
device passe en suspend et se réveille à chaque intervalle.
|
||||
- **Mode prod** (réglages par défaut) : refresh **5 min** (`MONITORINK_REFRESH=300`),
|
||||
**rétroéclairage éteint** (frontlight à 0), et **WiFi cyclé** — la radio est rallumée le
|
||||
temps du fetch puis coupée pendant le suspend `rtcwake -m mem` pour économiser la batterie.
|
||||
- Un **swipe** sur l'écran réveille le device et force un rafraîchissement.
|
||||
- Pour **arrêter** : maintenir le bouton power (le device se réveille sous Nickel).
|
||||
- Logs : `/tmp/monitorink.log` (effacés au reboot).
|
||||
@@ -49,6 +52,9 @@ afin de ne pas réinventer (et risquer de casser) la gestion WiFi/suspend spéci
|
||||
## À valider sur l'appareil (cf. plan, tâche 8)
|
||||
- Orientation framebuffer : si l'image sort tournée, soit pivoter côté serveur, soit ajouter
|
||||
`./bin/fbdepth -r 2` avant l'affichage et `-r -1` après.
|
||||
- Frontlight : `frontlight_off()` écrit 0 dans `/sys/class/backlight/*/brightness`. Vérifier
|
||||
`ls /sys/class/backlight/*/brightness` sur l'appareil et ajuster le glob si le nœud diffère.
|
||||
- Stabilité de `rtcwake -m mem` sur FW 4.38.23171 (sinon le fallback `state-extended` prend le
|
||||
relais ; en dernier recours `sleep`).
|
||||
- Cycle WiFi : confirmer qu'au réveil la reconnexion DHCP aboutit en < ~24 s (`has_ip` OK).
|
||||
- Autonomie réelle sur 24 h.
|
||||
|
||||
@@ -15,7 +15,7 @@ cd "$BASE" || exit 1
|
||||
|
||||
# --- Configuration ---
|
||||
export MONITORINK_URL="http://192.168.0.43:8899/image.png"
|
||||
export MONITORINK_REFRESH=30 # DEV: refresh rapide (repasser à 300-600 en prod)
|
||||
export MONITORINK_REFRESH=300 # PROD: refresh 5 min
|
||||
|
||||
echo "===== monitorink start $(date) =====" >> "$LOG"; sync
|
||||
|
||||
|
||||
@@ -62,6 +62,14 @@ display() {
|
||||
log "fbink rc=$?"
|
||||
}
|
||||
|
||||
frontlight_off() {
|
||||
# Éteint le rétroéclairage (frontlight). Le nœud sysfs exact dépend du modèle Kobo,
|
||||
# donc on écrit 0 dans tous les contrôleurs présents.
|
||||
for b in /sys/class/backlight/*/brightness; do
|
||||
[ -w "$b" ] && echo 0 > "$b" 2>/dev/null
|
||||
done
|
||||
}
|
||||
|
||||
suspend_for() {
|
||||
# Séquence Kobo éprouvée (trmnl-kobo) : state-extended=1 AVANT rtcwake, puis
|
||||
# suspend manuel (echo mem) si rtcwake n'a pas vraiment suspendu.
|
||||
@@ -77,9 +85,17 @@ suspend_for() {
|
||||
sleep 1; sync; sleep 2
|
||||
m_start=$(date +%s)
|
||||
echo mem > /sys/power/state 2>/dev/null
|
||||
log "echo mem elapsed=$(( $(date +%s) - m_start ))s (≈${secs}=OK, ≈0=Nickel bloque)"
|
||||
log "echo mem elapsed=$(( $(date +%s) - m_start ))s (≈${secs}=OK, ≈0=USB branché/suspend bloqué)"
|
||||
fi
|
||||
echo 0 > /sys/power/state-extended 2>/dev/null
|
||||
# Repli : si rien n'a réellement suspendu (USB branché, etc.), on attend le temps
|
||||
# restant en sleep pour ne pas boucler en continu (martèlement backend + batterie).
|
||||
total=$(( $(date +%s) - start ))
|
||||
if [ "$total" -lt "$secs" ]; then
|
||||
rem=$(( secs - total ))
|
||||
log "suspend incomplet (${total}s) -> sleep ${rem}s"
|
||||
sleep "$rem"
|
||||
fi
|
||||
}
|
||||
|
||||
has_ip() { ip addr show 2>/dev/null | grep -o 'inet [0-9.]*' | grep -qv '127.0'; }
|
||||
@@ -97,15 +113,22 @@ wifi_up() {
|
||||
return 1
|
||||
}
|
||||
|
||||
# MODE DEV : on garde le WiFi allumé (pas de disable, pas de suspend) -> fiable.
|
||||
# La gestion d'énergie (suspend + cycle WiFi avec env Nickel) sera ajoutée pour la prod.
|
||||
wifi_up
|
||||
log "ip initiale: $(ip addr show 2>/dev/null | grep -o 'inet [0-9.]*' | grep -v '127.0' | head -1)"
|
||||
wifi_down() {
|
||||
# Coupe la radio avant le suspend (helpers trmnl, env Nickel siphonné en amont).
|
||||
./scripts/release-ip.sh >/dev/null 2>&1
|
||||
./scripts/disable-wifi.sh >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# MODE PROD : frontlight éteint, WiFi cyclé (off pendant le suspend), rtcwake mem.
|
||||
frontlight_off
|
||||
|
||||
while true; do
|
||||
log "--- itération ---"
|
||||
frontlight_off # réaffirme après chaque réveil
|
||||
./scripts/ledToggle.sh on 2>/dev/null
|
||||
|
||||
wifi_up
|
||||
|
||||
if fetch; then
|
||||
log "fetch OK ($(wc -c < "$TMP" 2>/dev/null) octets)"
|
||||
display
|
||||
@@ -123,5 +146,6 @@ while true; do
|
||||
fi
|
||||
|
||||
./scripts/ledToggle.sh off 2>/dev/null
|
||||
sleep "$REFRESH"
|
||||
wifi_down # coupe la radio avant le suspend
|
||||
suspend_for "$REFRESH" # rtcwake -m mem, WiFi éteint pendant ~5 min
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user