Caso Real: Sistema GPS de Flota con Traccar y Dolibarr
Módulo GPS para Dolibarr ERP: hardware SinoTrack, Traccar open source, mapas en tiempo real con Leaflet y optimización de rutas con IA.
Tabla de contenidos
TL;DR
La empresa necesitaba rastrear su flota de vehículos sin depender de plataformas SaaS caras. Seleccioné el hardware GPS, lo instalé físicamente en los vehículos, migré de la plataforma propietaria a Traccar (open source), y desarrollé un módulo completo en Dolibarr con mapas en tiempo real, histórico de rutas y optimización con IA. Resultado: control total de la flota con coste recurrente cero.
<video src=“/videos/gps.mp4” controls muted playsinline class=“w-full rounded-xl my-6 shadow-lg” style=“max-height: 480px; object-fit: cover;”
Tu navegador no soporta vídeo HTML5.
El problema de la empresa
La empresa tenía vehículos en ruta pero cero visibilidad:
- No sabían dónde estaban los vehículos en tiempo real
- Las rutas no se optimizaban — los conductores elegían su camino
- No había histórico de recorridos para auditorías
- Las soluciones SaaS del mercado costaban 15-30€/vehículo/mes y los datos quedaban en servidores ajenos
Lo que me pidieron: “Necesitamos ver dónde están nuestros coches y que sea nuestro, no de otro.”
Fase 1: Selección del hardware GPS
Investigué 8 dispositivos GPS 4G. Requisitos:
| Requisito | Por qué |
|---|---|
| Compatible con Traccar | Para no depender de plataformas propietarias |
| Conectividad 4G/LTE | Las redes 2G/3G están cerrando |
| Configuración por SMS | Para modificar parámetros sin acceso físico |
| Alimentación por vehículo | Sin baterías que cambiar |
| Precio < 40€/unidad | Escalable a toda la flota |
Elegí el SinoTrack ST-901 4G: 25€/unidad, LTE, compatible con Traccar, configuración por comandos SMS/AT, alimentación 12V-80V directa del vehículo.
Instalación física
No es solo comprar el GPS y enchufarlo. Instalé cada dispositivo personalmente:
- Conexión a alimentación del vehículo (12V directo desde fusiblera)
- Ocultación del hardware bajo el salpicadero (antirrobo)
- Verificación de señal GPS en frío y en movimiento
- Configuración por SMS: intervalo de reporte (30s), servidor de destino, APN del operador
# Comandos SMS reales de configuración del ST-901
804{password} {ip_traccar} {puerto} # Servidor de destino
805{password} 30 # Intervalo de reporte (30 segundos)
TIMER{password} 30 # Frecuencia de envío
Fase 2: Migración de plataforma propietaria a Traccar
El GPS viene configurado de fábrica para enviar datos a los servidores de SinoTrack. Su plataforma web funciona pero:
- Coste mensual por dispositivo
- Cero personalización del dashboard
- Datos en sus servidores (China) — problema de RGPD
- API limitada — no se puede integrar con Dolibarr
La solución: Traccar como hub intermedio
┌──────────┐ ┌─────────────┐ ┌──────────────┐ ┌──────────┐
│ GPS │────▶│ Traccar │────▶│ API REST │────▶│ Dolibarr │
│ ST-901 │4G │ (propio) │ │ propia │ │ Módulo │
│ en coche │ │ Docker │ │ PHP │ │ GPS │
└──────────┘ └─────────────┘ └──────────────┘ └──────────┘
Traccar es open source, soporta 200+ protocolos de GPS y tiene API REST. Lo desplegué con Docker en el mismo servidor Linux de la empresa:
# docker-compose.yml para Traccar
services:
traccar:
image: traccar/traccar:latest
ports:
- "8082:8082" # Web UI
- "5013:5013" # Protocolo SinoTrack
volumes:
- ./traccar.xml:/opt/traccar/conf/traccar.xml
- traccar-data:/opt/traccar/data
Redirigí los GPS del servidor SinoTrack a mi servidor Traccar cambiando la IP de destino por SMS. En 10 minutos, todos los GPS reportaban a mi infraestructura.
Fase 3: Módulo Dolibarr con mapas en tiempo real
Con los datos fluyendo a Traccar, desarrollé un módulo completo para Dolibarr que consume la API de Traccar y añade lógica de negocio.
Mapas interactivos con Leaflet.js
// Mapa de la flota en tiempo real
const map = L.map('fleet-map').setView([40.4168, -3.7038], 6);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);
// Marcador por cada vehículo activo
vehicles.forEach(v => {
const marker = L.marker([v.lat, v.lng], { icon: vehicleIcon })
.bindPopup(`
<b>${v.plate}</b><br>
Velocidad: ${v.speed} km/h<br>
Última actualización: ${v.lastUpdate}
`)
.addTo(map);
});
¿Por qué Leaflet y no Google Maps? Coste cero. OpenStreetMap + Leaflet no tiene límite de peticiones ni requiere API key de pago. Para una flota de 10-50 vehículos, es la solución correcta.
Funcionalidades del módulo
| Funcionalidad | Implementación |
|---|---|
| Tracking en tiempo real | Polling a Traccar API cada 30s, actualización de marcadores en mapa |
| Histórico de rutas | Consultas a BD con filtro de fechas, polylines en Leaflet |
| Geocercas | Polígonos definidos por el usuario, alertas al entrar/salir |
| Alertas de velocidad | Threshold configurable por vehículo |
| Paradas no autorizadas | Detección de parada > 15min fuera de zonas permitidas |
| Dashboards | Chart.js con km recorridos, tiempo en ruta, paradas por día |
| Comparación de rutas | Ruta planificada vs ruta real superpuestas en mapa |
Optimización de rutas con IA
Implementé un algoritmo que analiza el histórico de rutas y sugiere optimizaciones:
- Detecta rutas repetitivas con desvíos innecesarios
- Sugiere el orden óptimo de paradas (variante del TSP)
- Calcula ahorro estimado en km y combustible
Retos técnicos reales
1. Volumen de datos GPS
Un GPS reportando cada 30 segundos genera 2.880 registros/día por vehículo. Con 10 vehículos, son 28.800 registros diarios. En un mes, casi 1 millón.
Solución:
- Índices compuestos en MySQL (
device_id,timestamp) - CRON job nocturno que consolida posiciones cercanas (< 5m de diferencia)
- Particionado de tablas por mes para consultas históricas rápidas
2. GPS que deja de reportar
Los GPS a veces pierden señal (garaje subterráneo, zona sin cobertura). El sistema necesita distinguir entre “vehículo parado” y “GPS sin señal”.
Solución: timeout configurable. Si no hay datos en 5 minutos, el marcador cambia a gris con icono de “sin señal”. Si el vehículo reporta velocidad 0, se marca como “parado” con color naranja.
3. Configuración remota del GPS por SMS
Los comandos SMS al GPS tienen sintaxis estricta y no hay feedback visual. Un carácter mal y el GPS no responde.
Solución: desarrollé un panel en Dolibarr que genera los comandos SMS correctos automáticamente. El usuario solo elige “cambiar intervalo a 60s” y el sistema compone el SMS con la sintaxis correcta del ST-901.
Lo que consiguió la empresa
| Antes | Después |
|---|---|
| Cero visibilidad de la flota | Tracking en tiempo real de todos los vehículos |
| Rutas sin optimizar | Reducción del 15% en km recorridos |
| Sin histórico | 6 meses de recorridos consultables |
| SaaS de terceros (15€/vehículo/mes) | Coste recurrente: 0€ (solo datos móviles del GPS) |
| Datos en servidores externos | Control total — datos en servidor propio |
| Sin alertas | Alertas de velocidad, geocercas y paradas anómalas |
ROI: el coste del hardware (25€/GPS) + desarrollo se amortizó en 2 meses comparado con la suscripción SaaS anterior.
Stack técnico
- Hardware: SinoTrack ST-901 4G
- Plataforma GPS: Traccar (open source, Docker)
- Backend: PHP + MySQL (módulo Dolibarr)
- Mapas: Leaflet.js + OpenStreetMap
- Dashboards: Chart.js + D3.js
- Infraestructura: Linux, Apache, SSL/TLS, Docker
- Optimización: Algoritmos de IA para rutas
Lo que aprendí
- Open source > SaaS para tracking GPS. Traccar es maduro, estable y gratis. Las plataformas propietarias cobran por algo que puedes tener por cero.
- La instalación física importa — un GPS mal instalado da lecturas erráticas. Hay que verificar señal en frío y en movimiento.
- El volumen de datos GPS crece rápido — sin consolidación y limpieza automática, la BD se infla en semanas.
- Leaflet + OpenStreetMap es perfecto para flotas empresariales. Google Maps no aporta nada por el sobrecoste.
- Dolibarr es más extensible de lo que parece — con un módulo bien diseñado puedes integrar casi cualquier funcionalidad.
¿Tu empresa necesita algo similar?
Si necesitas rastreo de flota, integración IoT con tu ERP, o cualquier desarrollo que conecte hardware con software, cuéntame tu proyecto.
Más casos reales: