Controllare la temperatura del Raspberry Pi
I comandi per visualizzare la temperatura del processore e chip video possono essere impartiti direttamente dal terminale della Raspberry oppure tramite terminale remoto SSH.
Se interessa usare una Raspberry per rilevare e memorizzare temperature ed umidità ambientali o liquidi, in questo sito è presente una guida ai sensori esterni di temperatura DHT22 per ambienti interni e DS18B20 per ambienti esterni o liquidi.
I simboli che vengono visualizzati a schermo dal Raspberry in caso di temperatura troppo elevata sono due, un termometro con il mercurio a metà.
In questo caso la temperatura è maggiore di 80° C e minore di 85° C.
Ed un termometro con i mercurio a fondo scala, in questo caso la temperatura supera gli 85° C, spengere la Raspberry per evitare danneggiamenti.
E’ possibile installare dei dissipatori termici per CPU e GPU cheaiutano il chip a dissipare meglio il calore.
Visualizzare la temperatura:
Con questa istruzione viene visualizzata a schermo la temperatura della CPU:
/opt/vc/bin/vcgencmd measure_temp
Anteponendo il comando WATCH, la temperatura verrà aggiornata automaticamente ogni 2 secondi:
watch /opt/vc/bin/vcgencmd measure_temp
Visualizzare versione e tensioni:
/opt/vc/bin/vcgencmd version
/opt/vc/bin/vcgencmd measure_temp
/opt/vc/bin/vcgencmd measure_volts core
/opt/vc/bin/vcgencmd measure_volts sdram_c
/opt/vc/bin/vcgencmd measure_volts sdram_i
/opt/vc/bin/vcgencmd measure_volts sdram_p
Creare uno script in bash
Possiamo creare un bash script per visualizzare la temperatura della CPU e della GPU, ossia del processore e del chip video. Lo script che ho creato è molto semplice ed istruttivo, ed è possibile modificarlo a piacimento con facilità.
Ho usato un IF THEN ELSE ed un SELECT CASE, per riconoscere le condizioni e visualizzare il messaggio.
prima cosa apriamo NANO l’editor di testo e digitiamo:
nano temperatura-pi.sh
trascriviamo od incolliamo il seguente codice
#!/bin/bash
# Script: temperatura-pi.sh
# Purpose: Visualizzare la temperatura di ARM CPU e GPU su Raspberry Pi 2/3
# Author: Lorenzo IZ0KBA - www.iz0kba.it/raspberry - under GPL v2.x+
# -------------------------------------------------------
cpu=$(</sys/class/thermal/thermal_zone0/temp)
gpu=$(/opt/vc/bin/vcgencmd measure_temp)
echo "--------------------------------------------"
echo "$(date) @ $(hostname)"
echo "--------------------------------------------"
if (( ${gpu:5:2} \> 80)); then
echo "Temperatura GPU elevata! => ${gpu:5}";
elif (( ${gpu:5:2} \> 64)); then
echo "Temperatura GPU alta => ${gpu:5}";
else
echo "Temperatura GPU nei limiti => ${gpu:5}";
fi
case $((cpu/1000)) in
90) echo "Allarme!!! Temperatura CPU oltre i limiti => $((cpu/1000))'C";;
8[5-9]) echo "Temperatura CPU molto elevata! => $((cpu/1000))'C";;
8[0-4]) echo "Temperatura CPU elevata! => $((cpu/1000))'C";;
7?) echo "Temperatura CPU alta => $((cpu/1000))'C";;
6?) echo "Temperatura CPU medio alta => $((cpu/1000))'C";;
*) echo "Temperatura CPU nei limiti => $((cpu/1000))'C";;
esac
a questo punto salviamo il file, CTRL+O, ed usciamo CTRL+X
Impostiamo ora i permessi:
chmod +x temperatura-pi.sh
Adesso è possibile avviare lo script:
./temperatura-pi.sh
Dovremmo vedere a schermo la data e le temperature, un esempio:
------------------------------------- dom 12 Mar 19:14:10 CET @ raspberrypi ------------------------------------- Temperatura GPU nei limiti => 48.3'C Temperatura CPU nei limiti => 48'C
Per eseguire lo script ogni X secondi, bisognerà anteporre il comando in esempio, ove 10 sono i secondi di intervallo. Per fermare lo script premere CTRL+C:
watch -n 10 ./temperatura-pi.sh
5 commenti
Filippo
Grazie, funziona benissimo, lo uso su un Raspberry usato come Cloud per monitorare le temperature!
Lancerotto Pietro Bruno ( IZ3ZID )
Volevo segnale che il percorso
/opt/vc/bin/vcgencmd measure_temp
su PI-OS recente ( 64 bit ) è cambiato in
/usr/bin/vcgencmd measure_temp
Sistemato questo mi ritorna un errore sulle righe con il \>
if (( ${gpu:5:2} \> 80 )); then
riga 12: ((: 36 \> 80 : errore di sintassi: operatore aritmetico non valido (il token dell’errore è “\> 80 “)
Io ci smanetto un po’ ma non ho grandi conoscenze slla esatta sintassi degli script
Ti ringrazio per un eventuale aiuto
IZ0KBA
Grazie! aggiorno la pagina.
Lancerotto Pietro Bruno ( IZ3ZID )
provato con -gt ma allora risponde
(il token dell’errore è “80 “)
Lancerotto Pietro Bruno ( IZ3ZID )
alla fine bastava sostituire \> con >=