update_items
Para agregar, eliminar o limpiar elementos monitoreados en la sesión, utilice el método events/update_items. Los elementos pueden ser unidades o recursos. Para los detectores disponibles, consulte la sección Detectores.
Las actualizaciones de eventos se entregan ya sea en los datos units_update de avl_evts o a través de events/check_updates, dependiendo de los flags de evento.
Si monitorea solo unidades, también puede usar events/update_units, pero para nuevas integraciones utilice events/update_items.
Endpoint
El formato de la solicitud depende del modo de operación.
Para agregar elementos a la sesión y establecer los detectores a monitorear para cada uno de ellos:
svc=events/update_items¶ms={
"mode": "add",
"items": [
{
"id": <long>,
"detect": {
"<detector_name>": <long>
}
},
...
],
"evt_flags": <uint> /* opcional */
}
Para dejar de monitorear eventos de elementos específicos:
svc=events/update_items¶ms={
"mode": "remove",
"items": [
<long>
]
}
Para dejar de monitorear eventos de todos los elementos en la sesión:
svc=events/update_items¶ms={
"mode": "clear"
}
Para obtener los elementos en la sesión y su configuración de detectores:
svc=events/update_items¶ms={
"mode": "list"
}
Parámetros
La solicitud puede contener los siguientes parámetros:
| Parámetro | Descripción |
|---|---|
mode |
Obligatorio. Modo de operación: add, remove, clear o list. |
items |
Obligatorio para add y remove. Elementos a agregar o eliminar. |
id |
Obligatorio para add. ID del elemento: un ID de unidad o un ID de recurso. |
detect |
Obligatorio para add. Detectores a monitorear y sus filtros. Consulte la sección Detectores. |
evt_flags |
Opcional. Flags de evento. Consulte la sección Flags de evento. |
En el modo add, solo se agregan los elementos a los que el usuario actual tiene acceso de visualización. Si un elemento listado ya está siendo monitoreado, su configuración de detectores se reemplaza. Los valores de filtro de detectores individuales no válidos se ignoran.
Detectores
El parámetro detect define qué detectores se monitorean en la sesión. Para cada detector, especifique un valor de filtro que seleccione los eventos a monitorear. Los detectores disponibles dependen del tipo de elemento.
| Tipo de elemento | Detectores |
|---|---|
| Unidad | Todos los detectores de eventos de unidades. Para la lista completa y los valores de filtro, consulte la sección Tipos de detectores de eventos en la página events/update_units. Utilice el valor de filtro para seleccionar los eventos:
|
| Recurso | El detector resource_drivers, que registra eventos sobre asignaciones de conductores. Especifique un ID de conductor para monitorear asignaciones de este conductor, o 0 para monitorear asignaciones de todos los conductores del recurso. |
En Wialon Local, el detector
resource_driversestá disponible a partir de la versión 2604. El detectoreco_drivingno está disponible en Wialon Local.
Para monitorear varios detectores con el mismo filtro, enumérelos separados por comas:
"detect":{"sensors,lls,ignition":0}
Para monitorear todos los detectores disponibles para el elemento, use el valor *. Para una unidad, cubre todos los detectores de unidades; para un recurso, todos los detectores disponibles para recursos, actualmente resource_drivers.
"detect":{"*":0}
Flags de evento
El valor de evt_flags se almacena en la sesión, por lo que es suficiente establecerlo una vez. El valor por defecto es 0, lo que significa que las actualizaciones se obtienen con events/check_updates.
Para recibir actualizaciones de eventos en los datos units_update de avl_evts, establezca el flag de entrega 0x200 (512). Puede combinarlo con los flags de detalle en los bits 0x1 a 0x100. Si no se especifican flags de detalle, se utiliza el valor 0x7, que devuelve datos básicos del evento, datos específicos del detector y parámetros del mensaje asociado con el evento.
Cuando se establece el flag
0x200, events/check_updates devuelve un objeto vacío. Para obtener actualizaciones conevents/check_updates, no establezca este flag.
Respuesta
Si la solicitud se completa correctamente, el formato de respuesta depende del modo de operación. De lo contrario, se devuelve un código de error.
Para los modos add, remove y clear, se devuelve el número total de elementos monitoreados:
{
"items": <uint> /* número total de elementos monitoreados en la sesión; 0 después del modo clear */
}
Para el modo list, se devuelven los elementos monitoreados y su configuración de detectores. El campo evt_flags se devuelve solo si se establecen flags de evento en la sesión.
{
"items": [
{
"id": <long>, /* ID del elemento */
"detect": {
"<detector_name>": <long> /* filtro del detector */
}
},
...
],
"evt_flags": <uint>
}
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. |
| 7 | El servicio de eventos no está disponible. |
Ejemplos
Los siguientes ejemplos muestran las operaciones más comunes con el método.
Suscribirse a eventos de asignación de conductores
Para monitorear asignaciones de todos los conductores del recurso con ID 1003, utilice la siguiente solicitud:
svc=events/update_items¶ms={
"mode": "add",
"items": [
{
"id": 1003,
"detect": {
"resource_drivers": 0
}
}
]
}
Respuesta:
{
"items": 1
}
Para obtener las actualizaciones, llame a events/check_updates.
Recibir actualizaciones en avl_evts
En la siguiente solicitud, el valor de evt_flags 0x222 (546) combina el flag de entrega 0x200 con los flags de detalle 0x2 (datos específicos del detector) y 0x20 (valores formateados del detector).
svc=events/update_items¶ms={
"mode": "add",
"items": [
{
"id": 1003,
"detect": {
"resource_drivers": 0
}
}
],
"evt_flags": 546
}
Las actualizaciones se devuelven en los datos units_update de avl_evts, agrupadas por ID de elemento, detector e ID de conductor. Para la estructura de los objetos de evento, consulte events/check_updates.
Obtener la lista de elementos monitoreados
Para verificar qué elementos se monitorean en la sesión, utilice la siguiente solicitud:
svc=events/update_items¶ms={
"mode": "list"
}
La respuesta muestra que se están monitoreando dos unidades y todos los conductores del recurso con ID 1003:
{
"items": [
{
"id": 1026,
"detect": {
"sensors,lls,ignition,ev,health_check": 0
}
},
{
"id": 1082,
"detect": {
"sensors,lls,ignition,ev,health_check": 0
}
},
{
"id": 1003,
"detect": {
"resource_drivers": 0
}
}
],
"evt_flags": 546
}