Client Kobo (overlay trmnl-kobo) + README + sonde usage
This commit is contained in:
67
kobo/monitorinkloop.sh
Executable file
67
kobo/monitorinkloop.sh
Executable file
@@ -0,0 +1,67 @@
|
||||
#!/bin/sh
|
||||
# Monitorink — boucle d'affichage e-ink sur Kobo Libra 2.
|
||||
#
|
||||
# Conçu comme un OVERLAY sur un checkout de https://github.com/usetrmnl/trmnl-kobo :
|
||||
# il réutilise ses binaires ARM pré-compilés (bin/fbink, bin/busybox_kobo) et ses
|
||||
# helpers WiFi éprouvés (scripts/enable-wifi.sh, etc.). On remplace l'appel API TRMNL
|
||||
# par un simple fetch de notre image de dashboard.
|
||||
#
|
||||
# Lancé par monitorink.sh (lui-même lancé via NickelMenu).
|
||||
# ⚠️ La séquence suspend/rtcwake est à valider sur l'appareil (FW 4.38.23171).
|
||||
|
||||
BASE="$(dirname "$0")"
|
||||
cd "$BASE" || exit 1
|
||||
|
||||
IMAGE_URL="${MONITORINK_URL:-http://monitorink.homelab.nestor-server.fr/image.png}"
|
||||
REFRESH="${MONITORINK_REFRESH:-600}" # secondes entre deux rafraîchissements
|
||||
TMP="/tmp/monitorink.png"
|
||||
|
||||
FBINK="./bin/fbink/fbink"
|
||||
BUSYBOX="./bin/busybox_kobo"
|
||||
|
||||
# Ferme les FD hérités pour ne pas bloquer l'éjection USB.
|
||||
exec 3>&- 2>/dev/null
|
||||
|
||||
display() {
|
||||
# Affiche l'image plein écran, full refresh (-f) anti-ghosting, clear (-c) avant.
|
||||
"$FBINK" -g file="$TMP",valign=CENTER,halign=CENTER -c -f
|
||||
}
|
||||
|
||||
suspend_for() {
|
||||
# Suspend-to-RAM avec réveil RTC. Si rtcwake échoue (retour < 10 s), fallback
|
||||
# séquence Kobo (state-extended) puis sleep en dernier recours.
|
||||
secs="$1"
|
||||
start=$(date +%s)
|
||||
"$BUSYBOX" rtcwake -a -s "$secs" -m mem 2>/dev/null
|
||||
end=$(date +%s)
|
||||
if [ $((end - start)) -lt 10 ]; then
|
||||
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
|
||||
# Si même ça n'a pas tenu, on dort simplement.
|
||||
now=$(date +%s)
|
||||
[ $((now - start)) -lt 10 ] && sleep "$secs"
|
||||
fi
|
||||
}
|
||||
|
||||
while true; do
|
||||
./scripts/ledToggle.sh on 2>/dev/null
|
||||
|
||||
# WiFi à la demande (ON -> fetch -> OFF) pour préserver la batterie.
|
||||
./scripts/enable-wifi.sh
|
||||
./scripts/force-wifi-connection.sh
|
||||
./scripts/obtain-ip.sh
|
||||
|
||||
if curl -fsS -m 30 -o "$TMP" "$IMAGE_URL"; then
|
||||
display
|
||||
else
|
||||
"$FBINK" -pmh "Monitorink : image indisponible ($(date '+%H:%M'))"
|
||||
fi
|
||||
|
||||
./scripts/release-ip.sh
|
||||
./scripts/disable-wifi.sh
|
||||
./scripts/ledToggle.sh off 2>/dev/null
|
||||
|
||||
suspend_for "$REFRESH"
|
||||
done
|
||||
Reference in New Issue
Block a user