surveillance-temperature.sh

Arduino Portenta X8 · Fichier : surveillance-temperature.sh · Langage : Bash · Usage : Journaliser la température du SoC et alerter en cas de chauffe

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.

← Retour à la fiche