ICM en SILSX
Para entender el cálculo de ICM ir al sitio especializado de la documentación de ICM en Keeper aquí.
La gran diferencia con el ICM respecto a Keeper es la naturaleza propia de SILSX en relación a la diversidad de vehículos de distinto tipo que está pensado soportar.
En este sentido, SILSX permite no sólo generar alarmas de sobre velocidad a los 80 KM/H (máxima asignada a vehículos que transportan carga peligrosa) sino a cualquier velocidad que se pueda configurar desde el hardware (110, 120, etc).
Para calcular el puntaje es necesario conocer el exceso de velocidad (VE), por
lo tanto para cada alarma de over speed se necesita no sólo conocer la
velocidad alcanzada por el vehículo sino la máxima configurada en ese vehículo.
Para obtener este valor podemos hablar de dos grandes diferencias: dispositivos
Streamax y dispositivos Teltónika vía Traccar. Veamos cada uno.
Over Speed en dispositivos Streamax
Como todos sabemos, las Over Speed en el protocolo N9M se obtienen con el evento
EVEM con ALARMTYPE 8. Dicho evento se genera cuando sobre pasa la máxima configurada
(CMDTYPE 1), y cuando baja de dicha velocidad (CMDTYPE 0). Como parte del evento
viene el valor configurado de máxima MAXSP, y la duración CONTINUETIME.
Ejemplo:
{
"MODULE": "EVEM",
"OPERATION": "SENDALARMINFO",
"PARAMETER": {
"ALARMAS": 1,
"ALARMCOUNT": 1,
"ALARMNAME": "Over Speed",
"ALARMTYPE": 8,
"ALARMUID": 77,
"AT": 0,
"ATYPE": 1,
"CMDNO": 152,
"CMDTYPE": 0,
"CONTINUETIME": 8,
"CSP": 8100,
"CURRENTTIME": 1760383759,
"EVTUUID": "caad724e-8dfd-45b8-b3e4-defa5ed434af",
"I": 0,
"L": 1,
"LCH": 0,
"LD": 5,
"MAXS": 8200,
"MAXSP": 8100,
"MINS": 0,
"MINSP": 0,
"P": {
"C": 34720,
"J": "-64.160438",
"S": 7800,
"T": "20251013222918",
"V": 0,
"W": "-31.235076"
},
"RUN": 129,
"SER": "SPD",
"STORAGEINDEX": 1,
"TRIGGERTYPE": 1
},
"SESSION": "e107684e-7dbe-4a6c-8b21-2a570c92c08b",
"TYPE": "NOTIFY"
}
Estos valores son los que se envían al colector en los campos duracion, velocidadMax y velocidadLim en la alarma de cierre.
Por ejemplo:
{
"alt": 0,
"fecha": "2025-10-15T12:36:39.923Z",
"fechaGPS": "2025-10-15T12:36:39.000Z",
"lat": "-34.436711",
"lng": "-58.709328",
"rumbo": 136.4,
"tipo": "Over Speed",
"serieDVR": "009B0019A1",
"velocidad": 81,
"precisionGPS": 2,
"comando": 0,
"alarmaID": 510,
"duracion": 8,
"velocidadMax": 83,
"velocidadLim": 81,
"expireAt": "2027-10-15T12:36:39.993Z",
"id": "5678238666194944"
}
Over Speed en dispositivos Teltónika
En Teltónika las Over Speed se generan a partir del evento 255 recibido de Traccar,
y según la documentación oficial, el inicio de la alarma se genera cuando
la velocidad supera el 3% por encima de la máxima configurada en el dispositivo
y el fin de la alarma cuando la velocidad desciende a -3% de dicha máxima.
El problema que tenemos con Teltónika es que ese evento no viene con la máxima configurada para ese dispositivo, y dado que los Teltónika van a ser instalados en distintos tipos de vehículos, algunos con máxima 80, otros con máxima 120, etc, a ese valor lo debemos obtener de alguna manera.
Vamos a la solución.
Integración de apis con Traccar
Si bien ya existía una integración para que cuando se crean vehículos con dispositvo Teltónika se crean automáticamente en Traccar, también se implementó la actualización para mantener sincronismo. A su vez, ahora existe un campo en el ABM Vehículos que sirve para cargar la velocidad máxima de dicho dispositivo (sólo para TLK).
La velocidad máxima configurada en ABM vehículos deberá ser la misma que la velocidad máxima configurada en el dispositivo!
Para qué sirve ese valor?
Esa máxima se setea como atributo del vehículo (device) y lo que
hace Traccar es enviarlo en cada evento, incluso en el de sobre velocidad.
Cuando se recibe un evento de sobre velocidad, ese valor se compara y se calcula el puntaje.
Ejemplos:
Inicio de Over Speed
{
"position": {
"id": 0,
"attributes": {
"priority": 0,
"sat": 15,
"event": 255,
"ignition": true,
"motion": true,
"rssi": 5,
"io69": 1,
"in1": true,
"out1": false,
"io20": 0,
"io113": 100,
"io255": 85,
"io252": 0,
"power": 28.516000000000002,
"io24": 85,
"battery": 4.048,
"io68": 0,
"io9": 131,
"bleTemp2": 327.67,
"io104": 65535,
"operator": 72207,
"tripOdometer": 178364,
"odometer": 384592049,
"io11": 89540799000,
"io14": 23354621,
"distance": 403.68,
"totalDistance": 165309062.51,
"hours": 7210010979
},
"deviceId": 126,
"protocol": "teltonika",
"serverTime": "2025-10-14T12:06:17.315+00:00",
"deviceTime": "2025-10-14T12:06:16.000+00:00",
"fixTime": "2025-10-14T12:06:16.000+00:00",
"outdated": false,
"valid": true,
"latitude": -32.368995,
"longitude": -62.321405,
"altitude": 118,
"speed": 45.896345000000004,
"course": 281,
"address": null,
"accuracy": 0,
"network": null
},
"device": {
"id": 126,
"attributes": {
"velocidadMax": 80
},
"groupId": 1,
"name": "AB909QW",
"uniqueId": "860896050283571",
"status": "online",
"lastUpdate": "2025-10-14T12:06:17.315+00:00",
"positionId": 415598938,
"geofenceIds": null,
"phone": null,
"model": null,
"contact": null,
"category": null,
"disabled": false,
"expirationTime": null
}
}
Fin de Over Speed:
{
"position": {
"id": 0,
"attributes": {
"priority": 0,
"sat": 15,
"event": 255,
"ignition": true,
"motion": true,
"rssi": 5,
"io69": 1,
"in1": true,
"out1": false,
"io20": 0,
"io113": 100,
"io255": 79,
"io252": 0,
"power": 28.503,
"io24": 79,
"battery": 4.047,
"io68": 0,
"io9": 131,
"bleTemp2": 327.67,
"io104": 65535,
"operator": 72207,
"tripOdometer": 178812,
"odometer": 384592497,
"io11": 89540799000,
"io14": 23354621,
"distance": 448.55,
"totalDistance": 165309511.06,
"hours": 7210029979
},
"deviceId": 126,
"protocol": "teltonika",
"serverTime": "2025-10-14T12:06:36.417+00:00",
"deviceTime": "2025-10-14T12:06:35.000+00:00",
"fixTime": "2025-10-14T12:06:35.000+00:00",
"outdated": false,
"valid": true,
"latitude": -32.368165,
"longitude": -62.3260733,
"altitude": 119,
"speed": 42.656603000000004,
"course": 281,
"address": null,
"accuracy": 0,
"network": null
},
"device": {
"id": 126,
"attributes": {
"velocidadMax": 80
},
"groupId": 1,
"name": "AB909QW",
"uniqueId": "860896050283571",
"status": "online",
"lastUpdate": "2025-10-14T12:06:36.417+00:00",
"positionId": 415598938,
"geofenceIds": null,
"phone": null,
"model": null,
"contact": null,
"category": null,
"disabled": false,
"expirationTime": null
}
}
En el caso de Teltónika, el tiempo se calcula con la diferencia entre ambos eventos ya que no viene (como en Streamax) la duración en el evento de fin.
Por lo tanto, el evento enviado al colector para el cierre de la Over Speed incluye
velocidadLim y velocidadMax, pero no duracion.
Por ejemplo:
{
"lat": -31.5759483,
"lng": -61.3849483,
"velocidad": 78,
"serieDVR": "864292045882188",
"precisionGPS": 0,
"alt": 74,
"rumbo": 118,
"fechaGPS": "2025-10-15 13:21:49.000",
"fecha": "2025-10-15 13:21:51.839",
"deviceType": "teltonika",
"tipo": "Over Speed",
"comando": 0,
"velocidadLim": 80,
"velocidadMax": 78,
"expireAt": "2027-10-15T13:21:52.498Z",
"id": "4722160700882944"
}