🛠 Premier script Python : inventaire du système
Objectifs
Écrire un premier script Python qui affiche l'inventaire du Raspberry Pi 3 A+ : SoC BCM2837B0 (4 cœurs Cortex-A53 @ 1,4 GHz), 512 MB de RAM partagée CPU/GPU, WiFi 2,4/5 GHz, et l'heure — la carte n'a pas d'horloge temps réel, l'heure vient de NTP via le WiFi à chaque démarrage.
Matériel
- Raspberry Pi 3 A+ avec Raspberry Pi OS Lite et connexion WiFi établie (aucun port Ethernet sur ce modèle)
- Un éditeur (
nano) en SSH ; Python 3 est préinstallé
Code complet
#!/usr/bin/env python3
# inventaire.py — inventaire matériel du 3 Model A+
import platform, re, shutil, subprocess, datetime
def cpu:
txt = open("/proc/cpuinfo").read
model = re.search(r"Model\s*:\s*(.+)", txt)
ncpu = len(re.findall(r"processor", txt))
return (model.group(1).strip if model else "?"), ncpu
def temp:
out = subprocess.run(["vcgencmd", "measure_temp"], capture_output=True, text=True)
return out.stdout.strip.removeprefix("temp=")
mod, n = cpu
mem = shutil.disk_usage("/")
print("Modele :", mod) # attendu : Raspberry Pi Model B+
print("Coeurs CPU :", n) # attendu : 4 (Cortex-A53 @ 1,4 GHz)
print("RAM : 512 Mo LPDDR2 (partagée CPU/GPU)")
print("Temp SoC :", temp)
print("Heure :", datetime.datetime.now, "(NTP, pas de RTC embarque)")
print(f"SD racine : {mem.used//2**30} Go / {mem.total//2**30} Go")
chmod +x inventaire.py && ./inventaire.py
Vérification attendue
Le script affiche un modèle Raspberry Pi, 4 processeurs, une température typique de 35–50 °C, et une date à jour uniquement si le WiFi/NTP a synchronisé l'horloge (sinon une date proche du 1 janv. 1970).
Erreurs fréquentes
- Heure fausse après un redémarrage hors ligne : pas de RTC ni de pile, il faut NTP ou attendre la connexion WiFi.
vcgencmdintrouvable : commande propre à Raspberry Pi OS, absente des distros tierces (Ubuntu, Alpine).- Oublier la ligne
#!/usr/bin/env python3et lechmod +xavant./inventaire.py. - Confondre la RAM (512 MB) et l'espace SD : ce sont deux chiffres très différents.
Autres tutoriels pour cette carte
- Allumer une LED en C avec libgpiod sur le GPIO 40 broches
- Bouton poussoir et retour console avec gpiozero
- Variation d'intensité d'une LED avec le PWM matériel
- Capteur I2C : température et pression avec BME280
- Connexion WiFi station et administration en SSH
- Démarrage SD/USB et récupération d'une carte qui ne boot plus
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython