Compartir

Compartir en GNU Social Compartir en Diaspora*

Avisos por XMPP

Cotilleando por otros blogs encontré este interesante artículo para notificar por whatsapp la temperatura de la raspberry y al leerlo me dijo joer, está bastante bien pero ¿por qué usar whatsapp?. Así que le dí una rápida pensada y adapté la parte que me interesaba para recibir notificaciones vía XMPP.

Mientras buscaba como iba lo de enviar mensajes desde la terminal, recordé (cosa rara en mí) que en elbinario se había tratado ya este tema así que una sencilla búsqueda me llevó al artículo sendxmpp: Notificaciones ante eventos en un Jabber.

Desgraciadamente había entrado yo en modo torpe avanzado (mi estado natural suele ser simplemente torpe, pero ese día debía estar mucho más espeso que de costumbre) y fuí incapaz de hacerlo funcionar tal como viene en el artículo (obviamente doy por hecho que el fallo estaba en mi lado y no en el texto). Al final tras trastear con las opciones de sendxmpp lo que me funcionó fue lo siguiente:

  1. Instalé sendxmpp a partir de los repositorios
    apt-get install sendxmpp
  2. Creé un archivo .sendxmpprc en el home de mi usuario, con permisos 600 para incluir la cuenta xmpp y password que usaré para hacer los envíos de los mensajes:
    cuentaxmpp@servidor.loquesea lapassworddelacuentaanterior
  3. Escribí el texto de mi mensaje (un apasionante "hola yo") en un fichero de texto (mimensaje.txt)
  4. Ejecuté sendxmpp con los siguiente parámetros:
    /usr/bin/sendxmpp -t -m LARUTAAMIFICHERO/mimensaje.txt cuentaxmppdestino@servidor.elquesea

Y al momento recibí en mi cuenta XMPP el mensajito de marras.

De esta forma y fusilando (por si hubiera dudas de la expresión me refiero a copiando descaradamente) el script de Portallinux, el conseguir que nuestra raspberry nos avise por XMPP de su situación quedaría de la siguiente forma:

#!/bin/bash

temperatura=$(/opt/vc/bin/vcgencmd measure_temp | cut -d"=" -f2 | cut -d"." -f1)
decimales=$(/opt/vc/bin/vcgencmd measure_temp | cut -d"=" -f2 | cut -d"." -f2 | cut -d"'" -f1)

ruta="/home/osmc"
temperaturamaxima=50
temperaturaapagado=60

if [ ${temperatura} -ge ${temperaturamaxima} ]; then                                                                                                      
   echo "¡¡Ehh colega, que me estoy calentando demasiado!! La temperatura (${temperatura},${decimales}ºC) supera el máximo de ${temperaturamaxima}ºC" > ${ruta}/avisotemperatura.txt
   /usr/bin/sendxmpp -t -m ${ruta}/avisotemperatura.txt cuentadestinoxmpp@servidor.loquesea
   if [ ${temperatura} -ge ${temperaturaapagado} ]; then
      echo "Me voy a apagar un rato porque de lo contrario voy a salir ardiendo. Superada la temperatura ${temperaturaapagado}ºC"> ${ruta}/avisotemperatura.txt
      /usr/bin/sendxmpp -t -m ${ruta}/avisotemperatura.txt cuentadestinoxmpp@servidor.loquesea
      sudo /sbin/halt                
   fi
fi

Así, lo único que queda hacer es configurar el cron para que este proceso se ejecute cada x minutos. Si no queremos que el script apague la máquina cuando se supera la temperatura crítica lo único que hay que hacer es eliminar del script anterior el código:

   if [ ${temperatura} -ge ${temperaturaapagado} ]; then
      echo "Me voy a apagar un rato porque de lo contrario voy a salir ardiendo. Superada la temperatura ${temperaturaapagado}ºC"> ${ruta}/avisotemperatura.txt
      /usr/bin/sendxmpp -t -m ${ruta}/avisotemperatura.txt cuentadestinoxmpp@servidor.loquesea
      sudo /sbin/halt
fi