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
svc=events/get_last¶ms={
"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.
{
"<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:
svc=events/get_last¶ms={
"itemId": <unit_id>
}
La respuesta es un objeto con clave por cada tipo de detector disponible:
{
"<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:
svc=events/get_last¶ms={
"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:
{
"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:
svc=events/get_last¶ms={
"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:
{
"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.
svc=events/get_last¶ms={
"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.
{
"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
state0, el objetotono 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.