surveillance-temperature.sh

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

El módulo X8 puede calentarse cuando Docker y el Wi-Fi trabajan juntos: este demonio lee el sensor del kernel cada 10 s, registra en CSV y envía una alerta syslog al superar el umbral. A montar como servicio systemd.

Hardware

Un Arduino Portenta X8 (módulo ST STM32MP1: quad Cortex-A7 Linux + doble núcleo Cortex-M4 de tiempo real, 8 GB eMMC, 2 GB LPDDR4, Wi-Fi/BT integrados, opción LTE). Ninguno: sensor térmico interno del SoC.

Cableado

Nada que cablear. Refrigeración: disipador o caja ventilada con carga sostenida.

Funcionamiento

El kernel expone la temperatura en mili-°C en /sys/class/thermal; el script convierte, añade al CSV y usa logger para syslog, consultable con journalctl.

Ejecución

Lado Linux: acceso SSH (USB-C routed o red) sobre la imagen Portenta Linux, scripts bash/Python. Lado tiempo real: Arduino IDE con el core « Arduino Mbed OS Portenta X8 Boards », núcleo M7 de aplicación, grabado vía mboot desde Linux.

Variantes

Disparar la reducción de frecuencia (cpufreq) en vez de alertar, o subir la temperatura al core Arduino para un LED de calentamiento.

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.

← Volver a la ficha