Integración de dispositivo personalizado con el protocolo GpsGate
Este artículo describe los requisitos al crear una integración de rastreador personalizada para permitir la comunicación cliente-servidor con GpsGate utilizando HTTP o HTTPS.
Especificaciones de comunicación rastreador-servidor
Al enviar reportes utilizando HTTP / HTTPS, el rastreador debe enviar los datos en el siguiente formato:
Enviar URL de mensaje
_SendMessage es enviado por el rastreador cuando debe enviar una posición de acuerdo con cualquier evento en el rastreador, como cuando se presiona un botón o se activa un sensor de movimiento. Se puede añadir cualquier número de entradas de estado al final de _SendMessage.
La URL para enviar un mensaje tiene la siguiente estructura:
transport://hostname:port/comGpsGate/protocols/gpsgate/?cmd=$FRCMD,IMEI,_SendMessage,,DDMM.mmmm,N,DDMM.mmmm,E,AA.a,SSS.ss,HHH.h,DDMMYY,hhmmss.dd,valid,var=value
Campo | Descripción |
transport | HTTP o HTTPS |
hostname | El nombre/dirección IP del servidor |
port | 80 para HTTP / 443 para HTTPS |
comGpsGate/protocols/gpsgate/?cmd= | Ruta del recurso |
$FRCMD | Un comando para enviar al servidor para la instrucción de enviar mensaje |
IMEI | El número IMEI del rastreador que se utiliza para la autenticación. |
_SendMessage | Entrada que especifica cuándo se debe enviar una posición al servidor. |
DDMM.mmmm | Latitud (formato NMEA) |
<N|S> | Hemisferio N o S |
DDMM.mmmm | Longitud DDMM.mmmm (formato NMEA) |
<E|W> | Hemisferio E o W |
AA.a | Altitud en metros sobre el nivel del mar |
SSS.ss | Velocidad sobre el suelo en nudos |
HHH.h | Rumbo sobre el suelo en grados |
DDMMYY | fecha |
hhmmss.dd | Hora (UTC) |
válido | 1 si es una corrección válida. 0 si no es una corrección válida. |
var=valor | Entrada de estado. Puede especificar más de una entrada para usar, por ejemplo, SosButton=1,BatteryLow=0, etc. Vea la lista de sección de entradas a continuación. |
Ejemplo para HTTP
http://demo.server.com:80/comGpsGate/protocols/gpsgate/?cmd=$FRCMD,353857014816785,_SendMessage,,4748.0000,N,3530.0000,E,34.6,234.00,90.0,170109,
120523.65,1
Ejemplo para HTTPS
https://demo.server.com:443/comGpsGate/protocols/gpsgate/?cmd=$FRCMD,353857014816785,_SendMessage,,4748.0000,N,3530.0000,E,34.6,234.00,90.0,170109,
120523.65,1
Prueba de la URL
Si deseas probar tu integración HTTP/HTTPS, simplemente copia y pega el contenido de la URL en tu navegador para ver la respuesta.
Respuesta
El cuerpo de la respuesta contiene la respuesta del servidor $FRRET, el IMEI del usuario autenticado, el comando utilizado, y un código de verificación.
Por ejemplo, el servidor responderá: $FRRET,IMEI,_SendMessage
Entradas
El protocolo tiene un conjunto de entradas personalizadas. Estas pueden ser mapeadas usando el mapeador de dispositivos en el servidor usando GpsGate TrackerOne o Tipos de Dispositivos Genéricos de GpsGate. Agrega entradas de estado al final de los comandos _SendMessage enviados al servidor.
Nombre de la variable | Tipo | Obligatorio | Descripción | Ejemplo |
---|---|---|---|---|
Analog1-32 |
double | No | Una entrada personalizada para ser mapeada en el servidor. Valores posibles: Analog1 a 34 (GpsGate Generic Device) | Analog1=45.7 |
BatteryLow |
boolean | Sí | enviado al servidor cuando la batería está baja. | BatteryLow=1 |
Button1-4 |
boolean | No | Entrada booleana para almacenar el estado de señal de un botón de dos estados. Valores posibles: Button1 a 4 | Button1=1 |
CellID |
number | No | Un número que especifica el CellID de la red celular | CellID=12345 |
ChatMessage |
string | No | Un mensaje de texto personalizado para usar con el complemento Dispatch (obsoleto). | ChatMessage=helloWorld! |
DriverID |
string | No | Un campo de texto para ser utilizado con fines de identificación del conductor. | DriverID=123456789ABC |
HDOP |
number | No | Un campo numérico para expresar dilución horizontal de la precisión. | HDOP=123456 |
JobAssignmentState |
string | No | Un mensaje de texto personalizado para usar con el complemento Dispatch (obsoleto). | JobAssignmentState=Accepted |
LAC MCC MNC |
número | No | Un número para expresar Código de País Móvil (MCC), Código de Red Móvil (MNC), Código de Área de Ubicación (LAC) | LAC=001 |
Motion |
booleano | No | Este dato debe incluirse si el rastreador comienza a rastrear basado en el movimiento. En el servidor, este dato puede opcionalmente conectarse a alarmas de varios tipos. | Motion=1 |
SmsMessage |
cadena | No | Un campo de cadena personalizado para almacenar el contenido del mensaje SMS. | SmsMessage=hello World! |
SosButton |
booleano | No | Este dato debe mapearse al evento SOS en el servidor. | SosButton=1 |
Speed |
número | Sí | Este dato se utiliza para reflejar la velocidad del activo en m/s. | Speed=5.56 |
Switch1-16 |
booleano | No |
Entrada booleana para almacenar el estado de señal tipo interruptor de dos estados. Valores posibles: Switch1 a 16 (GpsGate Generic Device) |
Switch1=1 |
Text1-30 |
cadena | No | Un mensaje de texto personalizado. Valores posibles: Text1 a 30 (GpsGate Generic Device) | Text1=Hello |
Odómetro |
double | No | Si el rastreador admite el odómetro (cálculo de distancia), use esta entrada para enviarlo al servidor. El valor puede ser absoluto o un valor delta desde el último reporte del odómetro. La entrada del odómetro se escala en el servidor. | Odometer=1023445.3 |
Manejo de errores
Si un comando por alguna razón no puede ser ejecutado, se devuelve FRERR y no FRRET. La razón puede
ser que hay algún tipo de error de ejecución, el comando no es compatible, o hay un error de protocolo. Cuando se devuelve FRERR, el cliente debe asumir que no se ha afectado ningún dato en el servidor. El protocolo está basado en transacciones. En todos los casos, excepto cuando hay un error de protocolo o de conexión, el intercambio de comandos puede continuar entre el servidor y el cliente.
$FRCMD siempre es respondido por $FRRET o $FRERR.
Error | Descripción |
200 (OK) | La solicitud fue procesada exitosamente |
400 (BadRequest) | Solicitud incorrecta, no se puede ejecutar |
401 (Unauthorized) | Error de autenticación o inicio de sesión |
403 (Forbidden) | Error de autorización |
404 (NotFound) | Código Http predeterminado cuando no se pueden activar otros códigos Http (excepto 200 y 500) |
500 (InternalServerError) | Error interno del servidor, contacte al administrador (código Http predeterminado cuando no se pueden activar otros códigos Http) |
501 (NotImplemented) | La solicitud no es compatible |
503 (ServiceUnavailable) | Error interno del servidor, contacte al administrador |
Ejemplo de error:
Cliente > $FRCMD,0802,_dummy,Inline*6C
Servidor > $FRERR,NotSupported,_dummy no compatible*66
Mapeador de Dispositivos
La función principal del Mapeador de Dispositivos es asignar entradas del rastreador a variables. Estas variables se utilizan en pantalla, reglas de eventos, reportes y más.
Lea más sobre el mapeador de dispositivos aquí.
Scripting del Mapeador de Dispositivos
El scripting del mapeador de dispositivos permite que las variables de GpsGate se asignen al resultado de un script definido por el usuario. Esto le permite crear mapeos más complejos entre variables.
Lea más sobre los scripts del mapeador de dispositivos aquí.