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.
77 lines
4.3 KiB
Markdown
77 lines
4.3 KiB
Markdown
# Client Kobo — Monitorink
|
|
|
|
Affiche le dashboard Monitorink (`/image.png`) sur une **Kobo Libra 2** (FW 4.38.x) déjà
|
|
équipée de **NickelMenu**. Approche : boucle WiFi → fetch image → `fbink` → suspend `rtcwake`.
|
|
|
|
Ces scripts sont un **overlay** : ils réutilisent les binaires ARM et les helpers WiFi
|
|
pré-compilés/éprouvés du projet [`usetrmnl/trmnl-kobo`](https://github.com/usetrmnl/trmnl-kobo),
|
|
afin de ne pas réinventer (et risquer de casser) la gestion WiFi/suspend spécifique au matériel.
|
|
|
|
## Contenu de ce dossier
|
|
- `monitorink.sh` — point d'entrée (lancé par NickelMenu).
|
|
- `monitorinkloop.sh` — boucle d'affichage (réutilise `bin/` et `scripts/` de trmnl-kobo).
|
|
- `nm/monitorink` — entrée NickelMenu.
|
|
|
|
## Installation (Kobo branchée en USB)
|
|
|
|
1. **Récupérer les binaires + helpers WiFi** depuis trmnl-kobo :
|
|
```sh
|
|
git clone https://github.com/usetrmnl/trmnl-kobo
|
|
```
|
|
On a besoin de `src/TRMNL/bin/` (fbink, fbdepth, busybox_kobo) et `src/TRMNL/scripts/`
|
|
(enable-wifi.sh, disable-wifi.sh, force-wifi-connection.sh, obtain-ip.sh, release-ip.sh,
|
|
ledToggle.sh, getrssi.sh).
|
|
|
|
2. **Construire le dossier Monitorink** sur la Kobo, à
|
|
`/mnt/onboard/.adds/Monitorink/` :
|
|
```
|
|
Monitorink/
|
|
monitorink.sh (ce repo)
|
|
monitorinkloop.sh (ce repo)
|
|
bin/ (copié depuis trmnl-kobo/src/TRMNL/bin/)
|
|
scripts/ (copié depuis trmnl-kobo/src/TRMNL/scripts/)
|
|
```
|
|
|
|
3. **Entrée NickelMenu** : copier `nm/monitorink` dans `/mnt/onboard/.adds/nm/monitorink`.
|
|
|
|
4. **Configurer l'URL** dans `monitorink.sh` (`MONITORINK_URL`) et l'intervalle
|
|
(`MONITORINK_REFRESH`, en secondes).
|
|
|
|
5. **Éjecter proprement** la Kobo → l'entrée « Monitorink » apparaît dans NickelMenu.
|
|
|
|
## 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.
|
|
- **Redémarrer / restaurer Nickel** : **3 appuis rapides (< 3 s) sur un bouton de page**
|
|
(frontal). `reboot_watcher.sh` lit l'evdev et déclenche un reboot logiciel propre sur 3 press
|
|
EV_KEY (codes 193/194). Sur **batterie** le device est en suspend profond et les boutons
|
|
frontaux ne le réveillent pas : faire d'abord **un appui power** (réveil), puis les 3 appuis
|
|
dans la fenêtre d'éveil. Filet de secours : appui power **long** = reboot matériel.
|
|
- Pourquoi pas le bouton power directement : sur ce Kobo (mx6sll) le power n'émet que des
|
|
scancodes bruts `MSC_SCAN`, parasités par l'état de charge USB (peu fiable). Les boutons
|
|
frontaux émettent des `EV_KEY` propres.
|
|
- `reboot_watcher.sh` tourne en arrière-plan avec une boucle de respawn (il ne reste jamais
|
|
mort). Calage/debug : lancer avec `MONITORINK_PWR_DEBUG=1` pour logger chaque évènement
|
|
(`type/code/val`), puis repasser à `0`.
|
|
- `finger_trace` (ancien déclencheur triple-tap tactile) n'est **plus utilisé** : on peut le
|
|
retirer de `bin/fbink/`.
|
|
- Logs : `/tmp/monitorink.log` (effacés au reboot).
|
|
|
|
## À 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).
|
|
- Boutons (reboot) : sur ce Kobo, `find_button_dev` retient `/dev/input/event3` et les boutons
|
|
de page émettent `EV_KEY` codes 193/194 (struct `input_event` 16 o). Sur un autre modèle,
|
|
recaler via `MONITORINK_PWR_DEBUG=1` (codes/format dans le log). **Sur batterie**, vérifier
|
|
le geste réveil-power → 3 appuis frontaux dans la fenêtre d'éveil (les frontaux ne réveillent
|
|
pas du suspend).
|
|
- Autonomie réelle sur 24 h.
|