🌱 API Sistema IoT Monitoreo de Humedad

Documentación completa de endpoints para dispositivos ESP32 y aplicación móvil

8
APIs Principales
45+
Endpoints
6
Tablas BD
3
Vistas SQL

🗄️ Configuración de Base de Datos

Host: localhost | Usuario: erick | Base de Datos: Irrometer

🔐 auth_api.php - Autenticación

POST Login
auth_api.php
Iniciar sesión y obtener token de acceso
{ "username": "admin", "password": "password123", "device_info": "iPhone 12 Pro" }
GET Validar Token
auth_api.php?token=TOKEN_VALUE
Verificar si un token es válido
DELETE Logout
auth_api.php
Cerrar sesión y desactivar token

👥 usuarios_api.php - Gestión de Usuarios

POST Crear Usuario
usuarios_api.php
{ "username": "juan.gerente", "email": "juan@empresa.com", "password": "password123", "full_name": "Juan Pérez", "role_id": 2, "phone": "+34600123456" }
GET Listar Usuarios
usuarios_api.php
Filtros: ?role=2, ?manager=1, ?id=1
PATCH Actualizar Usuario
usuarios_api.php

🗺️ zonas_api.php - Gestión de Zonas

POST Crear Zona
zonas_api.php
{ "zone_name": "Campo Norte", "manager_id": 2, "polygon_coordinates": [ {"lat": 40.4168, "lng": -3.7038}, {"lat": 40.4178, "lng": -3.7028} ], "crop_type": "Tomate" }
GET Listar Zonas
zonas_api.php
Filtros: ?manager=2, ?with_devices=true

🔧 dispositivos_api.php - Dispositivos ESP32

POST Registrar Dispositivo
dispositivos_api.php
{ "device_name": "ESP32-001", "mac_address": "30:AE:A4:07:0D:64", "zone_id": 1, "latitude": 40.4168, "longitude": -3.7038 }
GET Listar Dispositivos
dispositivos_api.php
Filtros: ?zone=1, ?status=online, ?mac=MAC_ADDRESS
PUT Actualizar Estado (ESP32)
dispositivos_api.php
Para que ESP32 reporte su estado

📊 registros_api.php - Registros de Sensores

POST Enviar Datos (ESP32)
registros_api.php
{ "mac_address": "30:AE:A4:07:0D:64", "latitude": 40.4168, "longitude": -3.7038, "soil_moisture": 120, "soil_temperature": 22.5, "ambient_temperature": 25.0 }
GET Obtener Registros
registros_api.php
Filtros: ?device=1, ?zone=1, ?today=true, ?stats=true

📈 dashboard_api.php - Dashboards y Reportes

GET Resumen Dashboard
dashboard_api.php?dashboard_summary=true
Estadísticas generales del sistema
GET Mapa de Calor
dashboard_api.php?heat_map=true&zone_id=1
Datos para visualización de mapa de calor
GET Alertas Sistema
dashboard_api.php?alerts=true
Dispositivos offline, errores, niveles críticos

🎭 roles_api.php - Gestión de Roles

GET Listar Roles
roles_api.php
super_admin, gerente, trabajador
POST Crear Rol
roles_api.php

🔐 Sistema de Autenticación

1. Proceso de Login

POST auth_api.php { "username": "admin", "password": "password123", "device_info": "React Native App" } // Respuesta: { "success": true, "token": "a1b2c3d4e5f6...", "expires_at": "2025-09-23 12:00:00", "user": { "user_id": 1, "username": "admin", "role_name": "super_admin", "permissions": {"all": true} } }

2. Uso del Token

// En el header de las peticiones: Authorization: Bearer a1b2c3d4e5f6... // O como parámetro: GET usuarios_api.php?token=a1b2c3d4e5f6...

3. Validación de Token

GET auth_api.php?token=a1b2c3d4e5f6... // Respuesta: { "valid": true, "user": {...}, "token_info": { "expires_at": "2025-09-23 12:00:00" } }

📋 Ejemplos de Uso

🤖 ESP32 - Envío de Datos

// ESP32 envía datos de sensor POST registros_api.php { "mac_address": "30:AE:A4:07:0D:64", "latitude": 40.4168, "longitude": -3.7038, "soil_moisture": 145, "soil_temperature": 23.2, "ambient_temperature": 26.5, "ambient_humidity": 62.3, "signal_quality": 88 }

📱 App Móvil - Dashboard Gerente

// Obtener resumen para gerente específico GET dashboard_api.php?dashboard_summary=true&manager_id=2 // Obtener zonas del gerente GET zonas_api.php?manager=2&with_devices=true // Obtener registros recientes GET registros_api.php?manager=2&limit=50

🗺️ Mapa de Calor - React Native

// Datos para mapa de calor de una zona GET dashboard_api.php?heat_map=true&zone_id=1&start_date=2025-09-15&end_date=2025-09-22 // Respuesta incluye coordenadas y colores: [ { "device_id": 1, "latitude": 40.4168, "longitude": -3.7038, "avg_moisture": 125, "color_code": "#FFC107" } ]

🚨 Sistema de Alertas

// Obtener alertas del sistema GET dashboard_api.php?alerts=true // Respuesta: [ { "type": "critical_moisture", "severity": "critical", "message": "Nivel crítico de humedad (185) en ESP32-001", "data": {...} }, { "type": "device_offline", "severity": "warning", "message": "Dispositivo ESP32-002 está offline" } ]

🎨 Códigos de Estado

💧 Niveles de Humedad del Suelo

0-60
Muy Húmedo
#2196F3
61-100
Húmedo
#4CAF50
101-140
Normal
#FFC107
141-180
Seco
#FF9800
181-200
Muy Seco
#F44336

🔧 Estados de Dispositivos

• online - Dispositivo conectado y funcionando • offline - Dispositivo desconectado • error - Dispositivo con errores • maintenance - Dispositivo en mantenimiento

👥 Tipos de Roles

1. super_admin (ID: 1) - Administrador supremo 2. gerente (ID: 2) - Gerente de zona 3. trabajador (ID: 3) - Trabajador de campo

📡 Respuestas HTTP

// Éxito { "success": true, "message": "Operación exitosa", "data": {...} } // Error { "error": true, "message": "Descripción del error" }