Поиск элементов
Поиск — один из наиболее распространенных запросов в Wialon. В Wialon доступны два типа поиска:
- поиск элементов по ID;
- поиск элементов по свойству.
Описание обоих типов поиска приведено ниже.
Поиск элементов по ID
Если вы знаете ID элемента, вы можете получить любую доступную информацию о нем с помощью метода core/search_item.
Пример
Найдем последнее местоположение объекта с ID 34868. Чтобы получить информацию о местоположении объекта, в запрос необходимо включить флаг 0x00000400 (1024). Также включим флаг 0x00000001 (1), чтобы получить имя объекта. Информация о флагах и форматах данных приведена в разделе Формат данных.
https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_item&
params={
"id": 34868,
"flags": 1025
}
&sid=<your_sid>
Пример ответа:
{
"item": {
"nm": "Bavarian Tractor",
"cls": 2,
"id": 34868,
"pos": {
"t": 1358761631,
"y": 53.9205504,
"x": 27.4921152,
"z": 238,
"s": 0,
"c": 102,
"sc": 10
},
"lmsg": {
"t": 1358761631,
"f": 3,
"tp": "ud",
"pos": {
"y": 53.9205504,
"x": 27.4921152,
"z": 238,
"s": 0,
"c": 102,
"sc": 10
},
"i": 0,
"p": {
"param22": 3,
"adc1": 12.352,
"pwr_ext": 12.356,
"param199": 0,
"param241": 25701,
"battery_charge": 0
}
},
"uacl": 638138188323
},
"flags": 1025
}
Из этого ответа можно узнать, что объект с указанным ID называется Bavarian Tractor, а его последнее известное местоположение — 53,9205504° с. ш. и 27,4921152° в. д.
Поиск элементов по свойству
Чтобы найти несколько элементов с определенным свойством, используйте метод core/search_items.
Пример 1
Найдем всех пользователей, выполнив следующий запрос:
https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items&
params={
"spec": {
"itemsType": "user",
"propName": "sys_name",
"propValueMask": "*",
"sortType": "sys_name"
},
"force": 1,
"flags": 1,
"from": 0,
"to": 0
}&sid=<your_sid>
Звездочка в параметре propValueMask означает, что массив результатов будет содержать пользователей с любыми значениями в поле sys_name (то есть пользователей с любыми именами). Это означает, что в результат будут включены все доступные пользователи. Значение 1 параметра flags означает, что в результат должна быть включена основная информация об элементе. Информация о флагах пользователей приведена на странице Пользователи. Нулевые значения параметров from и to указывают, что должны быть возвращены все найденные пользователи.
Пример ответа:
{
"searchSpec": {
"itemsType": "user",
"propName": "sys_name",
"propValueMask": "*",
"sortType": "sys_name"
},
"dataFlags": 1,
"totalItemsCount": 1,
"indexFrom": 0,
"indexTo": 0,
"items": [
{
"nm": "test_6512789",
"cls": 1,
"id": 648548,
"uacl": -1
}
]
}
Приведенный выше пример можно использовать для поиска только таких элементов, как ресурсы, ретрансляторы, объекты, группы объектов, пользователи и маршруты. Однако некоторые из этих элементов, например ресурсы или маршруты, обычно содержат подэлементы. Например, геозоны являются подэлементами ресурса. Примеры поиска подэлементов приведены ниже.
Пример 2
Чтобы искать подэлементы, добавьте в спецификацию поиска параметр propType, установите для него значение propitemname и укажите имя подэлемента в параметре propName. Список всех подэлементов приведен на странице core/search_items.
Найдем ресурсы, содержащие геозоны, в названиях которых есть слово office. Нужно, чтобы ответ содержал только первые два найденных ресурса. Чтобы в ответ были включены геозоны, помимо основного флага необходимо установить флаг 0x00001000 (4096).
https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items&
params={
"spec": {
"itemsType": "avl_resource",
"propName": "zones_library",
"propValueMask": "*office*",
"sortType": "zones_library",
"propType": "propitemname"
},
"force": 1,
"flags": 4097,
"from": 0,
"to": 1
}&sid=<your_sid>
Пример ответа:
{
"searchSpec": {
"itemsType": "avl_resource",
"propName": "zones_library",
"propValueMask": "*office*",
"sortType": "zones_library",
"propType": "propitemname"
},
"dataFlags": 4097,
"totalItemsCount": 1,
"indexFrom": 0,
"indexTo": 0,
"items": [
{
"nm": "template_en",
"cls": 3,
"id": 163266,
"zl": {
"1": {
"n": "Head office",
"d": "",
"id": 1,
"f": 1,
"t": 2,
"e": 60774,
"b": {
"min_x": 43.5271002776,
"min_y": 49.7636455785,
"max_x": 43.5622908598,
"max_y": 49.7794993012,
"cen_x": 43.5446955687,
"cen_y": 49.7715724398
}
},
"2": {
"n": "Route1_final_destination",
"d": "",
"id": 2,
"f": 1,
"t": 2,
"e": 62438,
"b": {
"min_x": 44.3872954375,
"min_y": 48.6329175554,
"max_x": 44.6300246245,
"max_y": 48.856592389,
"cen_x": 44.508660031,
"cen_y": 48.7447549722
}
},
"3": {
"n": "Route1_starting_point",
"d": "",
"id": 3,
"f": 1,
"t": 2,
"e": 4566,
"b": {
"min_x": 43.107388,
"min_y": 50.009182,
"max_x": 43.294156,
"max_y": 50.119376,
"cen_x": 43.200772,
"cen_y": 50.064279
}
},
"4": {
"n": "Shopping mall",
"d": "",
"id": 4,
"f": 1,
"t": 1,
"e": 39844,
"b": {
"min_x": 37.5347102757,
"min_y": 55.7544919087,
"max_x": 37.5596537243,
"max_y": 55.7598140913,
"cen_x": 37.546216,
"cen_y": 55.757443
}
},
"5": {
"n": "Warehouse",
"d": "",
"id": 5,
"f": 1,
"t": 3,
"e": 44015,
"b": {
"min_x": 37.5537148786,
"min_y": 55.7585093867,
"max_x": 37.5576971214,
"max_y": 55.7607546133,
"cen_x": 37.555706,
"cen_y": 55.757443
}
}
},
"uacl": 2200454562339
}
]
}
В результате был найден один ресурс с пятью геозонами. В названии одной из них есть слово office.
Пример 3
Найдем объекты с маской имени *Volvo*:
https://hst-api.wialon.com/wialon/ajax.html?
svc=core/search_items&
params={
"spec": {
"itemsType": "avl_unit",
"propName": "sys_name",
"propValueMask": "*Volvo*",
"sortType": "sys_name"
},
"force": 1,
"flags": 1439,
"from": 0,
"to": 0
}&
sid=021df621073f5b102b83740b0ea0eaf5
Спецификация:
| Параметр | Значение | Описание |
|---|---|---|
itemsType |
avl_unit |
Объект |
propName |
sys_name |
Поиск по имени |
propValueMask |
*Volvo* |
Маска имени |
Пример ответа:
{
"searchSpec": {
"itemsType": "avl_unit",
"propName": "sys_name",
"propValueMask": "*Volvo awe*",
"sortType": "sys_name",
"propType": "",
"or_logic": "0"
},
"dataFlags": 1439,
"totalItemsCount": 1,
"indexFrom": 0,
"indexTo": 0,
"items": [
{
"nm": "Volvo awesome",
"cls": 2,
"id": 21728414,
"prp": {
"label_color": "39219",
"solid_colors": "39219",
"track_solid": "39219",
"use_sensor_color": "0"
},
"crt": 930848,
"bact": 930849,
"mu": 0,
"ct": 1599638776,
"ftp": {
"ch": 0,
"tp": 0,
"fl": 1
},
"uid": "Volvo XC90",
"uid2": "",
"hw": 96266,
"ph": "+37069678441",
"ph2": "",
"psw": "",
"pos": {
"t": 1614336759,
"f": 1073741831,
"lc": 0,
"y": 43.2444668333,
"x": -118.146447667,
"c": 0,
"z": 300,
"s": 12,
"sc": 8
},
"lmsg": {
"t": 1614336759,
"f": 1073741831,
"tp": "ud",
"pos": {
"y": 43.2444668333,
"x": -118.146447667,
"c": 0,
"z": 300,
"s": 12,
"sc": 8
},
"i": 0,
"o": 0,
"lc": 0,
"rt": 1614336760,
"p": {
"hdop": 0.5,
"pass": "E2000020340F02371900D866",
"mil": 1001,
"ves": "900025517477741444444",
"io_1_76": 459,
"tco_activity_tm": 400,
"fuel": 220.79,
"tco_driver1_id": "rettt"
}
},
"act": 1,
"dactt": 0,
"flds": {
"1": {
"id": 1,
"n": "Type",
"v": "Navtelecom"
},
"2": {
"id": 2,
"n": "Device type",
"v": "Teltonika"
}
},
"fldsmax": -1,
"aflds": {},
"afldsmax": -1,
"uri": "/avl_library_image/19725/0/library/unit/supertux.png",
"ugi": 1,
"uacl": -1
}
]
}
Пример 4
Получим список подчиненных пользователей.
Если иерархия простая, то есть есть только одна родительская учетная запись, а остальные подчинены ей, список подчиненных пользователей можно получить, указав имя создателя. Для этого передайте rel_user_creator_name в параметре propName и укажите имя создателя в параметре propValueMask.
https://hst-api.wialon.com/wialon/ajax.html?
svc=core/search_items&
sid=0281169f3adf2593e00f2fc1&
params={
"spec": {
"itemsType": "user",
"propName": "rel_user_creator_name",
"propValueMask": "chdi_test",
"sortType": "sys_name"
},
"force": 1,
"flags": 3,
"from": 0,
"to": 0
}
Если иерархия сложная, то есть есть несколько родительских учетных записей, список подчиненных пользователей можно получить, указав цепочку создателей. Для этого передайте creatortree в параметре propType и укажите в параметре propValueMask ID верхнего пользователя (или ID любого родительского пользователя, если нужно увидеть только его подчиненных пользователей).
https://hst-api.wialon.com/wialon/ajax.html?
svc=core/search_items&
sid=0281169f3adf2593e00f2fc1&
params={
"spec": {
"itemsType": "user",
"propName": "sys_user_creator",
"propValueMask": 930848,
"sortType": "sys_name",
"propType": "creatortree"
},
"force": 1,
"flags": 3,
"from": 0,
"to": 0
}