Dispositivo IoT a través del protocolo MQTT
Date
2023Abstract
Teniendo en cuenta la gran importancia que los dispositivos IoT están recibiendo en nuestro día a día, la finalidad de este trabajo ha sido explorar la viabilidad y el desarrollo de un dispositivo IoT en todos sus ámbitos, desde la programación del SoC ESP32, hasta la parte del servidor, la cual se encarga de publicar todo el stack de aplicaciones necesarias para recoger, interpretar y mostrar la información recogida por dicho ESP32.
El dispositivo que se va a mostrar a lo largo de todo este trabajo es un termostato, el cual posee una interfaz gráfica local que permite al usuario interactuar con él, gracias al panel táctil integrado en la placa de desarrollo. También, este dispositivo es capaz de trabajar en modo sin conexión, gestionar redes WiFi y conectarse a un servidor, con el fin de visualizar todos los datos recogidos por sus cuatro sensores, reportar alertas, etc.
Por la parte del servidor, todo el software ha sido desplegado en contenedores Docker, formando el siguiente stack de aplicaciones: Traefik, un reverse proxy que gestiona las comunicaciones entrantes al servidor y aporta los certificados SSL necesarios; Portainer, un gestor de contenedores de Docker; Mosquitto, un bróker para las comunicaciones del protocolo MQTT; InfluxDB, una base de datos gestionada por marcas de tiempo; NodeRED, una herramienta gráfica que se sitúa entre Mosquitto e InfluxDB y que permite crear unos flujos de trabajo que interpretan y manejan la información entre ambas aplicaciones; finalmente, Grafana, la aplicación responsable de publicar toda la información recogida en InfluxDB de formal visual y fácil de entender.
Para llevar este proyecto a cabo se han requerido tener conocimientos multidisciplinares, ya que se necesitan conocimientos de programación, diseño CAD, networking, contenedores, electrónica, administración de sistemas, etc.
Finalmente, esta memoria mostrará todas las capacidades que el sistema desarrollado puede llevar a cabo. Bearing in mid the increasing influence of IoT devices in our everyday, the purpouse of this work was to explore the viability and development of such device in every aspect, from the programming of the ESP32 to the configuration of the server, which is responsible of publishing the ful! stack of applications required, in arder to gather, interpret and show all the data provided by the ESP32.
The device developed is a thermostat that has a local G UI. Said G UI allows the user to interact with the device thanks to the touch panel included with the development kit. By the way, this device is capable of working locally, manage WiFi networks and it connects to a server too, with the objective of providing a visualization of every data gathered by its four sensors, manage alerts, etc.
From the server side, every software deployed is in Docker containers, forming the following stack of applications: Traefik, a reverse proxy wich manages every communication comming to the server and prodives SSL certicates too; Portainer, a Docker management software; Mosquitto, a broker that manages the communication through the MQTT protocol; InfluxDB, a time-based database; NodeRED, a graphical too! that sits between Mosquitto and InfluxDB, which creates workflows that interpret and manage the whole information between said applications; finally, Grafana; an application that is responsible of publishing every data located in InfluxDB, in a visual and easy to understand way.
In arder to finish this project, it has been required multidisciplinary knowledge, due to the need of programming, CAD software desing, networking, electronics, containers and system administration skills.