AgriTech / IoT · Proyecto terminado · 2025

RootSense

Automatizar el riego mediante sensores de campo, servicios orientados a eventos y control en tiempo real.

Repositorio privado
Sistema IoT distribuido

Una plataforma IoT que conecta sensores, una Raspberry Pi y microservicios mediante MQTT para supervisar el riego y mejorar el uso del agua.

Comunicación orientada a eventos con MQTT
Las señales de campo se convierten en decisiones de riego
  1. 01Sensores y actuadores
  2. 02Raspberry Pi
  3. 03Broker MQTT
  4. 04Microservicios
  5. 05Supervisión y riego
Rol
Desarrollador backend y de sistemas distribuidos
Equipo
Equipo de cinco personas, incluyéndome
Duración
Cuatro meses
Estado
Proyecto terminado
Dominio
AgriTech / IoT
Código
Repositorio privado
Contribución
Backend, comunicación entre microservicios y estrategia de despliegue
Tecnologías y herramientas
React · TypeScript · Node.js · Express · MongoDB · Redis · MQTT · Raspberry Pi · Docker

Por qué nació

RootSense fue terminado en 2025 durante cuatro meses por un equipo de cinco personas, incluyéndome. Nació para automatizar el trabajo que implica cuidar cultivos y operar un sistema de riego. La intención era reducir la dependencia de supervisión manual constante y convertir las condiciones observadas en campo en información útil para actuar.

El proyecto se planteó alrededor de dos objetivos conectados: ayudar a las personas responsables de los cultivos a tomar decisiones con mayor contexto y mejorar el cuidado del agua mediante automatización.

El problema

La gestión de los cultivos y del riego suele depender de trabajo manual. Durante el proceso puede perderse información importante, la operación requiere atención prácticamente continua y muchas decisiones terminan guiadas únicamente por la intuición.

Sin una captura consistente de las condiciones del campo, resulta difícil saber qué ocurrió, responder a tiempo o comparar el comportamiento del sistema entre distintos momentos.

Qué hace diferente al proyecto

RootSense combina desarrollo web, hardware, comunicación en tiempo real y servicios distribuidos dentro de una sola solución. Su arquitectura basada en microservicios separa responsabilidades y utiliza eventos MQTT para conectar el entorno físico con los servicios de software.

La diferencia no está únicamente en visualizar sensores. El sistema también contempla actuadores y automatización del riego a partir de las condiciones registradas en tiempo real.

Cómo está dividido

La interfaz de supervisión utiliza React y TypeScript. Los servicios backend están construidos con Node.js y Express, y dividen las responsabilidades del sistema en procesos independientes.

MongoDB almacena la información registrada. Redis optimiza el acceso a datos y conserva estados temporales. MQTT transporta los mensajes entre los dispositivos y los servicios. Una Raspberry Pi conecta el software con sensores y actuadores del sistema de riego. Docker aísla y configura los distintos servicios durante el despliegue.

Flujo del sistema

  1. Los sensores registran condiciones relacionadas con el cultivo y el riego.
  2. La Raspberry Pi recibe la información del entorno físico.
  3. MQTT publica los eventos para que los servicios correspondientes puedan procesarlos.
  4. Los microservicios almacenan información, mantienen estados y coordinan decisiones.
  5. La interfaz presenta el estado del sistema.
  6. Los actuadores ejecutan las acciones de riego definidas por la automatización.

Arquitectura

La arquitectura se organiza alrededor de servicios especializados que se comunican mediante mensajes. Este enfoque evita que la adquisición de sensores, el procesamiento, el almacenamiento y la interfaz dependan de un único proceso.

MQTT funciona como el canal ligero entre hardware y backend. MongoDB conserva datos persistentes, Redis apoya accesos rápidos y estados de corta duración, y Docker proporciona una estrategia común para aislar, configurar y desplegar los servicios.

Tecnologías

Decisiones técnicas clave

Mi contribución

Desarrollé el backend y la comunicación entre microservicios. También definí la estrategia de despliegue de los servicios.

Mi trabajo se concentró en hacer que los componentes distribuidos pudieran intercambiar información de forma consistente; no presento como propia la implementación completa del frontend, hardware o producto.

El problema que tomó días resolver

El reto más difícil fue conseguir una comunicación confiable entre microservicios. Configurar MQTT, hacer que los servicios intercambiaran mensajes correctamente y revisar la confiabilidad del flujo tomó varios días de trabajo.

El problema no terminaba cuando un mensaje llegaba una vez. El sistema necesitaba una configuración coherente para que cada servicio entendiera cuándo publicar, cuándo escuchar y cómo conservar el estado necesario.

Lo que aprendí

RootSense me permitió aprender comunicación basada en eventos mediante MQTT y aplicarla a un sistema que conecta software con un entorno físico.

También reforzó que, en un sistema distribuido, la comunicación y la confiabilidad forman parte de la arquitectura: no son detalles que puedan agregarse al final.

Resultado y estado actual

RootSense es un proyecto terminado que demuestra la integración de desarrollo web, IoT, comunicación en tiempo real, hardware y sistemas distribuidos dentro de una solución de riego automatizado. La automatización se utilizó con cultivos reales; no se afirma una métrica de ahorro de agua sin verificar.

Evidencia y confidencialidad

La interfaz, el despliegue, el hardware y la demostración permanecen privados. Este caso documenta el flujo técnico y mi contribución sin publicar material confidencial ni sustituirlo por evidencia inventada.

Código y alcance

El repositorio es privado. Este caso describe el sistema y mi contribución sin presentar una acción de código fuente.

Límite de confidencialidad

Los recursos del producto se omiten intencionalmente.

Este caso público documenta el trabajo sin exponer interfaces, datos o material de implementación privado.