🛠 Premier script Python sur le NanoPi R5S
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
- NanoPi R5S con Debian 12/13 o Ubuntu 24.04 (FriendlyElec) o Armbian
- Python 3 (presente por defecto en las imágenes recientes; si no,
sudo apt install python3) - Conexión SSH o consola
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
- Olvidar la conversión: las temperaturas están en miligrados Celsius y las frecuencias en kHz, mostrar el valor bruto da « 42000 °C ».
- Ejecutar con
sh etat_r5s.pyen lugar depython3: el shebang no siempre es suficiente. - Velocidad mostrada como
-1oindisponible: cable Ethernet desconectado en el puerto correspondiente, es normal en un puerto LAN libre. python3-gpiodo paquetes faltantes: este script no los necesita; no instale gpiozero siguiendo un tutorial de Raspberry Pi, el R5S no es un RPi.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash