#!/bin/sh # Monitorink — boucle d'affichage e-ink sur Kobo Libra 2. # # Overlay sur https://github.com/usetrmnl/trmnl-kobo : réutilise ses binaires ARM # (bin/fbink, bin/busybox_kobo) et ses helpers WiFi (scripts/*.sh). On remplace l'appel # API TRMNL par un simple fetch de notre image de dashboard. # Lancé par monitorink.sh (via NickelMenu). Logs -> ../monitorink.log BASE="$(dirname "$0")" cd "$BASE" || exit 1 IMAGE_URL="${MONITORINK_URL:-https://monitorink.homelab.nestor-server.fr/image.png}" REFRESH="${MONITORINK_REFRESH:-600}" TMP="/tmp/monitorink.png" FBINK="./bin/fbink/fbink" BUSYBOX="./bin/busybox_kobo" log() { echo "[$(date '+%H:%M:%S')] $*"; } # Ferme les FD hérités pour ne pas bloquer l'éjection USB. exec 3>&- 2>/dev/null log "boucle démarrée — BASE=$BASE URL=$IMAGE_URL refresh=${REFRESH}s" log "fbink présent: $([ -x "$FBINK" ] && echo oui || echo NON) ; busybox: $([ -x "$BUSYBOX" ] && echo oui || echo NON)" display() { "$FBINK" -g file="$TMP",valign=CENTER,halign=CENTER -c -f log "fbink rc=$?" } suspend_for() { secs="$1" start=$(date +%s) "$BUSYBOX" rtcwake -a -s "$secs" -m mem 2>/dev/null end=$(date +%s) if [ $((end - start)) -lt 10 ]; then log "rtcwake fallback (state-extended)" echo 1 > /sys/power/state-extended 2>/dev/null sleep 2 echo mem > /sys/power/state 2>/dev/null echo 0 > /sys/power/state-extended 2>/dev/null now=$(date +%s) [ $((now - start)) -lt 10 ] && { log "suspend KO -> sleep $secs"; sleep "$secs"; } fi } while true; do log "--- itération ---" ./scripts/ledToggle.sh on 2>/dev/null log "wifi: enable" ./scripts/enable-wifi.sh >/dev/null 2>&1 ./scripts/force-wifi-connection.sh >/dev/null 2>&1 ./scripts/obtain-ip.sh >/dev/null 2>&1 log "ip: $(ip addr show 2>/dev/null | grep -o 'inet [0-9.]*' | grep -v '127.0' | head -1)" if curl -fsSL -m 30 -o "$TMP" "$IMAGE_URL"; then log "curl OK ($(wc -c < "$TMP" 2>/dev/null) octets)" display else log "curl ECHEC (rc=$?)" "$FBINK" -pmh "Monitorink : image indisponible ($(date '+%H:%M'))" fi ./scripts/release-ip.sh >/dev/null 2>&1 ./scripts/disable-wifi.sh >/dev/null 2>&1 ./scripts/ledToggle.sh off 2>/dev/null log "suspend ${REFRESH}s" suspend_for "$REFRESH" done