🛠 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

Objetivos

Escribir su primer script Python útil en el NanoPi R5S: leer información real del sistema (temperatura del RK3568B2, frecuencia de los cuatro Cortex-A55, interfaces Ethernet) leyendo /sys, sin dependencias externas. El script se basa en los archivos sysfs estándar de los kernels de Rockchip. Competencias: Python 3, lectura de archivos del sistema, gestión de excepciones.

Hardware

Código completo

#!/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")
    etat = lire(f"/sys/class/net/{iface}/operstate")
    print(f"{iface:8s} état={etat:6s} vitesse={vitesse} Mb/s")

Verificación esperada

python3 etat_r5s.py muestra una temperatura plausible (30 a 50 °C en reposo — FriendlyElec nunca ha visto el CPU superar los 50 °C dentro de la carcasa metálica), una frecuencia por núcleo (hasta 2000 MHz) y los tres puertos: el puerto WAN GbE debe indicar 1000 Mb/s, los puertos LAN 2.5G deben indicar 2500 Mb/s una vez conectado el cable. Los valores indisponible señalan una ruta inexistente, no un error bloqueante.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales