Manual Global Hub ← Volver al Hub

Manual del Global Hub

Concentrador GPS que recibe datos de unidades vehiculares desde Protrack, TrackSolid y Wialon, y los retransmite a entidades regulatorias peruanas (SUTRAN, OSINERGMIN, UNIGIS, MAERSK, SIPCOP) según obligaciones legales/contractuales.

v2.0 · abril 2026 5 entidades 3 plataformas GPS TLS 1.2+

◆ ¿Qué es Global Hub?

Middleware de retransmisión GPS. Toma los datos de tus unidades desde la plataforma del proveedor (Protrack/TrackSolid/Wialon), los transforma al formato que cada entidad peruana exige, y los envía en tiempo real.

Valor operativo

  • Un solo lugar para cumplir con SUTRAN, OSINERGMIN y otras entidades — no necesitas integrar cada una por separado.
  • Normalización automática — placa peruana con guión para OSINERGMIN, coordenadas ajustadas a SUTRAN, formato JSON por entidad.
  • Colectores 24/7 — los 3 colectores (Protrack, TrackSolid, Wialon) toman posiciones constantemente y los 4+ transmitters reenvían.
  • Auditoría + consent log — trazabilidad completa para cumplimiento de Ley 29733.
  • Backup diario cifrado — GPG AES-256 + copia off-site al servidor del CRM.

🏗 Arquitectura

Tres capas: colectores → BD SQLite → transmitters. Cada uno es un servicio systemd independiente.

  ┌────────────────┐    ┌────────────────┐    ┌────────────────┐
  │   PROTRACK     │    │   TRACKSOLID   │    │    WIALON      │
  │  (colector)    │    │   (colector)   │    │   (colector)   │
  └───────┬────────┘    └───────┬────────┘    └───────┬────────┘
          │                     │                     │
          └─────────────────────┼─────────────────────┘
                                ▼
                   ┌──────────────────────────┐
                   │   SQLite + FastAPI       │
                   │   devices + tx_logs      │
                   └─────┬────────────────────┘
                         │
      ┌──────────┬──────┴─────┬─────────┬──────────┐
      ▼          ▼            ▼         ▼          ▼
   SUTRAN   OSINERGMIN     UNIGIS    MAERSK     SIPCOP
(transm)  (transm)       (transm)  (transm)   (pendiente)

Servicios activos

Servicio systemdRol
globalhub.serviceAPI FastAPI + web (puerto 8000)
globalhub-protrack.serviceColector Protrack (polling API)
globalhub-tracksolid.serviceColector TrackSolid (polling API, token cached 2h)
globalhub-wialon.serviceColector Wialon (AVL events)
globalhub-sutran.serviceTransmitter SUTRAN
globalhub-osinergmin.serviceTransmitter OSINERGMIN
globalhub-unigis.serviceTransmitter UNIGIS
globalhub-maersk.serviceTransmitter MAERSK
globalhub-notifier.serviceMonitor de alertas email

🔑 Ingresar al panel

El Hub requiere autenticación — no hay acceso público. Los usuarios los crea el admin.

  1. URL oficial: https://apirest.globalgpsperu.com
  2. Alternativa en Piura (WiFi bloquea 443): http://apirest.globalgpsperu.com:8080 — redirige a HTTPS
  3. Ingresa usuario y contraseña
  4. Al primer login se pide verificar email si aún no se ha hecho
⚠ Rate limit: 5 intentos fallidos en 5 min bloquean la IP. Si te bloqueas, espera o usa Olvidé mi contraseña.
💡 Password — mínimo 8 caracteres. El admin puede subirlo a políticas más estrictas según necesidad.

📊 Dashboard

Vista principal del estado de la flota.

Tarjetas principales

TarjetaQué muestra
Total unidadesDevices registrados (active=1)
TransmitiendoUnidades con al menos 1 destino encendido
Con ignición ONUnidades en movimiento (ignition=1 última trama)
Entidades activasCuántas entidades distintas (0–5) están recibiendo datos. NO es suma por unidad. El subtítulo lista los nombres concretos (ej: "OSINERGMIN · SUTRAN").

Tabla de flota

Lista por unidad con: placa, proveedor (Protrack/TrackSolid/Wialon), coordenadas, velocidad, ignición, destinos activos, última actualización. Filtro por placa arriba.

💡 Refrescar — botón ↻ Actualizar. También puedes recargar la página con F5.

🚚 Unidades

CRUD de devices. Normalmente se crean automáticamente vía auto-activate desde el CRM, pero también se pueden crear a mano.

Crear unidad manualmente

  1. Menú → Unidades+ Nueva unidad
  2. IMEI (15 dígitos del chip GSM)
  3. Placa con guión (formato peruano XXX-999)
  4. Proveedor: Protrack / TrackSolid / Wialon
  5. Nombre de la empresa del cliente (va en el campo transport_vendor)
  6. Notas opcionales (contacto, observaciones)
  7. Guardar → queda active=1, sin destinos activos aún

Editar unidad

Tabla → clic en icono lápiz. Puedes cambiar placa, proveedor, notas, estado activo/inactivo.

Eliminar

DELETE /api/devices/{imei} borra físicamente la unidad y sus logs asociados. No es soft-delete. Pensarlo bien antes de ejecutar. Si solo quieres que no transmita, usa active=0.

📡 Transmisiones

Control de a qué entidades retransmite cada unidad.

Activar transmisión (manual)

  1. Menú → Unidades → seleccionar unidad
  2. Panel Destinos — 5 toggles (SUTRAN, OSINERGMIN, UNIGIS, MAERSK, SIPCOP)
  3. Para SUTRAN: ingresa speed_limit (10-200 km/h). Este valor se aplica realmente — si speed_limit=60, SUTRAN verá máximo 60 km/h aunque el GPS reporte 90.
  4. Para OSINERGMIN: asegúrate que la placa tenga guión (el Hub normaliza automáticamente si viene sin guión).
  5. Guardar → la próxima iteración del transmitter respectivo (cada 15 seg) envía la trama a la entidad.

Desactivar transmisión

Mismo flujo, toggle a OFF. La trama deja de enviarse inmediatamente.

Auto-activate (desde CRM)

Normalmente NO tocas esto manualmente. Al guardar un cliente con filtros regulatorios en el CRM, este hace POST /api/transmission/auto-activate con IMEI + provider + destino + speed_limit, y el Hub:

  1. Verifica que la unidad exista en la plataforma del proveedor
  2. Si no existe, la registra (device_created=true)
  3. Para OSINERGMIN: normaliza la placa al formato peruano con guión
  4. Activa la transmisión
  5. Retorna al CRM: imei, plate, device_created, transmitting=true

🔍 Búsqueda externa (antes de registrar)

Verifica que una unidad exista en la plataforma del proveedor antes de registrarla.

PlataformaEndpointCriterio
ProtrackGET /api/search/protrack/{imei}Por IMEI
TrackSolidGET /api/search/tracksolid/{imei}Por IMEI (busca en cuentas hijas)
WialonGET /api/search/wialon/{placa}Por placa (búsqueda parcial)
WialonGET /api/search/wialon_id/{id}Por sys_id

🚛 SUTRAN

Superintendencia de Transporte Terrestre. Fiscaliza buses interprovinciales, carga pesada y transporte escolar.

Endpoint
configurado en SUTRAN_ENDPOINT del .env
Frecuencia
cada 15 segundos por cada unidad activa
speed_limit
funcional — si configurado, la trama transmite máximo este valor
Formato
JSON con placa, coordenadas, velocidad, fecha GPS
💡 speed_limit=0 = sin límite (transmite velocidad GPS real). speed_limit=60 = máximo 60 km/h reportado. Típicamente se configura 60-90 según tipo de vehículo.

⛽ OSINERGMIN

Organismo Supervisor de la Inversión en Energía y Minería. Fiscaliza transporte de hidrocarburos (combustibles).

Endpoint
OSIN_URL del .env
Autenticación
Token estático (tokenTrama) del .env
Frecuencia
cada 15 seg
Formato
JSON con event (acc_on/acc_off), plate, speed, position, gpsDate, odometer
⚠ Placa con guión obligatorio. OSINERGMIN rechaza placas sin guión. El Hub normaliza automáticamente (ej: T7K592T7K-592). Si tu placa es de formato raro, revisa el log del transmitter.

⛏ UNIGIS

Monitoreo de minería y seguridad. Envío de posiciones + eventos de seguridad.

Endpoint
UNIGIS_URL del .env
Autenticación
User + password del .env
Frecuencia
cada 15 seg

⚓ MAERSK

Naviera. Retransmisión a su plataforma de visibilidad logística para contenedores en ruta.

Endpoint
MAERSK_ENDPOINT del .env
Autenticación
MAERSK_TOKEN del .env
Frecuencia
cada 15 seg

📦 SIPCOP

Sistema de transporte de productos controlados.

Estado actual: pendiente registro de IP del servidor Hub con la entidad. Aunque el Hub acepta activar el destino (sipcop_on=1), no hay transmitter implementado todavía. Prioridad baja hasta que la entidad habilite la integración.

📝 Logs de transmisión

Cada trama enviada a una entidad queda registrada con status HTTP y respuesta del destino.

Consultar

  1. Menú → Logs
  2. Filtros: por IMEI, por entidad, por status (200 / error)
  3. Vista muestra payload enviado + respuesta recibida + timestamp

Retención

Los logs se guardan 90 días en la tabla principal. Después pasan automáticamente a transmission_logs_archivo vía cron semanal (domingos 3 AM). Permanecen consultables desde esa tabla por 5 años antes de ser eliminados.

🛰 Auditoría

Bitácora de acciones del personal. Solo Admin

Registra: LOGIN, DEVICE_CREATE, DEVICE_UPDATE, DEVICE_DELETE, TRANSMISSION_ON, TRANSMISSION_OFF. Cada evento con usuario, IP, timestamp y detalle completo.

💡 Si hay un cambio sospechoso o un cliente cuestiona algo, aquí está la trazabilidad completa con IP y hora exacta.

👤 Usuarios

Gestión de cuentas del Hub. Solo Admin

Roles

RolAcceso
adminTodo — usuarios, devices, transmisiones, auditoría, logs
operatorOperación diaria — devices, transmisiones, logs (sin gestión de usuarios ni auditoría)

Crear usuario

  1. Menú → Usuarios+ Nuevo
  2. Username (sin espacios), email corporativo, nombre completo
  3. Rol: admin u operator
  4. Password inicial fuerte
  5. El sistema envía email de verificación al usuario
  6. Al verificar + cambiar password, queda activo

🔐 Privacidad — Ley 29733

Cumplimiento de la Ley de Protección de Datos Personales del Perú.

Qué datos procesa Global Hub

  • IMEI del equipo GPS
  • Placa del vehículo
  • Coordenadas en tiempo real (últimas + histórico)
  • Velocidad, ignición, odómetro
  • Razón social del cliente (transport_vendor)

Tabla consent_log

Cada activación/desactivación de destino queda registrada con:

  • device_imei, device_plate
  • destination (sutran/osinergmin/unigis/maersk/sipcop)
  • action: granted | revoked
  • granted_at, revoked_at
  • contract_ref: referencia al contrato del cliente en el CRM
  • granted_by: usuario que ejecutó + IP

Derechos del titular (art. 18-22)

Acceso, rectificación, cancelación y oposición. Canal: contacto@globalgpsperu.com. Plazo: 20 días hábiles.

Política completa disponible desde el link "Privacidad · Ley 29733" en el sidebar de la app.

🔗 Integración con el CRM

Cómo el CRM se comunica con el Hub para automatizar la activación de filtros.

Flujo completo

  1. En el CRM: al guardar una unidad GPS con filtros marcados (SUTRAN, OSINERGMIN, etc.) y speed_limit
  2. CRM hace POST /api/unidades/{uid}/filtros/sync internamente
  3. El módulo api/globalhub_integration/ del CRM:
    • Obtiene token JWT del Hub (POST /api/login) con credenciales dedicadas (usuario crm_integration)
    • Por cada filtro nuevo: POST /api/transmission/auto-activate con IMEI/placa, provider, destination
    • Por cada filtro a desactivar: POST /api/transmission/toggle enabled=false
  4. El Hub responde con estado final; el CRM actualiza su tabla unidad_filtros_regulatorios
  5. Si algo falla, el CRM reintenta con cron cada 15 min. Tras 3 fallos: estado error_persistente + alerta al admin.

Credenciales Hub en el CRM

Variables del /etc/crm/env:

GHUB_API_URL=https://apirest.globalgpsperu.com
GHUB_USER=crm_integration
GHUB_PASS=<secret>

⚡ API endpoints

Lista completa de endpoints REST. Todos requieren JWT excepto /api/login.

Autenticación

POST /api/loginDevuelve JWT HS256, 8 horas de validez
POST /api/auth/forgot-passwordEnvía email con token de reset
POST /api/auth/reset-passwordCambia password con token

Unidades

GET /api/devicesListar unidades
POST /api/devicesCrear manualmente
PUT /api/devices/{imei}Editar
DELETE /api/devices/{imei}Eliminar (admin)

Transmisión

POST /api/transmission/toggleEncender/apagar destino puntual
POST /api/transmission/auto-activateFlujo completo: busca, registra, activa
GET /api/transmission/activeDashboard — devices con destinos activos

Logs

GET /api/logs/transmission?imei=X&limit=100Logs de transmisión con filtros
GET /api/logs/audit?limit=200Logs de auditoría (admin)
💡 Documentación OpenAPI/docs y /redoc están deshabilitados en producción por seguridad. Se activan temporalmente con EXPOSE_DOCS=true en el env (reiniciar servicio).

❓ Preguntas frecuentes

¿Cuánto tarda en reflejarse una activación?
Inmediato. El transmitter del destino correspondiente (intervalo 15 seg) toma la trama siguiente. Si la unidad está con ignición apagada y sin posición nueva, SUTRAN/OSINERGMIN pueden no recibir nada hasta que se encienda.
Una unidad transmite a SUTRAN con speed_limit=0 — ¿bug?
speed_limit=0 significa "sin límite" — transmite la velocidad GPS real. Si quieres limitar, configura entre 10 y 200 km/h.
OSINERGMIN me responde error 400
Causa típica: placa sin guión. El Hub ahora normaliza automáticamente (desde abril 2026), pero si la unidad ya existe con placa sin guión, se debe actualizar el campo plate en la tabla devices al formato correcto.
TrackSolid no encuentra mi unidad aunque el IMEI es correcto
Los dispositivos TrackSolid están distribuidos en cuentas hijas. El Hub consulta jimi.user.child.list para listar todas las cuentas, luego itera por cada una buscando el IMEI. Si sigue sin encontrarse, el dispositivo puede estar en otra cuenta maestra o dado de baja.
¿Los backups incluyen todos los datos?
Sí. El backup diario (2 AM) copia la BD SQLite completa (devices + users + transmission_logs + audit_log + consent_log), la comprime con gzip y la cifra con GPG AES-256. Se envía una copia al CRM server. Retención local: 30 días.
¿Cómo restauro un backup?
Desde cualquier servidor con el .gpg:
gpg -d --batch --passphrase "$BACKUP_PASSPHRASE" \
  backup.db.gz.gpg | gunzip > restore.db
La passphrase está en /root/global_hub/.env del Hub.

⚠ Errores comunes

SíntomaCausa probableAcción
Dashboard muestra 0 unidadesServicio API caído o BD corruptasystemctl status globalhub en servidor
Una entidad deja de recibir tramaToken vencido en el .env del destinoRenovar con el proveedor y actualizar .env + restart service
Protrack/TrackSolid "1006 rate limit"Polling muy frecuenteToken cacheado 2h, no tocar el colector
Wialon "unit not found"Búsqueda parcial matcheó placa incorrectaUsar search/wialon_id/{id} si conoces el sys_id
"Apikey Required / Limit Exceeded"No pertenece al Hub — es Decolecta del CRMRevisar DECOLECTA_API_KEY del CRM

📞 Soporte

Email
soporte@globalgpsperu.com
WhatsApp
+51 970 053 105
Horario
Lunes a Sábado, 8:00 - 18:00 (hora Perú)
Incidente crítico
WhatsApp con <URGENTE> al 970 053 105 — respuesta prioritaria 24/7