Back-end

Sitio: Facultad de Ingeniería U.Na.M.
Curso: IC511 - Internet de las Cosas, Sensores y Redes
Libro: Back-end
Imprimido por: Invitado
Día: miércoles, 3 de julio de 2024, 06:20

1. Introducción

El gran poder de Docker reside en poder utilizar sin esfuerzo las imágenes creadas por los desarrolladores de las aplicaciones más populares. Una gran cantidad de ellas están agrupadas en el repositorio oficial de docker: docker-hub


2. Base de datos

MariaDB

MariaDB Server es uno de los servidores de bases de datos más populares en el mundo.
MariaDB es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL (General Public License). Es desarrollado por Michael (Monty) Widenius —fundador de MySQL—, la fundación MariaDB y la comunidad de desarrolladores de software libre.
Es la base de datos que utiliza Wikipedia.

2.1. Docker-compose


$ git clone https://github.com/GermanXander/docker_iot.git

# branch BEa

2.2. phpmyadmin

phpMyAdmin es una herramienta de software libre escrita en PHP, pensada para manejar la administración de MySQL a través de la  Web. phpMyAdmin soporta un amplio rango de operaciones de MySQL y MariaDB. Operaciones frecuentes tales como: administración de la base de datos, tablas, columnas, relaciones, índices, usuarios, permisos, etc; pueden realizarse vía interfaz de usuario manteniendo la capacidad de ejecutar sentencias SQL directamente.

ya podemos acceder a la interfaz web de phpmyadmin dirigiéndonos a la IP de nuestra rpi y el puerto asignado (8080)

SQL

Se adjunta un archivo sql con los comandos para la creación de la base de datos, la tabla con sus campos y un usuario con permisos restringidos.


3. Cliente mqtt

Nuestro nodo remoto (esp32) nos envía información sobre temperatura y humedad, empaquetada en un JSON (JavaScript Object Notation). Esta información la publica en un broker mqtt bajo el tópico del identificador único del módulo esp32.

Nuestro cliente mqtt se suscribe a todos los tópicos para recibir información de todos los nodos. Luego desempaqueta el JSON y guarda la información en la base de datos. Todo esto utilizando librerías asincrónicas.

Cada registro de la base de datos está compuesto por un identificador único (auto incremental), una marca temporal, el id del nodo que envió la información, la temperatura y la humedad.

$ git clone https://github.com/GermanXander/docker_iot.git

# branch BEb

4. Broker mqtt

vamos a instalar nuestro propio servidor (broker) mqtt. En esta caso mosquitto

# branch BEc

Cuando ejecutamos por primera vez el servidor este solo acepta conexiones locales. Para permitir conexiones desde otras IP debemos editar el archivo de configuración. Por cuestiones facilidad y persistencia vamos a mapear el archivo de configuración a un directorio de nuestra rpi. Para ello seguimos los siguientes pasos:

  1. creamos un directorio "config" dentro de mosquitto
  2. con el contenedor mosquitto corriendo extraemos el archivo de configuración "plantilla"

    ~/docker $ docker cp mosquitto:/mosquitto/config/mosquitto.conf mosquitto/config/mosquitto.conf
  3. editar el archivo /mosquitto/config/mosquitto.conf y agregar las siguientes líneas
    
    listener 1883 
    protocol mqtt
    allow_anonymous true
    
    
  4. editamos el archivo compose.yaml para mapear el directorio config
  5. volvemos a levantar el compose

    ~/docker $ docker compose up -d
Listo, ya podemos probar nuestro broker, en la red local, con mqtt explorer utilizando la IP de la rpi con dirección del servidor. Por ahora solo en el puerto 1883 (sin cifrado)