Raspberry Pi: Notificación de la temperatura de la CPU por WhatsApp

Acabo de enterarme de esta notícia. Hay que buscar otras alternativas… **ACTUALIZADO 29/08/2014**

Una de las cosas que más me preocupa de Raspberry Pi, es la temperatura de la cual pueda llegar. Se ha dicho en numerosas ocasiones, que la temperatura de la Raspberry Pi no llega a los 60ºC en máxima potencia (ejecutando vídeos). He visto muchos tutoriales por Internet donde usan Raspberry Pi como servidor liviano, y eso significa tener el microcontrolador encendido semanas o incluso meses. Me preocupa la temperatura a la que pueda llegar antes de querer dejar dos o tres semanas encendido haciendo pruebas de todo tipo (había pensado instalar Owncloud). Así que me hice un script de lo más sencillo para ir comprobando manualmente la temperatura. Muy simple, tan solo hay que ejecutar en una Terminal:

sudo /opt/vc/bin/vcgencmd measure_temp

Y nos muestra:

temp=49.8'C

Así que compliqué un poco más el script y hice que la temperatura se me mostrara por notificaciones de mi ordenador de sobremesa, como expliqué en la entrada Raspberry Pi: Script de notificación.

Pero ayer a la noche dije, “Si tengo que dejar la Raspberry Pi encendida durante semanas, no siempre estoy en casa, y no siempre tengo el PC encendido (mentira). Existe alguna manera para que me llegue esa notificación al Android?”

Hay muchas opciones: por Gmail, por Gtalk, por Twitter… Pero la que más me gustó fue: Por Whatsapp. Entonces miré la hora del reloj y me fui a dormir porqué era muy tarde.

Enviadodesderaspp

Bien, he estado trabajando en esto más de 6 horas desde que me levanté, porque por lo visto hay un par de tutoriales por Internet pero están explicados con el codo… ejem. Y he tenido que descubrir y deducir muchas cosas y eso sin tener ni idea de PHP (cosa que tengo que aprender cuanto antes mejor). Así que vamos al grano!

Primeros pasos

Lo primero que debemos tener, es un número de teléfono y registrarlo en Whatsapp. Normalmente si tienes tu número de teléfono ya registrado no puedes volverlo a registrar en otro terminal. Así funciona Whatsapp. Así que lo primero que vamos hacer es coger un número de teléfono y asociarlo al que ya tenemos. Como hacemos eso? Con un servicio que se llama FonYou.

Instalar dependencias

Para que funcione tenemos que tener instalado esto:

# apt-get install python2-6 python-dateutil

Registro en FonYou

  1. Leer atentamente toda la información que nos proporcionan en la web es algo muy interesante, y más para aquellos que no vean del todo claro este tema de asociar otro número de teléfono.
  2. Registrarse y rellenar todos los campos
  3. Seguir los pasos que te van indicando.

Registrar tu número FonYou a Whatsapp

Hay dos maneras para hacerlo: la larga y la profesional. La manera larga es descargarse e instalar el SDK de Android y el BlueStacks desde un Windows y posteriormente instalar la aplicación Whatsapp para el registro del número de teléfono. También existe la posibilidad de crear una maquina virtual con VirtualBox de Android y instalar Whatsapp.

Pero sin duda, la manera profesional es la más rápida y la que más me gusta. Así que vamos a ello.

Manera profesional

Nos vamos a descargar un programa escrito en Python que nos va a permetir registrar nuestro número FonYou y que luego usaremos para enviar mensajes a nuestro Whatsapp.

git clone git://github.com/tgalal/yowsup.git

Entramos en yowsup/src/

cd yousup/src

Editamos un fichero que se llama config.example donde dejaremos las siguientes líneas de la siguiente manera:

cc=34
phone=34666777888
id=
password=

Donde cc, es el préfijo telefónico de tu país. Phone es el prefijo telefónico más tu número registrado en FonYou. En id y password lo dejaremos en blanco.

Ahora pasaremos a registrar el número de teléfono con el siguiente comando:

python yowsup-cli -c config.example --requestcode sms

Recibiremos un código vía SMS en nuestro teléfono que usaremos en este otro comando:

python yowsup-cli -c config.example --register XXX-XXX

Donde XXX-XXX es nuestro código que hemos recibido. Una vez ejecutemos este comando, nos mostrará una serie de datos, buscaremos el que pone “password” o “pw” y lo copiaremos. Volveremos a modificar el fichero config.example y donde pone password= copiaremos esa contraseña que nos apareció anteriormente.

Ahora, para enviar un mensaje al Whatsapp es muy sencillo:

python yowsup-cli -c config.example -s ccphone "Mensaje"

Donde ccphone es el prefijo telefónico más el número de teléfono a quien quieres enviar un mensaje.

Integrar YouSup en un script

Nada complicado si sabes hacer scripts. Mi script lo que hace es muy sencillo. Si el ordenador de sobremesa está conectado a la red (que significará que está encendido), enviará la temperatura crítica mediante una notificación de escritorio. Si en cambio, no está conectado a la red, enviará esa notificación por WhatsApp.

¿Estás o no estás en la red?

¿De que manera compruebo si un ordenador está en la red? Seguramente hay muchas maneras y de más fáciles que la mía, pero bueno, yo lo hago mediante el comando ping.

Envío solo un paquete a una IP (la del ordenador de sobremesa) para saber si éste me responde. Cuando envías solo un paquete te muestra lo siguiente:

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.046 ms
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.046/0.046/0.046/0.000 ms

Lo que hace el script es crear un fichero y quedarse con la línea que dice 1 packets transmitted, 1 received, 0% packet loss, time 0ms. Para que después podamos comprobar que 1 (de paquetes transmitidos) es igual a 1 (de paquetes recibidos). Porqué lo hago así? Porque si hago ping cuando la IP no está disponible me muestra lo siguiente:

PING 192.168.0.21 (192.168.0.21) 56(84) bytes of data.
From 192.168.0.13 icmp_seq=1 Destination Host Unreachable
--- 192.168.0.21 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

Por lo tanto aquí no se cumple lo de 1 es igual a 1, ya que 1 (de paquetes transmitidos) no es igual a 0 (paquetes recibidos).

Así que cuando transmitidos sea igual a recibidos (1 = 1) se ejecutará el siguiente comando:

ssh Zagur@192.168.0.13 "echo "ALERTA! Temperatura actual: $tempactual,$dec ºC" > /dev/pts/0"

Y se enviará una notificación a nuestro PC de sobremesa. Por lo contrario, cuando transmitidos no sea igual a recibidos (1 = 0), se ejecutará este otro comando:

python /home/pi/yowsup/src/yowsup-cli -c /home/pi/yowsup/src/config.example -s 34XXXXXXXXX "La temperatura es de $tempactual,$dec ºC | PortalLinux"

Ponlo a tu gusto

Para hacer “más fácil” a la gente que quiera usar este script, al principio he añadido un comentario de como usarlo y debajo las variables que se tendrán que cambiar para que funcione en vuestra Raspberry Pi y en vuestro PC.

Añadir Script a Crontab

Para que el script se vaya ejecutando cara cierto tiempo, uno de los mejores recursos que tenemos en sistemas Unix es el uso de Crontab.

Cron es un administrativo regular de procesos en segundo plano que ejecuta procesos o guiones en intervalos regulares, por ejemplo, cada minuto, cada lunes a las 4 de la tarde…).

Vamos a planificar la ejecución del script cada 30 minutos. En realidad el tiempo es al gusto del consumidor, yo creo que comprobar la temperatura 2 veces cada hora ya está bien. Para ello escribiremos en una Terminal:

# crontab -e

Y añadimos la siguiente frase:

*/30 * * * * /home/pi/scripts/TempCPURasp.sh

Donde */30 significa cada 30 minutos, a todas horas y todos los días. Al final ponemos la ruta de nuestro script.

Seguridad: Log

Si visualizamos el siguiente log /var/log/syslog nos muestra cuando se ejecuta alguna tarea programada además de más información. Para aislar esta información, lo que vamos hacer es crear un log donde nos informe de que se a ejecutado el script.

Por eso al final del script hay esto:

data=`date`
usu=`uname`
ini=`echo "Script ejecutado con éxito"`
echo "$data - $usu - $ini" >> $rutalog/TempCPURasp

Descargar Script

He subido el Script completo en el Code de PortalLinux para que os lo podáis descargar.

Y para acabar..he dedecir que..este post..ES LA LECHE! Jaja..

este_post_es_la_leche

Zagur

Técnico en Informática en microsistemas y redes. Estudiando actualmente Desarrollo de aplicaciones web. #GNU #Linux #CSS #HTML #Python #SoftwareLibre #OpenSource

19 thoughts on “Raspberry Pi: Notificación de la temperatura de la CPU por WhatsApp

    1. Después de buscar sin éxito servicios similares, opte por registrar el numero fijo de mi casa por medio de mensaje de voz

      python yowsup-cli -c config.example –requestcode voice

      UnknownUnknown
    1. Uhm, pensaba que FonYou también funcionaba para gente no residente en España.. La verdad es que no sé si existe este tipo de servicio en América Latina eso sería buscar un poquito por Google, seguro que tiene que haber este servicio.

      Saludos.

      UnknownUnknown
      1. Si, hay varios servicios, pero eso seria tambien encontrar un script que funcione para ese servicio en particular.
        El problema principal de FonYou para quienes no tienen un tel español es el password que te envia por SMS. El resto creo que es facil de saltear

        UnknownUnknown
          1. Gracias, la voy a investigar. No me olvido qeu te debo una respuesta sobre el post de “motd” que me daba error.

            UnknownUnknown
          1. Gracias por recordar mi problema y avisarme de esto!
            Ahora la duda que tengo es la siguiente: Yowsup sirve para registrar en Whatsapp el telefono YA creado en FonYou, correcto?

            Porque mi problema es al intentar crear un numero virtual en FonYou ya que
            para poder hacer eso, necesito un numero movil español. Y
            lamentablemente, no es mi caso. Si yo pudiera lograr acceder a un telefono virtual de FonYou se me solucionarian todos los problemas.

            UnknownUnknown
  1. Está chulo.
    Conocía de oídas el Yowsup, pero la verdad es que va bastante bien, me gusta, me gusta!

    UnknownUnknown
      1. Disculpa que no respondiera, este fin de semana he estado fuera y estos dos últimos días he tenido problemas con la web y no cargaba! Lo siento!

        UnknownUnknown
  2. Por problemas legales ya no esta disponible en el github….

    Alguien tiene alguna copia para poder usarlo???

    Gracias!!

    UnknownUnknown

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

WP-SpamFree by Pole Position Marketing