Si tienes en casa una Raspberry Pi encendida durante todo el día posiblemente te interese controlar si se calienta en exceso o no. El control de temperaturas es primordial cuando tenemos que controlar equipos que ejercen labores de servidor (Servidores web, de correo…) que implican estar encendidos sin apagar durante mucho tiempo. También puede ser interesante si tu equipo corre aplicaciones menos exigentes, pero que igualmente implican que el equipo esté encendido durante largos períodos de tiempo (por ejemplo, equipos que ejecutan pi-hole para quitar publicidad al resto de equipos de la red, o que tienen instalados algún tipo de programa de descargas como aMule o Transmission). Temperaturas demasiado elevadas pueden implicar que el equipo reduzca su rendimiento (cuando un procesador está demasiado caliente, automáticamente reduce su velocidad para evitar que se sobrecaliente), que se cuelgue (si la temperatura excede de un límite, el procesador se puede apagar para que no se estropee el equipo) o que tengamos comportamientos no esperados en nuestra máquina.

En este breve tutorial vamos a ver un sencillo método para controlar la temperatura de tu Raspberry a través del terminal. Además vamos a exponerlo de tal forma que podremos enlazar este tutorial con uno posterior para poder consultar esas temperaturas a través de Telegram (que para el que no conozca esta aplicación, se trata de un servicio de mensajería similar a WhatsApp pero que no pone en riesgo tu privacidad), así que os ruego que respetéis los nombres de las carpetas y archivos que vamos a crear para que podáis seguir ambos tutoriales sin problemas.

1- Creación de un script que nos proporcione esa información de forma sencilla.

En primer lugar vamos a conectarnos a nuestra raspberry mediante SSH (por medio de Putty si usamos windows o con el comando ssh si usamos mac os o linux). Tenéis información de cómo hacer esa conexión en el punto 5 de nuestro tutorial de instalación de Raspbian Server.

Una vez conectados a nuestra pequeña Raspberry, vamos a crear una carpeta dentro del directorio home («/home/pi»). La vamos a llamar «aplicaciones». Para ello tecleamos lo siguiente:

mkdir aplicaciones

Vamos a ir dentro de la carpeta que acabamos de crear. Para ello usamos este comando:

cd aplicaciones

Dentro de esa carpeta vamos a crear un archivo bash (un script ejecutable). No os asustéis. No es más que un archivo de texto con una secuencia de comandos de linux. Es algo parecido a los archivos «.bat» del antiguo MSDOS. Lo vamos a llamar «temperaturas». Normalmente este tipo de archivos llevan la extensión .sh, pero vamos a dejarlo sin extensión. El comando para crear este archivo es el siguiente:

sudo nano temperaturas

Dentro de ese archivo vamos a pegar el siguiente texto.

!/bin/bash
 # Shell script: temp.sh
  # Autor: Santiago Crespo - Modificado por Marcos Matas
  cpu=$(cat /sys/class/thermal/thermal_zone0/temp)
  echo "Equipo => $(hostname)"
  echo "$(date)"
  echo "------------------------------"
  echo "Temp.CPU => $((cpu/1000))'Cº"
  echo "Temp.GPU => $(/opt/vc/bin/vcgencmd measure_temp)"
  echo "------------------------------"
  echo "CPU"
  echo "$(vcgencmd measure_clock arm)Hz"
  echo "$(vcgencmd measure_volts core)"
  echo "Mem. del Sistema $(vcgencmd get_mem arm)"
  echo "Mem. de la $(vcgencmd get_mem gpu)"
  echo "------------------------------"
  echo "Consumo de memoria"
  echo "$(egrep --color 'Mem|Cache|Swap' /proc/meminfo)"

Parte de este código procede de esta página. El resto… digamos que he «tuneado» un poquito el código inicial para ofrecer más información.

Guardamos el archivo pulsando «Control»+»o» y salimos pulsando «Control»+»x». El archivo está creado, pero no nos servirá de gran cosa hasta que no lo convirtamos en un archivo ejecutable con este comando:

Perfecto. Ya tenemos el script listo para funcionar. Podéis probar que ya funciona correctamente si tecleáis la palabra «temperaturas» en vuestra línea de comandos.

… pero hay un problema. Si nos desplazamos a otra carpeta de nuestra raspberry, para ejecutar este comando debemos proporcionar la ruta en que está el script. Dada la importancia de visualizar las temperaturas cuando algo va mal, puede que necesitemos esta información en el momento menos previsto (y nos resulta un poco rollo escribir la ruta entera), así que vamos a hacer que este comando pueda ser ejecutado desde cualquier carpeta de forma sencilla.

2- Creación de un enlace simbólico para disponer de esa información en todo momento.

Vamos a crear una cosa que en Linux se llama «enlace simbólico». Es algo muy similar a lo que en Windows se llama «acceso directo» o en Mac OS se llama «alias». Lo que haremos es que un «acceso directo» a nuestro script esté disponible en una carpeta a la que siempre se tiene acceso (/usr/bin), aunque estemos situados en una ruta distinta.

Para ello tecleamos el siguiente comando en el terminal.

sudo ln -s /home/pi/aplicaciones/temperaturas /usr/bin

Ahora sí que estamos listos para probar nuestro script. Escribid lo siguiente en vuestro terminal (si queréis, desde una carpeta distinta de la que tiene el script) y pulsad «enter».

temperaturas

Deberíais obtener algo similar a esto:

En la parte superior podéis ver la temperatura de vuestra raspberry, tanto del procesador como de la GPU. En el medio veréis a qué frecuencia de reloj está funcionando la Raspberry, el voltaje que está consumiendo y la memoria que tiene asignada la tarjeta gráfica. En la parte inferior hay información acerca del consumo de memoria actual de la máquina. Saber estos datos en un momento en el que hay problemas puede facilitar encontrar la solución a los mismos.

Si os fijáis, la información del script… digamos… que ocupa muy poquito a lo ancho. Lo he modificado para que presente los datos en forma de columna alargada. De esta forma, vamos a poder ver la información correctamente en un mensaje de Telegram, sea cual sea vuestro modelo de teléfono. En el próximo tutorial os enseñaré cómo hacer para poder hablar con vuestra raspberry por Telegram y pedirle que haga cosas de forma remota, como mostrarnos este tipo de información.

Share