lunes, 9 de marzo de 2015

Tus propias Notificaciones Inteligentes - Parte 4 Hangouts-CenterIM

Durante esta serie de mini artículos sobre notificaciones inteligentes(PushOver, Pushetta y Pushbullet) desde diversos dispositivos, hemos aprendido a recibir alertas desde diferentes aplicaciones con acceso a Internet centrándonos en el uso de cURL como método de envió.

Hoy voy a escribirles sobre


Hangouts, el chat de google, el cual nos va a permitir no solo recibir notificaciones, también nos dejara darle ordenes a nuestro dispositivo, en mi caso un Raspberry Pi.


Para poder trabajar con hangouts hoy probaremos CenterIM, básicamente este software en modo texto es un cliente multiprotocolo que funciona en sistemas operativos basados en unix.

Para instalarlo en sistemas basado en Debian/Ubuntu debemos ejecutar las siguientes lineas:
sudo apt-get update
sudo apt-get install centerim 
Una vez instalados debemos ejecutar el centerim al menos una vez para que cree los archivos requeridos. Luego de esto cerramos centerim y modificamos el archivo de configuración


nano /home/usuario/.centerim/config

y agregaremos las siguientes lineas

jab_nick        usuario@gmail.com
jab_pass        password
jab_server      talk.google.com:5223
jab_osinfo      1
jab_prio        4
jab_ssl          1
jab_status      o

En jab_nick debemos poner nuestra cuenta gmail o una de Google at work, como buena practica se recomienda que se cree una cuenta especial para este uso y los mensajes te lleguen de mejor manera.

Una función que nos va a ser de mucha utilidad es poder crear la posibilidad que el dispositivo donde tenemos el Centerim instalado nos pueda responder con lo cual podemos crear comandos, para eso debemos crear si no exite o modificar el archivo  external
nano /home/usuario/.centerim/external
Donde vamos a agregar las siguientes lineas

%action contestador_Comandos
event msg
proto all
status all
options stdin stdout
%exec
msg=`cat`
/bin/bash /ruta/archivo.sh $msg
 En ruta se pone la ruta donde esta el script y cambiar archivo.sh por el nombre de archivo que crearon.

Un ejemplo de como puede ser el archivo es:

#!/bin/bash
# Hecho por @bettocr(www.betto.me)
case $1 in
        ip)
                ifconfig eth0 | grep inet | cut -d: -f2 | cut -d" " -f1
        ;;
        hd)
               df -h
        ;;
        
 *)
     echo "Comandos hd, ip"
;;
esac

El * es para que cuando el comando que enviemos no este no diga cuales comandos entiende. Es importante mencionar que por centerim se envia N cantidad de parámetros según lo que nosotros digitemos en el hangouts diferenciando entre paramentos el espacio.

por ejemplo si digitamos
status ip
Nuestro script va a recibir 2 parametros "status" e "ip" por lo que tenemos hacer que el script interprete esto y nos devuelva lo queremos.

Aquí una imagen de ejemplo que corre desde mi raspberry PI



Si vamos a correr centerim en el usuario root debemos copiar la carpeta .centerim y todo su contenido a este
sudo cp -r /home/usuario/.centerim/external /root/
Recuerden cambiar usuario por el nombre de su usuario.

Para correr el script en background podemos usar
sudo centerim &
La segunda forma de correrlo en background es usando screen que nos va permitir crear terminales virtuales.
 screen -dmS centerim /usr/bin/centerim
también lo podemos agregar en el crontab para que cada vez que el equipo se reinicie se ejecute en la consola virtual
@reboot screen -dmS centerim /usr/bin/centerim

Ahora si necesitamos que un script nos envié notificaciones, usamos la siguiente linea.
echo "hola mundo " | centerim -s msg -p jab -t usuario@gmail.com
Por experiencia les digo que este tipo de notificaciones son mas lentas a veces que las push, pero en este caso nos da la potencia de poder enviar comandos a nuestro dispositivo para que se realicen acciones.

Importante que para poder enviar mensajes tenemos que tener los usuarios agregados en la cuenta que va a enviar los mensajes.