Como medir la temperatura de nuestra Raspberry Pi

raspberry-infrared

Una de las ventajas de la Raspberry Pi es su eficiencia, teniendo una capacidad de cálculo superior a la que en su momento tenían los Pentium III, con un consumo eléctrico infinitamente inferior, lo que entre otras cosas también hace que se caliente mucho menos, haciéndola ideal para usos industriales y científicos,  en los que se precisa equipos capaces de trabajar dentro de un amplio rango de temperaturas, y un consumo eléctrico tan bajo como sea posible.

termometro

A pesar de lo comentado anteriormente, su uso en entornos con poca ventilación y alta temperatura, sin hacer uso de ningún tipo de ventilador puede llegar a generarnos dudas sobre el nivel de estrés de nuestras Raspberry, lo que hace que sea interesante poder monitorizar  la temperatura de los dos componentes más propensos a calentarse (CPU y GPU), información que podéis obtener de la siguiente manera:

Para saber la temperatura de la CPU (procesador):

cat /sys/class/thermal/thermal_zone0/temp 

Lo que nos mostrará algo como esto

50843

Que no es otra cosa que 50’843 Cº (hay que dividir entre 1000)

Para saber la temperatura de la GPU (chip gráfico)

vcgencmd measure_temp

Que en mi ejemplo me ha dado

temp=50.8’C

Como es un dato que probablemente queramos consultar más de una vez, es recomendable que lo traslademos a un shell script:

sudo nano temp.sh

Se abrirá el editor de texto con un documento en blanco, en el que pegaremos las siguientes líneas:

#!/bin/bash
 # Shell script: temp.sh
 # Autor: Santiago Crespo
 cpu=$(cat /sys/class/thermal/thermal_zone0/temp)
 echo "$(date) @ $(hostname)"
 echo "-------------------------------------------"
 echo "Temp.CPU => $((cpu/1000))'Cº"
 echo "Temp.GPU => $(/opt/vc/bin/vcgencmd measure_temp)"
 echo "-------------------------------------------"
 

Tras lo cual saldremos guardando los cambios con CTRL + ‘X’, pulsando a continuación ‘Y’ para confirmar que queremos guardar los cambios, y ENTER.

Para que el script sea ejecutable, necesitaremos hacer lo siguiente:

chmod +x temp.sh

Tras lo cual podremos probar el resultado con:

./temp.sh

Que mostrará algo parecido a lo siguiente:

Sun 24 Apr 19:15:17 CEST 2016 @ RASPBERRY-2
——————————————-
Temp.CPU => 45’Cº
Temp.GPU => temp=45.5’C
——————————————-

ó

Sun 24 Apr 17:37:50 UTC 2016 @ RASPBERRY-3
——————————————-
Temp.CPU => 53’Cº
Temp.GPU => temp=52.6’C
——————————————-

Ambas llevan instalados unos disipadores de aluminio que pueden adquirirse en cualquier tienda especializada en Raspberry por unos 3 euros (cada kit), y que reducen la temperatura en aproximadamente unos 5 ºc.

En mi caso, este script me ha servido para darme cuenta de la gran diferencia de temperatura a la que trabajan tres tipos distintos de RPI tras minutos de trabajar con sus procesadores al 100%, así mientras la RPI 1 y la 2 trabajan prácticamente a la misma temperatura (entre 59 y 62 cº), la RPI 3 lo hace en un rango de temperaturas sorprendentemente más alto (entre 81 y 83 Cº).

En base a esa información parece lógico pensar que en entornos de altas temperaturas y poca ventilación la Raspberry 2 puede ser mejor opción que la Raspberry 3.

Para los que estéis interesados en poder monitorizar  vuestro sistema con mayor detalle, comprobando por ejemplo la frecuencia del procesador, consumo en voltios del mismo, memoria…  a continuación adjunto un pequeño shell script (.sh) que podéis añadir al script anterior o aprovechar para cualquier otro proyecto

echo ""
 echo "Otros datos del sistema"
 echo "-------------------------------------------"
 echo "CPU $(vcgencmd measure_clock arm)'Hz"
 echo "CPU $(vcgencmd measure_volts core)"
 echo "Memoria repartida entre el sistema y la gpu:"
 echo "Sistema $(vcgencmd get_mem arm)"
 echo "GPU $(vcgencmd get_mem gpu)"
 echo "-------------------------------------------"
 echo "Memoria libre $(free -o -h)"
 echo "-------------------------------------------"

La forma de conseguir hacer lo mismo en Python :

# python script
# autor : Santiago Crespo
import commands
temp = int(open('/sys/class/thermal/thermal_zone0/temp').read()) / 1e3
print 'Temp.CPU =>' + str(temp)
tempgpu = commands.getoutput('/opt/vc/bin/vcgencmd measure_temp' ).replace('temp=', '' ).replace('\'C', '')
print 'Temp.GPU =>' + str(tempgpu)

Como ver el % de uso de la CPU usando Python

import psutil
cpusan = psutil.cpu_percent(interval=1, percpu=False)
print cpusan

 

Para tener accesible el módulo psutil es posible que antes tengáis que instalarlo:

sudo pip install psutil

Si necesitáis cualquier aclaración no dudéis en contactarme.

Rev 16.9.2016

Esta entrada fue publicada en Raspberry Pi y etiquetada , , , , , , , , , , , . Guarda el enlace permanente.

Deja un comentario