Skip to content

Sistema de monitoreo IoT completo diseñado para la agricultura inteligente y el control de ambientes. Permite la recolección, visualización y análisis de datos ambientales en tiempo real mediante sensores conectados a dispositivos ESP32 y otros microcontroladores.

Notifications You must be signed in to change notification settings

momus53/smartgrow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🌱 SmartGrow - IoT Monitoring System

SmartGrow Logo License: MIT Node.js MySQL ESP32

Sistema de monitoreo IoT inteligente para agricultura y ambientes controlados

🚀 Demo · 📖 Documentación · 🐛 Reportar Bug · 💡 Solicitar Feature


📋 Tabla de Contenidos


🎯 Descripción

SmartGrow es un sistema de monitoreo IoT completo diseñado para la agricultura inteligente y el control de ambientes. Permite la recolección, visualización y análisis de datos ambientales en tiempo real mediante sensores conectados a dispositivos ESP32 y otros microcontroladores.

¿Para qué sirve?

  • 🌿 Agricultura de precisión: Monitoreo de cultivos en invernaderos y campos
  • 🏠 Hogares inteligentes: Control ambiental de espacios domésticos
  • 🏭 Industria: Supervisión de condiciones en almacenes y fábricas
  • 🔬 Investigación: Recolección de datos ambientales para estudios científicos

✨ Características

🔄 Monitoreo en Tiempo Real

  • Visualización de temperatura y humedad en tiempo real
  • Gráficos interactivos con historial de datos
  • Alertas automáticas por condiciones críticas
  • Dashboard responsivo y moderno

📊 Análisis de Datos

  • Estadísticas detalladas (promedio, máximo, mínimo)
  • Exportación de datos a CSV/JSON
  • Tendencias y patrones de comportamiento
  • Reportes automáticos

🔐 Gestión Segura

  • Sistema de autenticación JWT
  • Gestión multi-usuario
  • Roles y permisos granulares
  • Sesiones seguras con cookies

🌐 Conectividad IoT

  • Soporte para ESP32, Arduino, Raspberry Pi
  • API RESTful para integración
  • Múltiples dispositivos por usuario
  • Auto-registro y detección de dispositivos

💡 Control Inteligente

  • Control remoto de dispositivos
  • Automatización basada en condiciones
  • Programación de horarios
  • Integración con actuadores

🛠️ Tecnologías

Backend

Node.js Express.js MySQL JWT

  • Node.js v14+ - Runtime de JavaScript
  • Express.js - Framework web minimalista
  • MySQL - Base de datos relacional
  • JWT - Autenticación segura
  • bcrypt - Encriptación de contraseñas
  • CORS - Manejo de peticiones cross-origin

Frontend

HTML5 CSS3 JavaScript Bootstrap Chart.js

  • HTML5/CSS3 - Estructura y diseño moderno
  • JavaScript ES6+ - Funcionalidad del cliente
  • Bootstrap 5 - Framework CSS responsivo
  • Chart.js - Gráficos interactivos
  • Bootstrap Icons - Iconografía

IoT & Hardware

ESP32 Arduino

  • ESP32 - Microcontrolador principal
  • DHT22 - Sensor de temperatura y humedad
  • WiFi - Conectividad inalámbrica
  • HTTP/REST - Protocolo de comunicación

📸 Capturas de Pantalla

🏠 Dashboard Principal

Dashboard

📊 Gráficos en Tiempo Real

Gráficos

📱 Diseño Responsivo

Mobile


🚀 Instalación

Prerrequisitos

1. Clonar el Repositorio

git clone https://github.com/momus53/smartgrow.git
cd smartgrow

2. Configurar Backend

cd backend
npm install

3. Configurar Base de Datos

# Crear base de datos
mysql -u root -p -e "CREATE DATABASE iot_monitor;"

# Importar esquema
mysql -u root -p iot_monitor < database.sql

4. Variables de Entorno

Crear archivo .env en /backend:

# Database
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=tu_password
DB_NAME=iot_monitor

# JWT
JWT_SECRET=tu_clave_secreta_muy_segura
JWT_EXPIRES_IN=7d

# Server
PORT=3000
NODE_ENV=development

5. Ejecutar el Proyecto

# Desarrollo
npm run dev

# Producción
npm start

El servidor estará disponible en http://localhost:3000


⚙️ Configuración

Configuración de ESP32

// Ejemplo básico para ESP32
#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>

const char* ssid = "TU_WIFI";
const char* password = "TU_PASSWORD";
const char* serverURL = "http://tu-servidor.com/api/datos";

DHT dht(2, DHT22);

void setup() {
    Serial.begin(115200);
    dht.begin();
    
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Conectando a WiFi...");
    }
}

void loop() {
    float temp = dht.readTemperature();
    float hum = dht.readHumidity();
    
    // Enviar datos cada 30 segundos
    sendData(temp, hum);
    delay(30000);
}

Configuración de Usuario Admin

cd backend
node set_admin_password.js

🎮 Uso

Acceso Web

  1. Navega a http://localhost:3000
  2. Inicia sesión con tus credenciales
  3. ¡Comienza a monitorear tus dispositivos!

Registro de Dispositivos

  1. Ve al dashboard
  2. Haz clic en el botón "+" en la tarjeta de Dispositivos
  3. Completa la información del dispositivo
  4. Configura tu ESP32 para enviar datos

API para Dispositivos IoT

# Enviar datos de sensores
curl -X POST http://localhost:3000/api/datos \
  -H "Content-Type: application/json" \
  -d '{
    "dispositivo": "ESP32_001",
    "temperatura": 25.5,
    "humedad": 60.2
  }'

📊 API Reference

🔐 Autenticación

POST /auth/login

Iniciar sesión

{
  "username": "admin",
  "password": "password"
}

POST /auth/register

Registrar usuario

{
  "username": "usuario",
  "email": "email@ejemplo.com",
  "password": "password"
}

POST /auth/logout

Cerrar sesión

📊 Datos

GET /api/datos/ultimo

Obtener último registro

GET /api/datos/recientes?limit=50

Obtener registros recientes

POST /api/datos

Enviar nuevos datos

{
  "dispositivo": "ESP32_001",
  "temperatura": 25.5,
  "humedad": 60.2
}

GET /api/datos/estadisticas

Obtener estadísticas

🔧 Dispositivos

GET /api/dispositivos

Listar dispositivos del usuario

POST /api/dispositivos

Registrar nuevo dispositivo

{
  "nombre": "Sensor Invernadero",
  "tipo": "ESP32",
  "descripcion": "Sensor principal"
}

🤝 Contribuir

¡Las contribuciones son bienvenidas! Por favor:

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add: amazing feature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

Guía de Contribución

  • Sigue las convenciones de código existentes
  • Añade tests para nuevas funcionalidades
  • Actualiza la documentación según sea necesario
  • Usa commits descriptivos

📋 Roadmap

  • Sistema de autenticación
  • Dashboard básico
  • API REST
  • Soporte ESP32
  • Aplicación móvil
  • Alertas por email/SMS
  • Machine Learning para predicciones
  • Integración con servicios cloud
  • Soporte para más sensores

📄 Licencia

Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.


👨‍💻 Autor

Molmius - Desarrollador Principal


🙏 Agradecimientos

  • Inspirado en proyectos de agricultura inteligente
  • Comunidad de ESP32 y Arduino
  • Bootstrap y Chart.js por las herramientas increíbles
  • Todos los contribuidores del proyecto

⭐ ¡Si este proyecto te ha sido útil, considera darle una estrella! ⭐

GitHub stars GitHub forks

Hecho con ❤️ para la comunidad IoT

About

Sistema de monitoreo IoT completo diseñado para la agricultura inteligente y el control de ambientes. Permite la recolección, visualización y análisis de datos ambientales en tiempo real mediante sensores conectados a dispositivos ESP32 y otros microcontroladores.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published