Dashboard

📍 Seleccionar Centros (haz clic en uno o varios para comparar)

Tipo de espacio:
Todos los espacios
Todas las zonas

Mapa de Calor - Ocupación por Hora y Espacio

Mapa de Calor - Ocupación por Hora y Zona

% Ocupación Media por Hora

Ocupación por Espacio

FechaHoraUbicaciónEspacioZonaPersonasAforo% Ocup.Registrado
a

KPIs de Ocupación por Espacio y Zona

Gráfico Ranking Zonas

Tendencia Semanal

Ranking de Espacios

Ranking de Zonas

Centros o sedes donde se ubican los espacios

NombreDirecciónRedEspaciosZonasAforo TotalEstado

Estructura: Ubicación → Espacio → Zona (con aforo)

Usuarios con acceso a la plataforma

NombreEmailRolRedUbicacionesEstado

🔑 API Keys — Conteo Automático

Las API Keys permiten que sensores, cámaras y dispositivos IoT envíen datos de conteo automático a la plataforma.

📡 Dispositivos Conectados

Cargando...

API REST — Conteo Automático

Base URL: api.php · Autenticación: header X-API-Key

Conteo de personas

POST?action=count
Registrar conteo desde sensor/cámara. Body: {"zona_id":"z1", "personas":15, "device_id":"cam-01", "tipo":"camara"}
POST?action=count_batch
Enviar múltiples conteos. Body: {"registros":[{"zona_id":"z1","personas":15},{"zona_id":"z2","personas":8}]}
GET?action=count_status
Estado actual de ocupación de todas las zonas (datos de hoy)
GET?action=zones
Listado de zonas para configurar dispositivos

Dispositivos

POST?action=device_heartbeat
Heartbeat periódico del dispositivo. Body: {"device_id":"cam-01","status":"online","metadata":{}}
GET?action=devices_list
Lista de dispositivos conectados con último estado

📊 Consultas de datos (API de lectura)

GET?action=get_estructura
Árbol jerárquico completo: ubicaciones → espacios → zonas
GET?action=get_ubicaciones
Listar ubicaciones con contadores. Filtro: activa=1|0
GET?action=get_espacios
Listar espacios. Filtros: ubicacion_id, activo
GET?action=get_zonas
Listar zonas. Filtros: espacio_id, ubicacion_id, activa
GET?action=get_registros
Consultar registros de ocupación. Filtros: fecha_desde, fecha_hasta, ubicacion_id, espacio_id, zona_id, hora, tipo, limit, offset, orden
GET?action=get_kpis
KPIs agregados. Filtros + agrupar_por=fecha|hora|ubicacion|espacio|zona|dia_semana|mes
GET?action=get_horarios
Horarios configurados. Filtro: ubicacion_id
GET?action=get_resumen
Resumen/dashboard de un día. Filtro: fecha (default: hoy)

Datos generales

GET?action=load&network=ID
Cargar todos los datos de una red
POST?action=save&network=ID
Guardar datos completos de una red
GET?action=ping
Health check del servidor con info de versión y endpoints disponibles
📖 Documentación interactiva completa para desarrolladores →

Prueba los endpoints en vivo con tu API Key

Ejemplo de integración — Sensor/Cámara

1. Obtener zonas disponibles

curl -H "X-API-Key: fm_tu_api_key" \
  "https://espacios.fitmetrics.es/api.php?action=zones"

2. Enviar conteo de personas

curl -X POST -H "X-API-Key: fm_tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{"zona_id":"z1a2b3","personas":23,"device_id":"cam-entrada","tipo":"camara"}' \
  "https://espacios.fitmetrics.es/api.php?action=count"

3. Consultar estado actual

curl -H "X-API-Key: fm_tu_api_key" \
  "https://espacios.fitmetrics.es/api.php?action=count_status"

# Respuesta:
{
  "ok": true,
  "fecha": "2026-03-25",
  "hora": "14:00",
  "zonas": [
    {
      "zona_id": "z1a2b3",
      "zona_nombre": "Cardio",
      "espacio_nombre": "Sala Fitness",
      "ubicacion_nombre": "Centro Principal",
      "aforo": 30,
      "personas_actual": 23,
      "pct_ocupacion": 77,
      "ultima_hora": "14:00",
      "tipo": "camara"
    }
  ]
}

Esquema de datos

{
  "usuario":   { "id":"str", "nombre":"str", "email":"str", "rol":"superadmin|gestor|admin|operador", "ubicaciones_ids":"[]", "activo":"bool" },
  "ubicacion": { "id":"str", "nombre":"str", "direccion":"str", "activa":"bool" },
  "espacio":   { "id":"str", "nombre":"str", "ubicacion_id":"str", "activo":"bool" },
  "zona":      { "id":"str", "nombre":"str", "espacio_id":"str", "aforo":"number", "activa":"bool" },
  "registro":  { "id":"str", "fecha":"YYYY-MM-DD", "hora":"HH:00", "zona_id":"str",
                 "espacio_id":"str", "ubicacion_id":"str", "personas":"number",
                 "registrado_por":"str|auto:device_id", "tipo":"manual|sensor|camara|iot",
                 "timestamp":"ISO 8601" },
  "api_key":   { "key":"fm_xxx", "network_id":"str", "nombre":"str", "permisos":["read","write","count"], "activa":"bool" }
}