Поиск элементов

Одними из наиболее часто используемых запросов в Wialon являются поисковые запросы. В Wialon возможны два вида поиска:

Больше информации по этим запросам, а также примеры использования, можно найти в этом видео

Поиск элемента по ID

Простейшим поиском, является поиск по идентификатору. Если известен ID элемента, то можно получить любую доступную информацию о нем, используя запрос core/search_item. Например, нужно узнать последнее местоположение объекта с ID равным 34868. Для того, чтобы в ответе содержалось местоположение объекта нужно установить флаг 0x00000400 (1024), также установим флаг 0x00000001 (1025) для того, чтобы узнать имя объекта. (Подробнее о флагах и форматах данных можно почитать в разделе Форматы данных.)

https://hst-api.wialon.host/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.host/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
    }]
}
  • Найти объекты с маской имени *Volvo*
hst-api.wialon.host/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

В 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.host/wiki/ru/sidebar/remoteapi/apiref/core/search_items#svojstva]rel_user_creator_name – имя создателя[/url]

https://hst-api.wialon.host/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.host/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.

Поиск в любом случае идет по основным элементам «itemsType» (объект, ресурс, пользователь и т.д), и в ответе будут именно возвращены сами элементы, а не их подэлементы.

  • Пример 1

В качестве примера рассмотрим ситуацию, в которой нужно найти ресурсы, в которых есть геозоны, название которых содержит фразу «bing», и вернуть два первых найденных. Чтобы в ответе отображались геозоны ресурса, в дополнение к базовому флагу установим флаг 0x00001000 (4096).

https://hst-api.wialon.host/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».

  • Пример 2

Найдем ресурс(ы), где есть шаблон отчета с названием «Driver report»: «propName»:«reporttemplates», «propType»:«propitemname», «sortType»:«sys_name» - сортировка в ответе по имени найденных ресурсов.

Для получения в ответе списка всех шаблонов в ресурсе добавим флаг = 8192 - шаблоны отчетов

hst-api.wialon.host/wialon/ajax.html?svc=core/search_items&params={"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&params={"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&params={"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
}
]
}
Follow us on Facebook Gurtam Wialon Twitter Gurtam Wialon info@gurtam.com   |   Copyright © 2002-2024 Gurtam