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 del nivel de batería

Para obtener el estado actual del nivel de batería de un vehículo eléctrico (VE), especifique el ID de unidad y el detector ev. Use detalization 39 (0x27) para incluir datos básicos del evento, datos específicos del detector, parámetros del mensaje y valores formateados:

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

La respuesta está agrupada por ID de sensor. Para el estado actual, el detector ev devuelve el nivel de batería, y la respuesta puede contener los siguientes campos:

Copied!
{
  "ev": {
    "<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>,
      "format": {
        "value": <text>,
        "raw_value": <text>,
        "custom_value": <text>
      }
    }
  }
}

Los campos from, to, m y f se describen en la estructura común. El campo value contiene el nivel de batería calculado, y raw_value contiene el valor sin procesar del sensor.

Los campos value y raw_value dentro del objeto format devuelven el nivel de batería como un porcentaje de battery_capacity cuando la clave show_as_percentage está establecida en 1 en la configuración del sensor y battery_capacity es mayor que 0. De lo contrario, devuelven el nivel en kWh. Los campos value y raw_value fuera del objeto format siempre devuelven el nivel en kWh.

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>,
      "propitem_cr_time": <uint>,
      "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.
propitem_cr_time Hora de creación del conductor, tiempo UNIX. Úsela para comprobar si el conductor es el actual o si es un conductor que se eliminó y se volvió a crear con el mismo ID.
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 asignación automática y la separación que le sigue. 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 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 La asignación finalizó cuando el conductor se cambió a otra unidad. El ID de esa unidad se devuelve en switched_to.
0x2 La asignación empezó cuando el conductor se cambió desde otra unidad. Esto finalizó la asignación anterior en esa unidad.
0x4 La asignación se inició manualmente.
0x8 La asignación finalizó manualmente.
0x10 La asignación empieza con state 0 porque otro conductor exclusivo fue asignado a la misma unidad.
0x20 La asignación finalizó porque otro 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.

Para cambiar manualmente el estado de asignación, utilice resource/driver_actions_register. Para ver o eliminar acciones manuales registradas, utilice resource/driver_actions_list o resource/driver_actions_cleanup.

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