Skip to content

javimartin22/ecobot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EcoBot

Acerca del Proyecto

Se presenta un sistema de recomendaciones de eficiencia energética para gestionar el uso de los electrodomésticos en los hogares mediante un bot de la aplicación de mensajería Telegram. La comunicación con el sistema se establece mediante el escaneo de códigos QR asociados a distintos electrodomésticos. El código QR contiene información sobre las especificaciones de cada electrodoméstico como son la marca, modelo, categoría de eficiencia energética, etc. Dicho código QR es enviado mediante una fotografía, que es tratada de forma automática para distinguir el código QR del resto del entorno de la imagen tomada por el usuario. Como respuesta a cada interacción iniciada por el usuario, se proporciona información de interés mediante preguntas sobre hábitos de eficiencia energética y tarifaria.

image

Getting Started

El repositorio contiene todo lo necesario para desplegar el sistema de manera local. Siga los siguientes pasos para su .

Dependencias a instalar para la ejecución en local

  1. Descarga e instalación de Docker Desktop para Windows desde la siguiente URL

  2. Si tu sistema operativo es Windows debes descargar el subsistema de Windows para Linux, para la ejecución de Docker. URL

  3. Instalación de MongoDB Server. URL

  4. Instalación del cliente MongoDB Composer. URL

  5. Instalación del paquete XAMPP para el servicio web de comentarios PHP. URL

Ejecución en Docker

A continuación, se deben construir las imágenes Docker en tu sistema local y finalmente instanciar los contenedores. Para ello, desde el terminal se ejecutan los siguientes comandos:

  1. Construcción de las imágenes. Ejemplo para la construir la imagen del servicio del bot, a ejecutar en terminal desde el directorio /src/bot.
    docker build -t bot .
  2. Creación de red docker.
    Docker network create -–subnet=192.168.50.0/24 mynet
  3. Instanciación contenedores. Ejecución de los contenedores, ejemplo para el servicio del bot.
    docker run -d --name=qr-bot --net=mynet --ip=192.168.50.10 bot

Funcionalidad

El sistema está concebido bajo una arquitectura de microservicios. Los servicios presentes en el sistema son los siguientes:

Bot de Telegram: Recibe los mensajes, fotografías y comandos de los usuarios. Además, cumple el papel de Gateway y redirige las imágenes o datos recibidos a los servicios correspondientes.

Escáner de QR: Recibe las fotografías de los códigos QR tomadas por los usuarios y realiza un procesado de imagen para proceder con la decodificación del contenido del código QR.

Gestor de datos: Gestiona todas las funciones de almacenamiento de información en la base de datos:

  • Logs: Se guarda la información de cada escaneo del código QR junto con una serie de identificativos acerca del usuario de Telegram y, finalmente, fecha y hora del envío.
  • Usuarios: Almacenamiento de datos acerca de cada usuario de Telegram con los que el bot entra en contacto.
  • Respuestas: Guardado de las respuestas de los usuarios a las preguntas y recomendaciones enviadas.

Motor de reglas: El motor de reglas se encarga de filtrar las preguntas y recomendaciones que son enviadas al usuario en función de una serie de criterios a partir de los datos que se extraen del escaneo del código QR: datos acerca del electrodoméstico, fecha y hora... Se ha utilizado el motor de reglas durable-rules para la definición formal de las reglas, de manera que son agnósticas a cambios en el resto del código.

Servicio de Comentarios: Sitio web que contiene una página para cada pregunta que envía el bot. En esta página se habilita la posibilidad de añadir comentarios a los usuarios, que se deben loguear en la página web a través de Telegram.

image image

Autor✒️

Javier Martín Aizpuru

Construido con 🛠️

  • Pyzbar - Librería de Python para decodificación código QR.
  • Pillow - Librería de Python para funciones de procesado de imagen.
  • Pymongo - Cliente de MongoDB.
  • Durable-rules - Motor de reglas.
  • Telegram Bot API - API de Telegram para el desarrollo de bots.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published