journal_systeme.py
La LattePanda est un PC : psutil donne température, charge et disque comme sur un serveur. Le journal CSV maison surveille la machine elle-même — le premier réflexe avant de la charger en calcul.
Matériel requis
Une LattePanda Alpha (x86 Intel m3-7Y30, Windows 10 ou Linux) avec son coprocesseur ATmega32U4 compatible Arduino Leonardo sur les connecteurs 50 broches. Aucun : capteurs internes du N5105/m3-7Y30.
Branchement
Aucun câblage. Sous Windows, adapter le chemin du CSV ; les sondes x86 apparaissent via coretemp/lm-sensors.
Fonctionnement
psutil lit les compteurs du noyau (cpu_percent échantillonne 1 s) ; shutil mesure le disque libre. Le flush à chaque ligne protège contre les coupures d'alimentation. L'ATmega32U4 est un vrai Leonardo : brochez-le en « Arduino Leonardo » dans l'IDE via son port COM interne. Côté hôte, la bibliothèque DFRobot lattepanda (Python) dialogue avec lui par série.
Pour aller plus loin
Alerte desktop (plyer) au-delà de 80 °C, ou export vers Grafana avec le node exporter officiel.
journal_systeme.py
#!/usr/bin/env python3
# Journal systeme de la LattePanda (x86) : temperature, charge, disque.
# sudo apt install psutil (pip) ; lm-sensors pour les sondes x86.
import psutil, time, datetime, shutil, subprocess
def temperature():
try:
t = psutil.sensors_temperatures()
for nom, fils in t.items():
if fils:
return round(fils[0].current, 1), nom
except Exception:
pass
return None, "aucune sonde"
chemin = "/var/log/panda-systeme.csv"
entete = "horodatage,cpu_pct,temp_c,sonde,ram_pct,disque_gb"
with open(chemin, "a") as f:
if f.tell() == 0:
f.write(entete + "\n")
print("Journal tous les 10 s (Ctrl-C pour finir)")
while True:
temp, sonde = temperature()
ligne = [datetime.datetime.now().isoformat(timespec="seconds"),
round(psutil.cpu_percent(interval=1), 1),
temp, sonde,
round(psutil.virtual_memory().percent, 1),
round(shutil.disk_usage("/").free / 1e9, 1)]
f.write(",".join(str(x) for x in ligne) + "\n")
f.flush()
print(ligne)
time.sleep(9)