Stack IoT y Servicios de Infraestructura ========================================= Esta sección describe el stack IoT que soporta el sistema de red mesh agrícola, incluyendo la infraestructura de servicios containerizados con Docker. Arquitectura del Stack IoT -------------------------- El sistema utiliza un conjunto de servicios containerizados que trabajan en conjunto para proporcionar una solución completa de IoT: .. mermaid:: graph TB subgraph "Stack IoT Completo" subgraph "Capa de Sensores" A[Nodos ESP32] --> B[Gateway LoRa] end subgraph "Capa de Comunicación" B --> C[Mosquitto MQTT
Puerto 1883] B --> D[Mosquitto WebSocket
Puerto 9001] end subgraph "Capa de Procesamiento" C --> E[Node-RED
Puerto 1880] D --> E end subgraph "Capa de Almacenamiento" E --> F[InfluxDB
Puerto 8086] end subgraph "Capa de Visualización" F --> G[Grafana
Puerto 3000] end end Servicios del Stack IoT ======================= InfluxDB - Base de Datos de Series Temporales ---------------------------------------------- **InfluxDB** es la base de datos de series temporales que almacena todos los datos de sensores del sistema agrícola. .. image:: image/3b4b2b04-d47f-43a2-8f3c-509a0c8e5bee.jpeg :alt: Configuración de InfluxDB :align: center :width: 600 **Descripción de la imagen:** Esta captura muestra la interfaz de administración de InfluxDB donde se configuran las bases de datos, usuarios y políticas de retención. Se pueden observar las configuraciones de autenticación y las opciones de gestión de datos temporales para el almacenamiento de información de sensores agrícolas. **Características principales:** - Almacenamiento optimizado para datos de series temporales - API REST para consultas y escritura de datos - Políticas de retención automáticas - Consultas SQL-like con InfluxQL **Acceso:** http://localhost:8086 Grafana - Visualización y Dashboards ------------------------------------ **Grafana** proporciona dashboards interactivos para visualizar los datos de sensores en tiempo real. .. image:: image/69fd6074-0f6e-496e-ad7c-bfd86b251a17.jpeg :alt: Dashboard de Grafana con métricas agrícolas :align: center :width: 600 **Descripción de la imagen:** Dashboard principal de Grafana mostrando gráficos en tiempo real de temperatura, humedad, presión atmosférica y otros parámetros ambientales. Se observan múltiples paneles con diferentes visualizaciones como gráficos de líneas, gauges y tablas de datos que permiten monitorear el estado del sistema agrícola en tiempo real. **Características principales:** - Dashboards interactivos y personalizables - Múltiples tipos de visualización (gráficos, tablas, gauges) - Alertas automáticas basadas en umbrales - Integración nativa con InfluxDB **Acceso:** http://localhost:3000 (usuario: admin, contraseña: admin) Node-RED - Procesamiento de Flujos ---------------------------------- **Node-RED** es el motor de procesamiento que gestiona el flujo de datos entre los sensores y los servicios de almacenamiento. .. image:: image/c0086f25-f7b7-4111-b488-d5849bdb6729.jpeg :alt: Flujo de Node-RED para procesamiento de datos :align: center :width: 600 **Descripción de la imagen:** Interfaz de Node-RED mostrando un flujo de trabajo complejo que incluye nodos MQTT para recepción de datos, transformaciones de datos, validaciones y envío a InfluxDB. Se observan múltiples conexiones entre nodos que representan el flujo de procesamiento desde la recepción de datos de sensores hasta su almacenamiento final. **Características principales:** - Editor visual de flujos drag-and-drop - Nodos predefinidos para IoT y MQTT - Procesamiento en tiempo real - Transformación y validación de datos **Acceso:** http://localhost:1880 Mosquitto MQTT - Broker de Mensajería ------------------------------------- **Mosquitto** es el broker MQTT que maneja la comunicación entre los nodos sensores y los servicios de procesamiento. .. image:: image/6265188e-8d33-4f4d-9901-c90dec6407ba.jpeg :alt: Configuración del broker Mosquitto MQTT :align: center :width: 600 **Descripción de la imagen:** Panel de administración de Mosquitto mostrando la configuración del broker, tópicos activos, clientes conectados y estadísticas de mensajes. Se pueden observar las configuraciones de seguridad, usuarios y permisos de acceso que permiten la comunicación segura entre los nodos sensores y el sistema de procesamiento. **Características principales:** - Broker MQTT ligero y eficiente - Soporte para QoS (Quality of Service) - Autenticación y autorización - Persistencia de mensajes **Puertos:** 1883 (MQTT), 9001 (WebSocket) Implementación Docker ===================== El stack IoT completo se implementa utilizando Docker Compose para facilitar el despliegue y gestión de servicios. Despliegue con Docker Compose ----------------------------- .. image:: image/65555b6b-3e2f-40a8-aa66-abe0aa746c93.jpeg :alt: Configuración Docker Compose para el stack IoT :align: center :width: 600 **Descripción de la imagen:** Terminal mostrando la ejecución de `docker compose up` con todos los servicios del stack IoT iniciándose. Se observan los logs de cada contenedor (InfluxDB, Grafana, Node-RED, Mosquitto) y el estado de inicialización de cada servicio, confirmando que todos los componentes se levantan correctamente. **Comando de despliegue:** .. code-block:: bash docker compose -f docker compose-iot.yml up -d Configuración de Red Docker --------------------------- .. image:: image/d046ff00-246e-4d78-ae4f-fc60e46e9b0d.jpeg :alt: Configuración de red Docker para servicios IoT :align: center :width: 600 **Descripción de la imagen:** Diagrama de red Docker mostrando cómo los contenedores se comunican entre sí a través de una red personalizada. Se observan las conexiones entre InfluxDB, Grafana, Node-RED y Mosquitto, así como la exposición de puertos al host para acceso externo a los servicios. Tabla de Puertos y Servicios ============================ La siguiente tabla describe todos los puertos utilizados por el stack IoT: .. list-table:: Puertos del Stack IoT :widths: 10 30 60 :header-rows: 1 * - Puerto - Servicio - Descripción * - *8086* - 🟢 *InfluxDB* - Interfaz HTTP de la base de datos de series temporales. Accesible en http://:8086. * - *1880* - 🟠 *Node-RED* - Interfaz web del entorno de flujos. Accesible en http://:1880. * - *1883* - 🔵 *Mosquitto (MQTT)* - Puerto estándar MQTT para publicar y suscribirse a tópicos. * - *3000* - 🟣 *Grafana* - Interfaz de visualización de dashboards. Accesible en http://:3000. * - *9001* - ⚙️ *Mosquitto WebSocket* - Puerto adicional de *Mosquitto* para conexiones *MQTT sobre WebSocket* (usado, por ejemplo, cuando Node-RED o aplicaciones web se conectan mediante ws://:9001). Flujo de Datos del Sistema ========================== .. image:: image/d0efe62b-82cf-4238-aff3-5d7d2400f566.jpeg :alt: Diagrama de flujo de datos del sistema IoT :align: center :width: 600 **Descripción de la imagen:** Diagrama de flujo completo que muestra cómo los datos fluyen desde los sensores ESP32, a través del gateway LoRa, hacia Mosquitto MQTT, luego a Node-RED para procesamiento, después a InfluxDB para almacenamiento, y finalmente a Grafana para visualización. El diagrama ilustra la arquitectura completa del sistema de monitoreo agrícola. Monitoreo y Mantenimiento ========================= .. image:: image/4b62c527-ed36-4cd3-ae18-f33d30508489.jpeg :alt: Panel de monitoreo de servicios Docker :align: center :width: 600 **Descripción de la imagen:** Interfaz de monitoreo que muestra el estado de todos los contenedores Docker, uso de recursos (CPU, memoria), logs en tiempo real y métricas de rendimiento. Se observan indicadores de salud para cada servicio del stack IoT, permitiendo un monitoreo continuo del sistema. **Herramientas de monitoreo:** - Docker Stats para métricas de contenedores - Logs centralizados con Docker logging - Health checks configurados - Alertas automáticas en Grafana Seguridad y Configuración ========================= .. image:: image/WhatsAppImage2025-10-19at08.53.03.jpeg :alt: Configuración de seguridad del stack IoT :align: center :width: 600 **Descripción de la imagen:** Panel de configuración de seguridad mostrando configuraciones de autenticación, certificados SSL/TLS, políticas de acceso y configuraciones de red segura para el stack IoT. Se observan las opciones de configuración que garantizan la seguridad de la comunicación entre servicios. **Consideraciones de seguridad:** - Autenticación en todos los servicios - Certificados SSL para conexiones seguras - Políticas de firewall restrictivas - Backup automático de configuraciones Uso del Sistema =============== **Acceso a los servicios:** 1. **InfluxDB (Puerto 8086):** - Interfaz web para administración de bases de datos - API REST para consultas y escritura de datos - Configuración de políticas de retención 2. **Grafana (Puerto 3000):** - Dashboards de visualización - Configuración de alertas - Gestión de usuarios y permisos 3. **Node-RED (Puerto 1880):** - Editor visual de flujos - Configuración de nodos MQTT - Transformación de datos 4. **Mosquitto (Puertos 1883/9001):** - Broker MQTT para comunicación - WebSocket para conexiones web - Gestión de tópicos y clientes **Flujo de trabajo típico:** 1. Los sensores ESP32 envían datos al gateway LoRa 2. El gateway publica los datos en tópicos MQTT 3. Node-RED procesa y transforma los datos 4. Los datos se almacenan en InfluxDB 5. Grafana visualiza los datos en dashboards .. note:: Para más detalles técnicos específicos de cada servicio, consulta la documentación oficial de InfluxDB, Grafana, Node-RED y Mosquitto.