Одними из наиболее часто используемых запросов в Wialon являются поисковые запросы. В Wialon возможны два вида поиска:
Простейшим поиском, является поиск по идентификатору. Если известен ID элемента, то можно получить любую доступную информацию о нем, используя запрос core/search_item. Например, нужно узнать последнее местоположение объекта с ID равным 34868. Для того, чтобы в ответе содержалось местоположение объекта нужно установить флаг 0x00000400 (1024), также установим флаг 0x00000001 (1025) для того, чтобы узнать имя объекта. (Подробнее о флагах и форматах данных можно почитать в разделе Форматы данных.)
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 }
Из ответа видно что объект с заданным идентификатором называется «Bavarian Tractor» и последнее известное его местоположение это 53.9205504 с.ш. и 27.4921152 в.д.
Для более сложных критериев поиска используется запрос core/search_items. Ниже будут различные примеры.
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», а это значит все доступные пользователи. Единица в параметре «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 }] }
hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec"{"itemsType":"avl_unit","propName":"sys_name","propValueMask":"*Volvo*","sortType":"sys_name"},"force":1,"flags":1439,"from":0,"to":0}&sid=021df621073f5b102b83740b0ea0eaf5
В spec : «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":"+3758477844101","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":"Тип устройства","v":"Галилео"}},"fldsmax":-1,"aflds":{},"afldsmax":-1,"uri":"\/avl_library_image\/19725\/0\/library\/unit\/supertux.png","ugi":1,"uacl":-1}]}
Если иерархия простая - один родитель и от него все дочерние пользователи (учетки) созданы, то можно просто по критерию [url=https://sdk.wialon.com/wiki/ru/sidebar/remoteapi/apiref/core/search_items#svojstva]rel_user_creator_name – имя создателя[/url]
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}
Если иерархия вложенная,т.е Родитель 1 - Дочерние(яя) (Родитель 2) - ….. - Пользователи, тогда надо искать по цепочке создателей - для «propType указать creatortree – цепочка создателей
У каждого элемента есть создатель, у него свой создатель и так до топ-пользователя, так вот если в этой цепочке есть пользователь с id заданным в «propValueMask» и как creatortree ( «propType» ), то элемент («itemsType») добавляется в ответ.
Пример, в «propValueMask» указываем 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}
Многие элементы, к примеру, ресурсы, маршруты, объекты содержат в себе подэлементы, например геозоны (или уведомление, или водители - любое содержимое ресурса) в ресурсе. Или например датчики - это подэлементы объекта.
Для поиска в подэлементах в спецификацию поиска нужно добавить еще один параметр - «propType», и указать в нем значение propitemname, а в параметре «propName» указать название подэлемента. Список всех подэлементов указан в разделе core/search_items.
В качестве примера рассмотрим ситуацию, в которой нужно найти ресурсы, в которых есть геозоны, название которых содержит фразу «bing», и вернуть два первых найденных. Чтобы в ответе отображались геозоны ресурса, в дополнение к базовому флагу установим флаг 0x00001000 (4096).
https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items& params={ "spec":{ "itemsType":"avl_resource", "propName":"zones_library", "propValueMask":"*bing*", "sortType":"zones_library", "propType":"propitemname" }, "force":1, "flags":4097, "from":0, "to":1 }&sid=<your_sid>
Результат выполнения:
{ "searchSpec": { "itemsType": "avl_resource", "propName": "zones_library", "propValueMask": "*bing*", "sortType": "zones_library", "propType": "propitemname" }, "dataFlags": 4097, "totalItemsCount": 1, "indexFrom": 0, "indexTo": 0, "items": [{ "nm": "template_ru", "cls": 3, "id": 163266, "zl": { "1": { "n": "Ветютнев", "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": "Волгоград_конечный_пункт", "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": "Михайловка_база", "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": "Шмитовский", "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": "bingo", "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.759632 } } }, "uacl": 2200454562339 }] }
В результате был найден один ресурс, в котором 5 геозон, название одной из которых содержит фразу «bing».
Найдем ресурс(ы), где есть шаблон отчета с названием «Driver report»: «propName»:«reporttemplates», «propType»:«propitemname», «sortType»:«sys_name» - сортировка в ответе по имени найденных ресурсов.
Для получения в ответе списка всех шаблонов в ресурсе добавим флаг = 8192 - шаблоны отчетов
hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_resource","propName":"reporttemplates","propValueMask":"Driver report","sortType":"sys_name","propType":"propitemname"},"force":1,"flags":8193,"from":0,"to":0}&sid=02f72eb8105d9791de8dbee9370d0135
Результат выполнения
{"searchSpec":{"itemsType":"avl_resource","propName":"reporttemplates","propValueMask":"Driver report","sortType":"sys_name","propType":"propitemname","or_logic":"0"},"dataFlags":8193,"totalItemsCount":1,"indexFrom":0,"indexTo":0,"items":[{"nm":"diand","cls":3,"id":13582296,"mu":1,"rep":{"1":{"id":1,"n":"Report WatchLock","ct":"avl_unit","c":48108},"2":{"id":2,"n":"Driver report","ct":"avl_driver","c":52959},"3":{"id":3,"n":"гео diand","ct":"avl_unit","c":44292}},"repmax":0,"uacl":-1}]}
где «totalItemsCount»:1 - найдем 1 ресурс, в котором есть шаблон отчета «Driver report» , имя ресурса (в items) - «nm»:«diand», «id»:13582296 - внутренний id ресурса (itemId), «rep» - список всех шаблонов отчетов этого ресурса.
Пример 1 - И-логика (параметр «or_logic»:0)
Найдем объекты, имя которых начинается с «Volvo*» и принадлежащих учетной записи «chdi_test»
hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_unit","propName":"sys_name,rel_user_creator_name","propValueMask":"Volvo*,chdi_test","sortType":"sys_name","propType":"sys_name,rel_user_creator_name","or_logic":0},"force":1,"flags":1,"from":0,"to":0}&sid=022d9a2cd00ab180126d0ed9f2c01df3
Ответ
{ "searchSpec":{ "itemsType":"avl_unit", "propName":"sys_name,rel_user_creator_name", "propValueMask":"Volvo*,chdi_test", "sortType":"sys_name", "propType":"sys_name,rel_user_creator_name", "or_logic":"0" }, "dataFlags":1, "totalItemsCount":2, "indexFrom":0, "indexTo":0, "items":[ { "nm":"Volvo", "cls":2, "id":20685653, "mu":0, "uacl":-1 }, { "nm":"Volvo awesome", "cls":2, "id":21728414, "mu":0, "uacl":-1 } ] }
Пример 2 - ИЛИ-логика (параметр «or_logic»:1)
Найдем объекты, которые подходят по одной (или по всем) из следующих маск : маска имени «Volvo*», маска IMEI «256*», маска номера телефона «+37529*» (знак «+' заменяется на %2B )
hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_unit","propName":"sys_name,sys_unique_id,sys_phone_number","propValueMask":"Volvo*,256*,%2B37529*","sortType":"sys_name","propType":"sys_name,sys_unique_id,sys_phone_number","or_logic":1},"force":1,"flags":1,"from":0,"to":0}&sid=022d9a2cd00ab180126d0ed9f2c01df3
Ответ
{ "searchSpec":{ "itemsType":"avl_unit", "propName":"sys_name,sys_unique_id,sys_phone_number", "propValueMask":"Volvo*,256*,+37529*", "sortType":"sys_name", "propType":"sys_name,sys_unique_id,sys_phone_number", "or_logic":"1" }, "dataFlags":257, "totalItemsCount":4, "indexFrom":0, "indexTo":0, "items":[ { "nm":"! china", "cls":2, "id":21030712, "mu":1, "uid":"8885522_0", "uid2":"", "hw":12152, "ph":"+37529456456456", "ph2":"", "psw":"", "act":1, "dactt":0, "uacl":330577281023 }, { "nm":"KCK 100", "cls":2, "id":13511826, "mu":0, "uid":"741852", "uid2":"", "hw":13028700, "ph":"+375298642619", "ph2":"", "psw":"", "act":1, "dactt":0, "uacl":-1 }, { "nm":"Volvo", "cls":2, "id":20685653, "mu":0, "uid":"awesome12", "uid2":"", "hw":96266, "ph":"+3754814444", "ph2":"", "psw":"", "act":1, "dactt":0, "uacl":-1 }, { "nm":"Volvo awesome", "cls":2, "id":21728414, "mu":0, "uid":"awesomebr", "uid2":"", "hw":96266, "ph":"+3758477844101", "ph2":"", "psw":"", "act":1, "dactt":0, "uacl":-1 }, { "nm":"FH 460", "cls":2, "id":6582726, "mu":0, "uid":"25607042001916", "uid2":"", "hw":12152, "ph":"", "ph2":"", "psw":"", "act":1, "dactt":0, "uacl":880333045751 } ] }