🔐 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"
}