🛠 Premier script Python sur le NanoPi R5S

NanoPi R5S (FriendlyElec) · debutant · Schéma : IMG-nanopi-r5s-debutant-3-nanopir5s-premier-script-python.svg — NanoPi R5S sous Debian avec un terminal affichant un script Python qui lit température, fréquence CPU et adresses des trois ports Ethernet

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

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

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels