Implementar un sistema de seguridad o de notificación sencilla en nuestro hogar es posible de forma economica, ayudado de las nuevas tecnologías que tenemos a la mano. Podemos notificar un evento de nuestro hogar como cuando se abre o cierra una puerta, sensa movimiento o detectar alguna fuga de gas etc.

Para el caso vamos a usar 2 servicios y un controlador:
El servicio Lambda de AWS, que permite ejecutar código sin aprovisionar código, y solamente se paga lo que se consume, teniendo incluso una capa gratuita de consumo de 1’000.000 de ejecuciones por mes.
El servicio de Telegram, que permite la creación de robots que estos a su vez se comunican a traves de su API.
Por último vamos a utilizar el modulo NODEMCU que tiene lo necesario para conectarse a la red wifi del hogar y tiene varias entradas donde podemos conectar nuestros sensores. 

 

El primer paso es crear nuestro robot de telegram, del cual necesitaremos el token para comunicarnos a través de la api.
Aqui un enlace de creación del bot.

Lo siguiente es crear la función de lambda que se comunique con telegram
Aqui el enlace que detalla los pasos mínimos con el toolkit de serverless.

Del tutorial anterior comprobamos comunicación entre lambda y telegram, ahora en el archivo handler.py creamos la función con la cual obtendremos el id del chat el cual queremos que lleguen nuestras notificaciones

 

 

Codigo:

Las función que recibe los datos del controlador, y son las encargada de enviar las notificaciones a telegram. Esta función también recibe del controlador una señal de vida y la almacena en dynamoDb, esto es util para saber cuando el controlador dejo de funcionar y enviar una notificacion.

 

Codigo:

Y la función que se ejecutará recurrentemente para comprobar si el controlador está activo, esta lee el valor de señal de vida del controlador, dependiendo de su antiguedad envia una notificacion de inactividad.

Codigo:

Debemos provisionar la base de datos dinamoDB para almacenar la actividad del controlador. en el archivo resources/dynamodb-table.yml llenamos la definicion de la tabla

Codigo:   

finalmente el archivo que provisiona los recursos y los permisos necesarios para que lambda se comunique con la base de datos serverless.yml y la definicion de las funciones para generar los endpoint necesarios.

Codigo:  

una vez con los endpoints

POST – https://xxxx.execute-api.us-east-2.amazonaws.com/dev/getfromtelegram
se enlaza como webhook de telegram para recibir la comunicacion desde el robot.

POST – https://xxxx.execute-api.us-east-2.amazonaws.com/dev/getfromarduino
se enlaza al controlador para recibir los eventos y notificaciones de actividad.
El controlador envía al webhook el json con el valor del estado.

Hay algunos problemas que solucionar, el controlador utilizado no es capaz de conectarse por ssl por lo cual usamos un script intermedio en un webhost que hace de intermediario.

 El proyecto completo

https://github.com/seyacat/arduino-telegram-bot/

 

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *