Files
Monitorink/kobo/monitorink.sh
jerem 88569f533b 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
2026-06-15 16:41:31 +02:00

64 lines
2.8 KiB
Bash
Executable File

#!/bin/sh
# Monitorink — point d'entrée lancé par NickelMenu.
#
# Prend le contrôle complet de l'appareil en TUANT Nickel (sinon Nickel auto-suspend
# l'appareil et coupe le WiFi, en conflit avec notre boucle). On siphonne d'abord les
# variables d'environnement WiFi de Nickel (WIFI_MODULE/PLATFORM/INTERFACE) pour pouvoir
# gérer le WiFi nous-mêmes. À l'arrêt (entrée « Monitorink STOP »), on REBOOT pour
# restaurer Nickel et l'usage normal de la liseuse.
export LC_ALL="en_US.UTF-8"
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
BASE="/mnt/onboard/.adds/Monitorink"
LOG="$BASE/monitorink.log"
cd "$BASE" || exit 1
# --- Configuration ---
export MONITORINK_URL="http://192.168.0.43:8899/image.png"
export MONITORINK_REFRESH=300 # PROD: refresh 5 min
echo "===== monitorink start $(date) =====" >> "$LOG"; sync
# --- Gouverneur CPU économe ---
CPUFREQ="/sys/devices/system/cpu/cpufreq/policy0"
[ -d "$CPUFREQ" ] || CPUFREQ="/sys/devices/system/cpu/cpu0/cpufreq"
if grep -q ondemand "$CPUFREQ/scaling_available_governors" 2>/dev/null; then
echo ondemand > "$CPUFREQ/scaling_governor" 2>/dev/null
fi
# --- Prendre le contrôle : siphonner l'env Nickel (WiFi) puis tuer Nickel ---
if pkill -0 nickel 2>/dev/null; then
NICKEL_PID="$(pidof -s nickel)"
if [ -n "$NICKEL_PID" ]; then
NENV=$(tr '\0' '\n' < "/proc/$NICKEL_PID/environ" 2>/dev/null \
| grep -E '^(WIFI_MODULE|INTERFACE|NICKEL_HOME|DBUS_SESSION_BUS_ADDRESS|LANG|PLATFORM|PRODUCT)=')
[ -n "$NENV" ] && export $NENV
fi
UDEV_PID="$(pidof -s udevd)"
if [ -n "$UDEV_PID" ]; then
[ -z "$PRODUCT" ] && { V=$(tr '\0' '\n' < "/proc/$UDEV_PID/environ" 2>/dev/null | grep -E '^PRODUCT='); [ -n "$V" ] && export $V; }
[ -z "$PLATFORM" ] && { V=$(tr '\0' '\n' < "/proc/$UDEV_PID/environ" 2>/dev/null | grep -E '^PLATFORM='); [ -n "$V" ] && export $V; }
fi
[ -z "$INTERFACE" ] && export INTERFACE="eth0"
echo "[monitorink] WIFI_MODULE=$WIFI_MODULE PLATFORM=$PLATFORM INTERFACE=$INTERFACE PRODUCT=$PRODUCT" >> "$LOG"; sync
sync
killall -q -TERM nickel hindenburg sickel fickel fontickel adobehost foxitpdf iink dhcpcd-dbus dhcpcd 2>/dev/null
t=0; while pkill -0 nickel 2>/dev/null; do [ "$t" -ge 16 ] && break; usleep 250000; t=$((t + 1)); done
rm -f /tmp/nickel-hardware-status
fi
[ -z "$INTERFACE" ] && export INTERFACE="eth0"
# Synchronise l'horloge RTC (sinon rtcwake calcule mal le réveil).
hwclock -w -u 2>/dev/null
# Watcher triple-tap -> reboot (en arrière-plan, écran tactile libre car Nickel est mort).
sh "$BASE/reboot_watcher.sh" &
# Boucle bloquante. À la sortie (STOP tue monitorinkloop.sh), on reboot pour restaurer Nickel.
sh "$BASE/monitorinkloop.sh" >> "$LOG" 2>&1
echo "===== monitorink stop $(date) — reboot =====" >> "$LOG"; sync
sleep 1
reboot