get_last

Para obtener el estado actual de un evento activo o el último estado conocido de un evento completado, utilice el método events/get_last.

A diferencia de events/get, este método no requiere que los eventos se carguen en la sesión y no devuelve el historial de eventos. A diferencia de events/check_updates, no requiere añadir el elemento a la sesión mediante events/update_items.

Para utilizar el método, necesita el derecho de acceso Ver objeto y sus propiedades básicas a la unidad o recurso especificado.

Endpoint

Copied!
svc=events/get_last&params={
  "itemId": <long>,
  "type": <text>,
  "filter1": <long>,
  "filter2": <text>,
  "detalization": <uint>,
  "measure": <uint>,
  "lang": <text>
}

Parámetros

La solicitud debe contener el parámetro itemId. Todos los demás parámetros son opcionales.

Parámetro Descripción
itemId ID de unidad o ID de recurso. El ID de recurso se especifica para el detector resource_drivers (eventos de asignación de conductores).
type Nombres de los detectores de eventos que se consultarán. Especifique un detector, varios detectores separados por comas (por ejemplo, trips,sensors) o use los comodines * y ? (por ejemplo, sens*). El valor por defecto es *, que devuelve el estado de todos los detectores disponibles. Puede usar una clave de detector de esa respuesta como valor en solicitudes posteriores.
filter1 Filtro del detector. Úselo solo cuando solicite un detector en el parámetro type. Para detectores basados en sensores (sensors, lls, ev, filling, theft, fuel_level, charge, battery_level), especifique un ID de sensor, o 0 para todos los sensores de este tipo. Para resource_drivers, especifique un ID de conductor, o 0 para todos los conductores. Para trips, counters, speedings, health_check y eco_driving, use 0. El valor por defecto es 0.
filter2 Opcional. Filtro adicional del detector por nombre. Funciona solo para detectores que registran eventos para un sensor o conductor específico: detectores basados en sensores (filtro por el nombre del sensor) y resource_drivers (filtro por el nombre del conductor). Para trips, counters, speedings, health_check y eco_driving, el valor se ignora. Especifique un nombre, o varios nombres separados por comas, y use los comodines * y ? si es necesario, por ejemplo, Fuel*,Tank?. Este filtro se aplica solo cuando filter1 es 0. El valor por defecto es una cadena vacía ("").
detalization Flags de salida. Deben especificarse en formato decimal. El valor por defecto es 7 (0x7), que devuelve datos básicos del evento, datos específicos del detector y parámetros del mensaje asociado con el evento. Consulte más abajo.
measure Sistema de medidas: 0 para métrico (SI), 1 para estadounidense, 2 para imperial, o 3 para métrico con galones. Si no se especifica, se usa el valor establecido para la sesión actual (los dos bits más bajos del parámetro flags de render/set_locale). Si no se establece ningún valor en la sesión, se usa 0.
lang Idioma (código de 2 caracteres, por ejemplo, en o es). Si no se especifica, se usa el valor establecido para la sesión actual (consulte el parámetro language de render/set_locale). Si no se establece ningún valor en la sesión, se usa en.

Flags

Flag Descripción
0x1 Datos básicos del evento: tiempos, coordenadas y flags de servicio del evento.
0x2 Datos específicos del detector.
0x4 Parámetros del mensaje asociado con el evento.
0x8 Datos de evento adicionales cuando el detector lo admite.
0x10 Datos detallados de mensaje cuando el detector lo admite.
0x20 Valores formateados del detector.
0x100 Eventos adicionales registrados por los detectores fuel_level y battery_level con los valores recopilados desde el evento anterior. No se requiere para la mayoría de las integraciones.

Respuesta

Si la solicitud se completa correctamente, la respuesta contiene un objeto con clave por tipo de detector. De lo contrario, se devuelve un código de error.

La estructura de datos dentro de cada clave depende del detector y los flags solicitados.

Estructura común

Con el flag 0x1, los detectores trips y counters devuelven sus datos directamente, en la siguiente estructura. Otros detectores agrupan objetos de evento por un ID específico del detector, como se muestra en los ejemplos.

Copied!
{
  "<detector_type>": {
    "from": {
      "t": <uint>,
      "y": <double>,
      "x": <double>
    },
    "to": {
      "t": <uint>,
      "y": <double>,
      "x": <double>
    },
    "m": <uint>,
    "f": <uint>
  }
}
Campo Descripción
from Datos de inicio del evento: t para tiempo UNIX, y para latitud y x para longitud.
to Datos del último mensaje procesado: t para tiempo UNIX, y para latitud y x para longitud.
m Hora del último mensaje procesado, tiempo UNIX.
f Flags de servicio del evento.

Para una posición privada, los valores x e y se devuelven como 0.

Los otros flags devuelven los mismos datos que los flags correspondientes de events/check_updates: datos específicos del detector (0x2), parámetros del mensaje asociado con el evento (0x4), datos de detalle adicionales (0x8), datos detallados de mensaje (0x10) y valores formateados (0x20). Para el detector resource_drivers, los campos devueltos se describen en el ejemplo a continuación.

Códigos de error

Código Descripción
1 SID de solicitud no válido u obsoleto.
4 Error de validación de parámetros.
5 Los eventos están deshabilitados.
7 El servicio de eventos no está disponible, no se puede obtener el elemento o el usuario no tiene el derecho de acceso Ver objeto y sus propiedades básicas a la unidad o recurso especificado.

Ejemplos

Los siguientes ejemplos muestran cómo obtener estados de eventos para diferentes casos de uso.

Obtener todos los estados de detectores para una unidad

Para obtener el estado de todos los detectores disponibles para una unidad, especifique solo el ID de unidad:

Copied!
svc=events/get_last&params={
  "itemId": <unit_id>
}

La respuesta es un objeto con clave por cada tipo de detector disponible:

Copied!
{
  "<detector_type>": {
    "...": "..."
  }
}

Obtener los estados de varios detectores

Para obtener los estados de varios detectores a la vez, enumérelos en el parámetro type separados por comas. En la siguiente solicitud se solicitan los estados de los detectores trips y sensors, y los sensores se filtran por nombre con filter2:

Copied!
svc=events/get_last&params={
  "itemId": <unit_id>,
  "type": "trips,sensors",
  "filter2": "Temperature 1,Temperature 2",
  "detalization": 39
}

La respuesta contiene un objeto para cada detector solicitado. El detector sensors agrupa sus datos por ID de sensor y el detector trips devuelve sus datos directamente:

Copied!
{
  "trips": { "...": "..." },
  "sensors": {
    "<sensor_id>": { "...": "..." }
  }
}

Obtener el estado actual del nivel de combustible

Para obtener el estado del nivel de combustible para todos los sensores del nivel de combustible de una unidad, especifique el ID de unidad y el detector fuel_level. Use detalization 39 (0x27) para incluir datos básicos del evento, datos específicos del detector, parámetros de mensaje y valores formateados:

Copied!
svc=events/get_last&params={
  "itemId": <unit_id>,
  "type": "fuel_level",
  "filter1": 0,
  "filter2": "",
  "detalization": 39
}

La respuesta se agrupa por ID de sensor. Con detalization 39 (0x27), puede contener los siguientes campos:

Copied!
{
  "fuel_level": {
    "<sensor_id>": {
      "from": {
        "t": <uint>,
        "y": <double>,
        "x": <double>
      },
      "to": {
        "t": <uint>,
        "y": <double>,
        "x": <double>
      },
      "m": <uint>,
      "f": <uint>,
      "value": <double>,
      "raw_value": <double>,
      "filled": <double>,
      "timeDiff": <uint>,
      "latDiff": <double>,
      "lonDiff": <double>,
      "format": {
        "value": <text>,
        "raw_value": <text>,
        "filled": <text>,
        "theft": <text>,
        "custom_value": <text>
      }
    }
  }
}

Obtener el estado actual de asignación de conductores

Para obtener el estado actual de las asignaciones de conductores, especifique el ID de recurso y el detector resource_drivers. Establezca filter1 en un ID de conductor para obtener el estado de un conductor, o 0 para todos los conductores. El valor de detalization 7 (0x7) devuelve datos básicos del evento, datos específicos del detector y parámetros del mensaje asociado con el evento.

Copied!
svc=events/get_last&params={
  "itemId": <resource_id>,
  "type": "resource_drivers",
  "filter1": 0,
  "filter2": "",
  "detalization": 7
}

La respuesta se agrupa por ID de conductor. Cada ID de conductor tiene un objeto que describe el estado actual de ese conductor.

Copied!
{
  "resource_drivers": {
    "<driver_id>": {
      "from": {
        "t": <uint>,
        "y": <double>,
        "x": <double>
      },
      "to": {
        "t": <uint>,
        "y": <double>,
        "x": <double>
      },
      "m": <uint>,
      "f": <uint>,
      "state": <uint>,
      "aflags": <uint>,
      "unit_id": <long>,
      "real_time_from": <uint>,
      "validate_sensor_id": <uint>,
      "switched_to": <long>
    }
  }
}

Los campos from, to, m y f se describen en la estructura común. El detector también devuelve los siguientes campos:

Campo Descripción
state Estado actual del conductor: 0 para no asignado o 1 para asignado.
aflags Flags de asignación (ver más abajo).
unit_id Para state 1, ID de la unidad a la que está asignado el conductor. Para state 0, ID de la unidad de la cual el conductor fue separado, o 0.
real_time_from Hora real de inicio de la asignación, tiempo UNIX. Si una asignación larga se dividió en varios eventos, esta es la hora de inicio del evento más temprano en la cadena.
validate_sensor_id ID del sensor utilizado para validar la separación. El valor es 0 cuando no se utiliza validación.
switched_to ID de la unidad a la que se cambió el conductor. Se devuelve solo cuando el valor no es 0, lo que significa que el conductor fue asignado a otra unidad sin ser separado de esta.

El campo aflags puede contener los siguientes flags. Los mismos flags se utilizan en los eventos completados devueltos por events/get, por lo que un estado actual generalmente contiene solo los flags que describen cómo comenzó la asignación.

Flag Descripción
0x1 El conductor fue cambiado a otra unidad. El ID de unidad se devuelve en switched_to.
0x2 La asignación cambió el conductor de otra unidad.
0x4 La asignación se inició manualmente.
0x8 La asignación finalizó manualmente.
0x10 El conductor fue separado porque un conductor exclusivo fue asignado a la misma unidad.
0x20 La asignación finalizó porque un conductor exclusivo fue asignado a la misma unidad.

Para state 0, el objeto to no muestra la hora y el lugar de la separación. Muestra el último mensaje procesado. La hora de separación es la hora de fin del evento completado en el historial de eventos, que puede obtener con events/get.

Si nota un error en el texto, por favor resáltelo y presione Ctrl+Intro.