=========================================== [Raspberry Pi] - Afficher la température CPU du Raspberry Pi =========================================== EN version : https://en.linuxdocs.net/en/latest/guides/raspberrypi-temperature.html Pour les inquiets qui souhaitent garder un œil sur la température du **Raspberry Pi**, il existe deux commandes permettant de récupérer une valeur de la part des capteurs de température. .. image:: https://raw.githubusercontent.com/lbr38/documentation/main/docs/images/raspberrypi/thermal.png Commandes ========= La première commande qui renvoie un résultat sous la forme suivante : **temp=44.9’C** : .. code-block:: shell /opt/vc/bin/vcgencmd measure_temp temp=44.9’C La seconde qui renvoie un nombre à 5 chiffres, ex: **44912**, il suffit alors de diviser le résultat par 1000 pour ne garder que le résultat sur deux chiffres : .. code-block:: shell cat /sys/class/thermal/thermal_zone0/temp | awk '{ print $1 / 1000 }' 44 Historique journalier ===================== Pour aller plus loin, je propose le code ci-dessous qui est un script **bash** récupérant la témpérature **toutes les 5 minutes** et qui l'inscrit un fichier, gardant ainsi un **historique sur toute une journée**. Dans certaines conditions, une **surchauffe** par exemple, le script est en mesure d’effectuer des actions comme **envoyer une alerte** mail ou encore d’ordonner au Raspberry Pi de **s’arrêter**. Le fichier généré est au format HTML, ce qui permet d'ajouter quelques couleurs et d'être facilement ouvert depuis n'importe quel navigateur. Extrait du fichier généré : .. image:: https://raw.githubusercontent.com/lbr38/documentation/main/docs/images/raspberrypi/temp_repport.png Conditions ---------- .. role:: bluetext .. role:: greentext .. role:: orangetext .. role:: redtext - Si la température est inférieure à **40°**, alors on considère qu’elle est **OK**. La valeur est écrite en :bluetext:`bleu` dans le fichier. - Si la température est comprise entre **40°** et **50°**, alors on considère qu’elle est **normale**. La valeur est écrite en :greentext:`vert` dans le fichier. - Si la température est comprise entre **50°** et **70°**, alors on considère qu’il y a **une légère chauffe**. La valeur est écrite en :orangetext:`orange` dans le fichier. - Si la température est comprise entre **70°** et **75°**, alors on considère qu'il y a une **chauffe**. La valeur est écrite en :redtext:`rouge` dans le fichier et **une alerte mail est envoyée** pour signaler une surchauffe. - Si la température est supérieure à **75°**, alors la valeur est écrite en **noir** dans le fichier et **une alerte mail est envoyée** pour signaler une température anormale. Enfin, la commande d'arrêt **shutdown –h now** est exécutée afin **d'arrêter le Raspberry Pi** et éviter tout dommage sur les composants. Certes il peut être exagéré de parler de surchauffe lorsque la température dépasse **70°C**, sachant que le Raspberry Pi semble pouvoir résister à des températures allant au delà de **80°C** d’après certaines sources Internet. Cependant, mon Raspberry Pi n’ayant que très rarement atteint +70°C, je considère que si ça devait arriver, alors cela serait anormal et il serait bon d’en être averti par mail. Code ---- Créer un nouveau script en tant que pi : .. code-block:: shell vim /home/pi/scripts/temperature.sh Insérer le code suivant : .. code-block:: shell #!/bin/bash SEND_ALERT="no" ALERT_MSG="" ALERT_MAIL_RECIPIENT="email@mail.com" # adresse mail recevant les alertes ALERT_MUTT_CONF="/home/pi/.muttrc" # chemin vers le fichier de configuration .muttrc SHUTDOWN="no" COLOR="" # Récupération de la température ; on obtient ici une valeur à 5 chiffres sans virgules (ex: 44123) : TEMP=$(cat /sys/class/thermal/thermal_zone0/temp) # On divise alors la valeur obtenue par 1000, pour obtenir un résultat avec deux chiffres seulement (ex: 44) : TEMP=$(($TEMP/1000)) # Récupération de la date et l'heure du jour ; on obtient ici une valeur telle que "mercredi 31 décembre 2014, 00:15:01" : DATE=$(date +"%A %d %B %Y, %H:%M:%S") # Récupération de la date et l'heure du jour sous un autre format ; on obtient ici un résultat sous la forme suivante : AAAA-MM-DD : DATE_ALT=$(date +"%Y-%m-%d") # Répertoire cible (où seront stockées les valeurs). Ici je stocke mes valeurs sur mon NAS afin d'avoir facilement accès aux fichiers générés : DIR="/mnt/NAS/raspberry/temperatures" # Le fichier à créer dans ce répertoire est "temperature.html" TEMP_FILE="${DIR}/${DATE_ALT}_temperature.html" # Si le répertoire cible n'existe pas, on le crée mkdir -p "$DIR" # Si le fichier temperature.html n'existe pas, on le crée et on y injecte le code html minimum if [ ! -f "$TEMP_FILE" ];then echo "