Scripting de Device Mapper

La secuenciación de mapeo de dispositivos permite que las variables de GpsGate se asignen al resultado de un script definido por el usuario. Esto te permite crear mapeos más complejos entre variables.

Cómo habilitarlo

  • Navega a Menú Principal Administración del sitio → Aplicaciones → Gestionar Aplicaciones -> Privilegios
  • Habilita lo siguiente: _EditDeviceMapper

                                               _EditDeviceMapperScript

Cómo acceder al Script de Mapeo de Dispositivos

1. Inicia sesión en tu aplicación

2. Selecciona el menú Menú Principal > Admin > Mapeadores de Dispositivos > Elige el dispositivo 

3. Desde la ventana del dispositivo abre la sección de Script y presiona el botón +Script

Screenshot 2024-02-06 at 10.06.34.png

4. Asigna un nombre al script 

5. Selecciona tu salida y luego haz clic en Abrir editor de scripts para comenzar a desarrollar tu script

Screenshot 2024-02-06 at 10.09.02.png

Bueno saber

  • El lenguaje de scripting es Javascript.
  • Solo puedes usar variables mapeadas en el paso 3. Mapeo del Mapeador de Dispositivos.
  • Usa la función fields.get(...) para obtener el valor de una variable dada. El primer parámetro es el nombre de la variable, el segundo parámetro es un valor predeterminado que se puede usar si la variable no existe (por ejemplo, cuando el rastreador nunca ha enviado el valor). Siempre debes manejar el caso de 'variable faltante' para evitar errores de evaluación.
  • El resultado devuelto debe ser convertido al tipo de la variable de salida.
  • Cuando el valor devuelto por el script es null o undefined, la variable es ignorada.
  • Intenta escribir código eficiente y evita instrucciones innecesarias en los scripts.
  • Hay un límite de pasos de ejecución para cada script para evitar que scripts defectuosos bloqueen el servidor.

Ejemplos

Algunos ejemplos de problemas que son fáciles de resolver con scripting del mapeador de dispositivos:

Invertir una variable booleana

El script captura la entrada HarshTurningDigital e invierte el valor.

var booly = fields.get("HarshTurningDigital",false);
booly = !(booly != false);
return booly;

Screenshot 2024-02-06 at 10.12.04.png

Convertir metros a millas

Este script convierte la entrada de metros a millas. Útil cuando tienes el sistema métrico en tu aplicación pero aún deseas mostrar una variable en la interfaz en Millas.

var odoAcc = fields.get('OdometerAcc', 0); // Entrada de OdometerAcc en metros
var odoAccMIL = (odoAcc * 0.000621371).toFixed(2); // convierte metros a millas y redondea a 2 decimales
return odoAccMIL;

Screenshot 2024-02-06 at 10.13.04.png

Reemplazar un valor con otro

Este script captura el valor de una entrada (HarshBreakingDigital) y lo cambia de false a 0 si la condición coincide.

return fields.get("HarshBreakingDigital",false) ? fields.get("HarshBreaking", 0) : 0;

Screenshot 2024-02-06 at 10.14.41.png

Restablecer una entrada basada en fecha/hora

Este script establece la salida en true si la fecha actual del trackpoint es mayor que la fecha de restablecimiento especificada


var d = new Date(trackPoint.utcTimestamp);
var newTime = d.getTime(); // convierte la fecha actual del trackpoint a milisegundos
var r = new Date('December 08, 2019 00:00:00');
var resetTime = r.getTime(); // convierte la fecha especificada a milisegundos
log('newTime : ' + newTime);
log('resetTime: ' + resetTime);
log('resetTime-newTime: ' + (resetTime-newTime)/1000/60/60/24); //días hasta la hora de restablecimiento
if(resetTime > newTime)
{
return false;
} else return true;

Screenshot 2024-02-06 at 10.16.32.pngScreenshot 2024-02-06 at 10.16.22.png

Cambiar la salida de una variable según el valor de una entrada.

Este script captura la entrada de Temperatura y se evalúa de acuerdo con ciertos valores de temperatura. Dependiendo de esos valores, el script cambia la salida de la variable CustomString2.

var cargoTemperature = fields.get('Temperature', null);
if(cargoTemperature == null)
{
return 'Unknown';
} else if (cargoTemperature < 10)
{
return 'Normal';
} else {
return 'Hot';
}

Screenshot 2024-02-06 at 10.18.06.png

Extracción de bits de una variable acumulada

El script obtiene los bits 2-9 de CustomAnalog2. Aquí hay un valor de muestra en forma binaria: 0110001110010101 y queremos extraer los bits resaltados.

var CustomAnalog2 = fields.get('CustomAnalog2',0);
var tmp = CustomAnalog2 >>2; // descartar los bits 0 y 1
return tmp % 256; // mod 256 para obtener los primeros 8 bits.

Screenshot 2024-02-06 at 10.19.08.png

Seleccionar múltiples salidas

Puedes seleccionar múltiples salidas para un solo script de mapeador de dispositivos. Casos como una sola cadena larga de datos que necesita dividirse en muchas variables deberían ser más simples de manejar y tener un mejor rendimiento si se implementan con un solo script.


Para establecer: return { 'Var1': 12.3, 'Var2':false, 'Var3':'textabc' }
Establecer un solo campo funciona de la misma manera.
Establecer múltiples salidas requiere habilitar el nuevo motor de scripts si aún no está habilitado, en Administración del sitio > Configuración > Scripts.

Consejos

  • Puedes ejecutar el script haciendo clic en el botón Probar Script.
  • Las variables de salida se asignarán utilizando los valores de prueba (columna derecha).
  • Es posible simular el caso de una variable faltante haciendo clic en la casilla de verificación junto a una variable. El resultado y los errores se muestran en la consola debajo del script.
  • Si cierras la ventana Editar Script, el script se sincroniza con la ventana del Mapeador de Dispositivos.
  • No puedes guardar un mapeador de dispositivos si tienes algún error en los scripts.

Pruebas

Se proporciona una función log() para producir información de depuración sobre la evaluación del script. La salida de la función log está en la consola de la ventana del editor de scripts en modo de prueba y en la ventana del terminal en producción. Aquí hay un ejemplo de cómo usar esta función en scripts: log(‘sometext: ’ + scriptvariable);

Cuando estás escribiendo un nuevo script, es útil probarlo con los puntos de seguimiento de un activo o usar el simulador.