surveillance-temperature.sh
Le module X8 peut chauffer quand Docker et le Wi-Fi travaillent ensemble : ce démon lit le capteur du noyau toutes les 10 s, journalise en CSV et pousse une alerte syslog au-delà du seuil. À monter en service systemd.
Matériel requis
Une Arduino Portenta X8 (module ST STM32MP1 : quad Cortex-A7 Linux + double cœur Cortex-M4 temps réel, 8 Go eMMC, 2 Go LPDDR4, Wi-Fi/BT embarqués, option LTE). Aucun : capteur thermique interne du SoC.
Câblage
Rien à câbler. Refroidissement : dissipateur ou boîtier ventilé si charge soutenue.
Fonctionnement
Le noyau expose la température en milli-°C dans /sys/class/thermal ; le script convertit, append au CSV et utilise logger pour le syslog, consultable par journalctl.
Exécution
Côté Linux : accès SSH (USB-C routed ou réseau) sur l'image Portenta Linux, scripts bash/Python. Côté temps réel : Arduino IDE avec le core « Arduino Mbed OS Portenta X8 Boards », cœur M7 applicatif, flash via mboot depuis Linux.
Variantes
Déclencher la réduction de fréquence (cpufreq) au lieu d'alerter, ou remonter la température vers le core Arduino pour une LED de chauffe.
surveillance-temperature.sh
#!/bin/bash
# Surveillance thermique du SoC via sysfs, avec seuil et journal.
SEUIL="${SEUIL:-75}"
JOURNAL="/tmp/temp-x8.csv"
[ -f "$JOURNAL" ] || echo "horodatage,temp_c" > "$JOURNAL"
ZONE=$(ls /sys/class/thermal/ | grep ^thermal_zone | head -1)
[ -n "$ZONE" ] || { echo "pas de capteur thermique"; exit 1; }
while true; do
TEMP=$(( $(cat /sys/class/thermal/$ZONE/temp) / 1000 ))
echo "$(date -Is),$TEMP" >> "$JOURNAL"
if [ "$TEMP" -ge "$SEUIL" ]; then
logger "X8: ALERT temperature ${TEMP}C"
echo "ALERTE : ${TEMP}C (seuil ${SEUIL}C)"
else
echo "temp ${TEMP}C ok"
fi
sleep 10
done
# Installer en service systemd (exemple service-systemd)
# pour une surveillance permanente.