spi_data_logger_sd-10.ino
Script Bash ligero para monitorear métricas clave del BPI-5202 y guardarlas en un archivo CSV en el almacenamiento SSD/SD.
Utiliza interfaces estándar de Linux (/proc, /sys) accesibles en Loongnix/KylinOS. La ruta de temperatura puede variar según el controlador térmico específico para 2K1000LAi (verifique /sys/class/thermal/). El script maneja la rotación básica de registros si el espacio en disco es crítico en el SSD interno o la tarjeta SD. Ejecute en segundo plano con 'nohup ./bpi5202_logger.sh &' para monitoreo continuo.
spi_data_logger_sd-10.ino
#!/bin/bash
# bpi5202_logger.sh
# Journalisation système sur stockage interne/externe du BPI-5202
LOG_FILE="/home/user/bpi5202_log_$(date +%Y%m%d).csv"
INTERVAL=10s
# Vérification de l'espace disque disponible
check_space() {
free_space=$(df -m /home | tail -1 | awk '{print $4}')
if [ "$free_space" -lt 100 ]; then
echo "Alerte: Espace disque faible (<100MB)"
# Optionnel: Rotation ou nettoyage des anciens logs
rm -f /home/user/bpi5202_log_*.csv.old
mv "$LOG_FILE" "${LOG_FILE}.old"
fi
}
# Initialisation du fichier log avec en-tête
if [ ! -f "$LOG_FILE" ]; then
echo "timestamp,cpu_temp,cpu_load,mem_used_mb,net_rx_kb" > "$LOG_FILE"
fi
echo "Démarrage du logger sur BPI-5202 (LoongArch). Log: $LOG_FILE"
while true; do
check_space
# Lecture des données système
# Température CPU (chemin spécifique LoongArch/2K1000LAi peut varier, ex: /sys/class/thermal/thermal_zone0/temp)
if [ -f "/sys/class/thermal/thermal_zone0/temp" ]; then
temp_raw=$(cat /sys/class/thermal/thermal_zone0/temp)
temp_c=$(awk "BEGIN {printf \"%.1f\", $temp_raw/1000}")
else
temp_c="N/A"
fi
# Charge CPU moyenne
load_avg=$(awk '{print $1}' /proc/loadavg)
# Mémoire utilisée (MB)
mem_info=$(free -m | awk '/^Mem:/{print $3}')
# Traffic Réseau (approximation via /proc/net/dev eth0)
if [ -f "/proc/net/dev" ]; then
rx_kb=$(awk '/eth0/{print $2/1024}' /proc/net/dev | cut -d'.' -f1)
else
rx_kb="0"
fi
# Enregistrement
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "$timestamp,$temp_c,$load_avg,$mem_info,$rx_kb" >> "$LOG_FILE"
# Affichage console pour debug
echo "[$timestamp] Temp: $temp_c C | Load: $load_avg | Mem: ${mem_info}MB"
sleep $INTERVAL
done