El propósito principal de la API de streaming de coordenadas de objeto es informar al usuario sobre cambios del objeto. Esta API funciona como un stream de información, usando tecnología SSE (eventos enviados por servidor). Al enviar una solicitud de API, al principio se muestra la última conocida coordenada para cada objeto, luego se mostrarán datos nuevos tan pronto como se ocurren cambios. No hay necesidad de enviar la solicitud de API de nuevo a menos que no hay conectividad de streaming
Note
Debido a que la API devuelve la última conocida coordenada, en los casos cuando el streaming de la API estaba activo y tuvo que reconectarse por alguna razón sin recibir coordenadas nuevas, el usuario recibirá la última conocida coordenada, duplicando el registro de coordenada. Hay que tener esto en cuenta, porque puede producir problemas en algunos sistemas.
Se puede iniciar el streaming de la API para un objeto específico o todos los objetos disponibles para el usuario.
Ejemplo de solicitud para un objeto específico:
GET /object-coordinates-stream?version=1&object_id=<…>&api_key=<…>
HOST:api.fm-track.com
Content-Type:text/event-stream;charset=UTF-8
Ejemplo de solicitud para todos los objetos disponibles:
GET /object-coordinates-stream?version=1&api_key=<…>
HOST:api.fm-track.com
Content-Type:text/event-stream;charset=UTF-8
Dos parámetros son obligatorios para que funcione esta API:
Parámetro | Tipo | Descripción |
---|---|---|
version | Cadena | Versión de la API, actualmente solo version=1 está disponible |
api_key | Cadena | Clave de identificación del usuario |
Se puede incluir un parámetro adicional a la solicitud:
Parámetro | Tipo | Descripción |
---|---|---|
object_id | Cadena | ID del objeto externo |
Respuesta del servidor:
{ "object_id" : "abc123", "datetime" : "2017-04-13T06:58:48.090Z", "ignition_status" : "UNKNOWN", "position" : { "altitude" : 0, "direction" : 0, "latitude" : 0, "longitude" : 0, "hdop": 0, "satellites_count" : 0, "speed" : 0 }, "device_inputs" : { "digital_input_1" : true, "digital_input_2" : true, "digital_input_3" : true, "digital_input_4" : true, "power_supply_voltage" : 0, "ibutton" : "xxxxxxxxxx", "first_driver_id" : "xxxxxxxxxx", "second_driver_id" : "xxxxxxxxxx", "temperature_sensor_0": 0, "temperature_sensor_1": 0, "temperature_sensor_2": 0, "temperature_sensor_3": 0, "temperature_sensor_0_id": "xxxxxxxxxx" }, "calculated_inputs":{ "mileage" : 0 } }
Todos los parámetros de respuesta que se puede recibir:
Parámetro | Tipo | Descripción | Unidades |
---|---|---|---|
object_id | Cadena | Identificador del objeto en el sistema | Texto |
datetime | Fecha y hora | La fecha y hora de coordenada, generada en el hardware. Formato: "yyyy-mm-ddThh:mm:ss.sssZ" | Según ISO8601 |
ignition_status | Enum | Indica el estado de ignición del objeto. "ON" - Ignición encendida "OFF" - Ignición apagada "UNKNOWN" - No hay datos de ignición | ON - OFF |
position | Array | Contiene todos los parámetros de registros GPS | |
latitude | Decimal | Coordenada GPS - valor de latitud | Grados |
longitude | Decimal | Coordenada GPS - valor de longitud | Grados |
altitude | Número entero | Coordenada GPS - valor de altitud | Número |
direction | Número entero | Dirección de movimiento en grados | 0 = norte, creciente en el sentido horario |
speed | Número entero | Velocidad del objeto en movimiento | km/h |
satellites_count | Número entero | Cantidad de visibles satélites GPS o GLONASS (depende de la configuración del dispositivo) al generar el registro en el dispositivo | Número |
device_inputs | Array | Contiene los parámetros recibidos desde el hardware | |
power_supply_voltage | Número entero | Voltaje de fuente de alimentación del dispositivo | mV |
ibutton | Cadena | Código de iButton o tarjeta RFID de un conductor asignado a un vehículo | Texto |
hdop | Decimal | Precisión de coordenada GPS | Número |
first_driver_id | Cadena | Código de tacógrafo del primer conductor | Texto |
second_driver_id | Cadena | Código de tacógrafo del segundo conductor | Texto |
digital_input_1 | Booleano | Estado del objeto configurado o su equipo: True - activo False - inactivo | True - False (Verdadero - Falso) |
digital_input_2 | Booleano | Estado del objeto configurado o su equipo: True - activo False - inactivo | True - False (Verdadero - Falso) |
digital_input_3 | Booleano | Estado del objeto configurado o su equipo: True - activo False - inactivo | True - False (Verdadero - Falso) |
digital_input_4 | Booleano | Estado del objeto configurado o su equipo: True - activo False - inactivo | True - False (Verdadero - Falso) |
temperature_sensor_0 | Decimal | Datos de sensor de temperatura | °C |
temperature_sensor_1 | Decimal | Datos de sensor de temperatura | °C |
temperature_sensor_2 | Decimal | Datos de sensor de temperatura | °C |
temperature_sensor_3 | Decimal | Datos de sensor de temperatura | °C |
temperature_sensor_0_id | Cadena | ID de sensor de temperatura | Texto |
calculated_inputs | Array | Contiene los parámetros calculados en el sistema desde otros parámetros, según la configuración | |
mileage | Decimal | Distancia recorrida por el dispositivo (depende de la configuración del dispositivo) | km |
Se puede ver los puntos finales de API, los parámetros de solicitudes y las respuestas en “Swagger” haciendo clic en este enlace: https://api.fm-track.com
Nota
Por favor tenga en cuenta que la respuesta del servidor es un stream de datos, de los mismos datos, recibidos desde el dispositivo. Todos los datos recibidos se proporcionan “como están”. Esto significa que el dispositivo puede periódicamente enviar coordenadas de una ubicación previa entre registros de la ubicación actual. La API no comprueba o gestiona la continuidad de los datos recibidos.