Raspberry Pi : suivre la température en Python

Il est temps que je vous parle un peu plus du Raspberry Pi. La première question que l’on se pose lorsqu’on commence à l’utiliser est : est-ce qu’il surchauffe ? Bon, en fait, il y en a plein d’autres avant celle-ci si vous n’êtes pas un nerd invétéré, mais cette question va se poser à un moment ou à un autre. Un Raspberry Pi est un ordinateur peu puissant et certaines tâches qui paraissent banales sur un iMac Pro à 18 cœurs le feront chauffer très vite.

Le Raspberry Pi a bien une sonde sur son processeur, mais le système ne propose pas de joli interface graphique pour le suivi de cette température. De toutes manières, ce n’est pas observer la température qui est intéressant mais réagir lorsqu’elle dépasser un seuil. Il nous faut donc gérer cela de manière automatique. Et vous allez voir que c’est assez simple.

Lire la température

Le plus simple est par le fameux terminal (ou invite de commande). Il y a nativement deux commandes qui permettent de récupérer la température. J’ai laissé dans les lignes suivantes le prompt afin de différencier la ligne d’instruction d’un retour possible.

pi@raspberrypi ~ $ vcgencmd measure_temp
temp=45.5'C

pi@raspberrypi ~ $ more /sys/class/thermal/thermal_zone0/temp
45464

La commande vcgencmd est pratique pour afficher cette donnée. La seconde est plus standard dans le monde Linux. La commande more retourne le contenu d’un fichier passé en paramètre (ici, /sys/class/thermal/thermal_zone0/temp). Sous Linux, tout est fichier, la sonde thermique est vue par le système comme un fichier contenant l’information de température. Vous voyez que vous récupérez alors la valeur sous forme d’un entier en millidegrés Celsius.

Une petite subtilité est que si vous consultez la documentation, la commande vcgencmd measure_temp retourne la température du GPU, du processeur graphique. Mais sur le Raspberry Pi, nous avons un SoC, un système sur une puce où plusieurs composants sont intégrés, les résultats seront similaires.

Vous avez tout ce qui est nécessaire pour accéder à l’information brut. Mais essayons de faire un peu plus, avec un peu plus de code.

Un peu de code… en Python

Dans ce qui suit, Python ne sera que le langage de démonstration. Le principe s’applique quel que soit le langage puisque nous allons simplement lire la donnée du fichier vu dans le cas précédent.

Si vous savez lire la première ligne d’un fichier, vous savez tout ce qu’il y a à savoir puisque cette ligne n’est composée que de la valeur qui nous intéresse. Il suffit après de la convertir dans le format utile. En Python, le code est le suivant :

with open('/sys/class/thermal/thermal_zone0/temp', 'r') as ftemp:
    current_temp = int(ftemp.read()) / 1000
    print(current_temp)

Notez que la valeur lue est convertie en entier. Évidemment, à vous de faire ce que vous voulez de la valeur current_temp du code précédent. Le code suivant, par exemple, affiche un message lorsque la température dépasse les 80°C :

with open('/sys/class/thermal/thermal_zone0/temp', 'r') as ftemp:
    if int(ftemp.read()) / 1000 > 80:
        print("Heu, il fait un peu chaud là, arrêtez les jeux 3D")

Ce n’est pas plus compliqué que ça, vous avez tout ce qu’il faut pour exploiter l’information de température de votre Raspberry Pi, et la surveiller si vous avez prévu des tâches gourmandes.

Si vous avez aimé ce post, n’hésitez pas à laisser un commentaire ci-dessous ou sur la page Facebook 😉

À propos de... Darko Stankovski

iT guy, photographe et papa 3.0, je vous fais partager mon expérience et découvertes dans ces domaines. Vous pouvez me suivre sur les liens ci-dessous.

Vous aimerez aussi...

1 réponse

  1. 13 septembre 2020

    […] de relever des valeurs ou des éléments de configuration du Raspberry Pi. Vcgencmd commands. Raspberry Pi : suivre la température en Python | Dad 3.0. Il est temps que je vous parle un peu plus du Raspberry Pi. La première question que l’on se […]

Laisser un commentaire