# 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.