Одними из наиболее часто используемых запросов в Wialon являются поисковые запросы. В Wialon возможны два вида поиска:
Внимание! Для запуска данного примера на Wialon Kit во всех запросах следует заменить https://hst-api.wialon.com на https://kit-api.wialon.com, а для входа в систему использовать логин и пароль своей учетной записи или логин и пароль демо-пользователя: kitdemo kitdemo.
Простейшим поиском, является поиск по идентификатору. Если известен 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 }] }
Пример, рассмотренный выше, подходит для поиска всех элементов Wialon: ресурсов, ретрансляторов, объектов, групп объектов, пользователей и маршрутов. Но некоторые элементы, такие как ресурсы и маршруты содержат в себе подэлементы, например геозоны в ресурсе. Для поиска в подэлементах в спецификацию поиска нужно добавить еще один параметр - «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».