Trabajo
UniversidadUniversidad · IoT

Oxaira

AirQ, un sistema de monitoreo de calidad del aire: un dispositivo con ESP32, servicios en Spring Boot, mensajería y apps web y móvil.

Ver sitio en vivo

Captura de Oxaira
SYSTEM.md

El problema

Los datos de los sensores deben llegar a una interfaz comprensible y disparar alertas sin acoplar la captura, el análisis y el aviso.

Qué construí

Un dispositivo ESP32 con sensores DHT11 y MQ135 envía lecturas por HTTP. Servicios Spring Boot separados cubren la analítica y las alertas, las notificaciones y los SMS con Twilio, con apps en Angular y Flutter.

Resultado

Un sistema de servicios independientes, de la placa al teléfono. Documentado a partir de los repositorios del equipo.

Decisiones que importaron

  1. 01

    Un servicio, una responsabilidad

    Analítica, notificaciones y SMS son servicios aparte, cada uno con su propia base de datos.

  2. 02

    Dominio de calidad del aire

    El servicio de analítica modela lecturas, alertas e insights como agregados, con comandos y consultas separados.

  3. 03

    Mensajería para desacoplar

    RabbitMQ lleva las alertas hacia notificaciones, y Kafka se exploró para el flujo de eventos.

Tecnologías

  • Spring Boot
  • RabbitMQ
  • Kafka
  • MySQL
  • Angular
  • Flutter
  • ESP32

Modelo C4. La línea con pulso es el recorrido principal de una solicitud.

Nivel 1 · quién usa el sistema y con qué se conecta

HTTPS1HTTP · JSON2HTTPS3ResidenteConsulta el aire de su zonaDispositivo AirQ[ESP32 · C++ · DHT11 + MQ135]Mide temperatura, humedad yCO₂AirQMonitoreo de calidad delaireTwilio[Twilio]Envía los SMS de alerta

Nivel 2 · las aplicaciones y almacenes que lo componen

HTTPSAppRESTRESTJDBCHTTP · JSON1JDBCAMQP · alerts2AMQP3HTTP4eventsResidenteConsulta el aire de su zonaAplicación web[Angular 19]Panel y reportesBackend AirQ[Spring Boot · Java 17]IAM, usuarios ynotificacionesBase de datos[PostgreSQL]Usuarios y notificacionesApp móvil[Flutter]Alertas en el teléfonoDispositivo AirQ[ESP32 · C++ · DHT11 + MQ135]Mide temperatura, humedad yCO₂Analítica de datos[Spring Boot · Data Analytics]Mediciones, alertas einsightsBase de datos[MySQL]Mediciones y alertasServicio de SMS[Spring Boot · Twilio]Envía mensajes con TwilioNotificaciones[Spring Boot · AMQP]Consume las alertasRabbitMQ[RabbitMQ]Eventos de alertaApache Kafka[Apache Kafka]Prueba de streaming

Nivel 3 · los componentes dentro de la API

calls1rulesport2JDBC3portAMQPControladores REST[REST controllers]Mediciones y alertasServicios decomando y consulta[Command and query services]CQRS ligeroAgregados[Aggregates]IotData, Alert yAnalyticsInsightRepositorios JPA[JPA · Hibernate]Persisten en MySQLBase de datos[MySQL]Mediciones y alertasPublicador dealertas[Alert publisher]Envía a la colaRabbitMQ[RabbitMQ]Eventos de alerta
  • Persona
  • Sistema
  • Contenedor
  • Base de datos
  • Externo
  • Recorrido principal
  1. 01Sensor ESP32
  2. 02Analítica
  3. 03RabbitMQ
  4. 04Notificaciones
  5. 05SMS
  6. 06App

CV

Descarga mi CV

Déjame tu correo y te envío el CV ahí. Primero verifico que el correo es tuyo con un código.