Sistema de monitoreo IoT inteligente para agricultura y ambientes controlados
🚀 Demo · 📖 Documentación · 🐛 Reportar Bug · 💡 Solicitar Feature
- 🎯 Descripción
- ✨ Características
- 🛠️ Tecnologías
- 📸 Capturas de Pantalla
- 🚀 Instalación
- ⚙️ Configuración
- 🎮 Uso
- 📊 API Reference
- 🤝 Contribuir
- 📄 Licencia
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.
- 🌿 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
- 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
- Estadísticas detalladas (promedio, máximo, mínimo)
- Exportación de datos a CSV/JSON
- Tendencias y patrones de comportamiento
- Reportes automáticos
- Sistema de autenticación JWT
- Gestión multi-usuario
- Roles y permisos granulares
- Sesiones seguras con cookies
- Soporte para ESP32, Arduino, Raspberry Pi
- API RESTful para integración
- Múltiples dispositivos por usuario
- Auto-registro y detección de dispositivos
- Control remoto de dispositivos
- Automatización basada en condiciones
- Programación de horarios
- Integración con actuadores
- 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
- 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
- ESP32 - Microcontrolador principal
- DHT22 - Sensor de temperatura y humedad
- WiFi - Conectividad inalámbrica
- HTTP/REST - Protocolo de comunicación
git clone https://github.com/momus53/smartgrow.git
cd smartgrowcd backend
npm install# Crear base de datos
mysql -u root -p -e "CREATE DATABASE iot_monitor;"
# Importar esquema
mysql -u root -p iot_monitor < database.sqlCrear 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# Desarrollo
npm run dev
# Producción
npm startEl servidor estará disponible en http://localhost:3000
// 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);
}cd backend
node set_admin_password.js- Navega a
http://localhost:3000 - Inicia sesión con tus credenciales
- ¡Comienza a monitorear tus dispositivos!
- Ve al dashboard
- Haz clic en el botón "+" en la tarjeta de Dispositivos
- Completa la información del dispositivo
- Configura tu ESP32 para enviar datos
# 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
}'🔐 Autenticación
Iniciar sesión
{
"username": "admin",
"password": "password"
}Registrar usuario
{
"username": "usuario",
"email": "email@ejemplo.com",
"password": "password"
}Cerrar sesión
📊 Datos
Obtener último registro
Obtener registros recientes
Enviar nuevos datos
{
"dispositivo": "ESP32_001",
"temperatura": 25.5,
"humedad": 60.2
}Obtener estadísticas
🔧 Dispositivos
Listar dispositivos del usuario
Registrar nuevo dispositivo
{
"nombre": "Sensor Invernadero",
"tipo": "ESP32",
"descripcion": "Sensor principal"
}¡Las contribuciones son bienvenidas! Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add: amazing feature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
- Sigue las convenciones de código existentes
- Añade tests para nuevas funcionalidades
- Actualiza la documentación según sea necesario
- Usa commits descriptivos
- 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
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
Molmius - Desarrollador Principal
- GitHub: @momus53
- LinkedIn: Tu LinkedIn
- Email: tu-email@ejemplo.com
- 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