🛠 Premier script Python sur le NanoPi R5S
Objectifs
Écrire son premier script Python utile sur le NanoPi R5S : lire des informations système réelles (température du RK3568B2, fréquence des quatre Cortex-A55, interfaces Ethernet) en lisant /sys, sans dépendance externe. Le script s'appuie sur les fichiers sysfs standard des kernels Rockchip. Compétences : Python 3, lecture de fichiers système, gestion des exceptions.
Matériel
- NanoPi R5S sous Debian 12/13 ou Ubuntu 24.04 (FriendlyElec) ou Armbian
- Python 3 (présent par défaut sur les images récentes ; sinon
sudo apt install python3) - Connexion SSH ou console
Code complet
#!/usr/bin/env python3
"""etat_r5s.py — état matériel du NanoPi R5S via sysfs (aucune dépendance)."""
import glob, os
def lire(chemin):
try:
with open(chemin) as f:
return f.read.strip
except OSError:
return "indisponible"
# Température CPU (milli-°C) — le capteur thermique du RK3568
temp = None
for z in glob.glob("/sys/class/thermal/thermal_zone*/temp"):
v = lire(z)
if v.isdigit:
temp = int(v) / 1000.0
break
print(f"Température CPU : {temp if temp is not None else 'N/A'} °C")
# Fréquence actuelle de chaque cœur (kHz)
cpus = sorted(glob.glob("/sys/devices/system/cpu/cpufreq/policy*/scaling_cur_freq"))
for i, p in enumerate(cpus):
mhz = int(lire(p)) / 1000
print(f"Cœur {i} : {mhz:.0f} MHz")
# Interfaces Ethernet : eth0 = GbE WAN (RTL8211F), eth1/eth2 = 2,5 GbE (RTL8125BG)
for iface in sorted(os.listdir("/sys/class/net")):
if iface == "lo":
continue
vitesse = lire(f"/sys/class/net/{iface}/speed")
état = lire(f"/sys/class/net/{iface}/operstate")
print(f"{iface:8s} état={état:6s} vitesse={vitesse} Mb/s")
Vérification attendue
python3 etat_r5s.py affiche une température plausible (30 à 50 °C au repos — FriendlyElec n'a jamais vu le CPU dépasser 50 °C dans le boîtier métal), une fréquence par cœur (jusqu'à 2000 MHz) et les trois ports : le port WAN GbE doit indiquer 1000 Mb/s, les ports LAN 2.5G doivent indiquer 2500 Mb/s une fois le câble branché. Les valeurs indisponible signalent un chemin absent, pas une erreur bloquante.
Erreurs fréquentes
- Oublier la conversion : les températures sont en milli-°C et les fréquences en kHz, afficher la valeur brute fait « 42000 °C ».
- Exécuter avec
sh etat_r5s.pyau lieu depython3: le shebang ne suffit pas toujours. - Vitesse affichée
-1ouindisponible: câble Ethernet débranché sur le port concerné, c'est normal côté LAN libre. python3-gpiodou paquets manquants : ce script n'en a pas besoin ; ne pas installer gpiozero en suivant un tuto Raspberry Pi, le R5S n'est pas un RPi.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash