Si eres usuario de un smartphone seguro que conocerás que, una de las aplicaciones más que similares y de gran fama de Whatsapp es Telegram, un cliente de mensajería muy versátil que, presenta varias peculiaridades como la posibilidad de poder utilizar el mismo número de teléfono desde diferentes dispositivos de forma simultánea. Gracias precisamente a esta característica hoy quiero presentarte un pequeño tutorial con el que podrás enviar mensajes de texto e incluso archivos multimedia a tus contactos desde una Raspberry Pi.
Tanto o más interesante es el hecho de que podamos configurar nuestra Raspberry Pi de forma que, ante cierto comando recibido por Telegram nuestra tarjeta pueda ejercer algún funcionamiento adicional, es decir, imaginemos que enviamos por Telegram a nuestra tarjeta la palabra «foto» y esta nos devuelve una imagen de cualquier estancia de la casa, «luz» para que automáticamente se encienda una luz cualquiera o «abrir» para que automáticamente se abra la puerta del garaje.
Seguro que esta funcionalidad adicional te ha llamado bastante la atención. Si es así nos ponemos manos a la obra no sin antes comentarte que necesitaremos para llevar a cabo el proyecto una Raspberry Pi B o Raspberry Pi B+ así como una tarjeta microSD de 8 GB Clase 10 con la última versión de Raspbian preinstalada.
Una vez disponemos de todo lo anterior arrancamos y desde un Terminal comenzamos con la actualización y configuración básica. Seguro que habrá muchos usuarios que esto no lo necesiten pero mejor lo hacemos todo paso a paso y a buen ritmo para no saltarnos nada. Comenzamos ejecutando y actualizando los paquetes con:
sudo apt-get update
sudo apt-get upgrade
Seguimos con la instalación y actualización de varias librerías indispensables donde el sistema encontrará todas las librerías que necesitamos
sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 li-blua5.2-dev libevent-dev make
Turno del repositorio de GitHub
git clone --recursive https://github.com/vysheng/td.git && cd tg
./configure
make
Una vez tenemos todo instalado es turno de configurar lua, un potente y rápido lenguaje para script. La sintaxis es muy sencilla, en nuestro Terminal ejecutamos:
sudo nano /home/pi/tg/action.lua
y añadimos el siguiente contenido:
function on_msg_receive (msg) if msg.out then return end if (msg.text=='ping') then send_msg (msg.from.print_name, 'pong', ok_cb, false) end end function on_our_id (id) end function on_secret_chat_created (peer) end function on_user_update (user) end function on_chat_update (user) end function on_get_difference_end () end function on_binlog_replay_end () end
Con lo anterior tendríamos prácticamente todo configurado de forma que, cuando nosotros enviemos a Telegram el texto «ping» este nos devolverá «pong«.
Nos movemos al directorio tg
cd /home/pi/tg
Ejecutamos la siguiente orden
bin/telegram-cli -k tg-server.pub -W -s action.lua
Llega el momento de comenzar con las pruebas y enviar nuestro «ping» a Telegram, acto seguido y como puedes ver en la imagen la respuesta es nuestro esperado «pong«. Hay que tener en cuenta si utilizamos mayúsculas o no ya que el sistema es sensible a su uso.
Si lo que queremos es que, en lugar de «pong» nuestra Raspberry Pi devuelva una imagen, en la función donde enviamos la respuesta tan sólo tendríamos que indicar al sistema que realice una foto utilizando una cámara previamente instalada y nos la envíe.
Enlace: instructables
Viendo las posibilidades de esto se me ocurrió que quizás estaría bien poder enviar de forma segura cualquier comando a mi raspberry (o a cualquier servidor Linux) desde telegram y obtener la salida. Incluso crear alias de comandos para no tener que escribir demasiado, gestionar usuarios que puedan hacer lo mismo sobre la misma maquina para que cualquiera no pueda hacer lo que le de la gana… etc
Me he puesto a ello y hoy he publicado ‘Obedience’.
Si alguien quiere trastear y probarlo, adelante
https://github.com/GuillermoPena/obedience
Hola Guillermo,
No me ha dado mucho tiempo a revisar todo pero he de decirte que tiene muy buena pinta. Si tengo tiempo este mismo fin de semana lo pruebo todo a ver que tal.
Muchas gracias por tu trabajo!!!
hola, excelente post, me encanto! solo quisiera saber si hay forma de ejecutar el script .lua de forma automática en el arranque, saludos!