Содержание

Управление элементами системы и событиями

Управление элементами и событиями системы подразумевает 2 этапа. На первом отбираются типы событий, которые нужно получать, а на втором происходит получение событий и их дальнейшая обработка.

:!: Внимание! Для запуска данного примера на Wialon Kit во всех запросах следует заменить https://hst-api.wialon.com на https://kit-api.wialon.com, а для входа в систему использовать логин и пароль своей учетной записи или логин и пароль демо-пользователя: kitdemo kitdemo.

Добавление элементов в сессию

Отслеживание событий элементов является одной из важнейших функций Wialon. Чтобы получать события от элементов, данные элементы должны быть добавлены в сессию.

Существует 3 способа добавления элементов в сессию: по типу, списком ID и по ID.

Например, нужно добавить в сессию три объекта: Bavarian Tractor, Alabama, Touareg. Поскольку известны ID этих объектов, то добавляем эти объекты, используя значение col для параметра «type»:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/update_data_flags&
	params={
		"spec":[
			{
				"type":"col",
				"data":[34868,22800,553632],
				"flags":1,
				"mode":0	/* замена флагов */
			}
		]
	}&sid=<your_sid>

Т.к. был установлен только базовый флаг, то от данных трех объектов будут приходить только события об изменении названия.

:!: Внимание! Значение параметра «mode» установленное в 0 говорит о том, что какие бы флаги не стояли ранее у элемента, они будут заменены полностью на те, что указаны в запросе.

Результат выполнения:

[{
    "i": 34868,
    "d": null,
    "f": 1
}, {
    "i": 22800,
    "d": null,
    "f": 1
}, {
    "i": 553632,
    "d": null,
    "f": 1
}]

Далее, предположим, что отслеживать события объекта Touareg нам больше не нужно, следовательно, его можно удалить из сессии. Т.к. нам нужно осуществить действие только над одним объектом, в запросе указывается значение id для параметра «type»:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/update_data_flags&
	params={
		"spec":[{
			"type":"id",
			"data":553632,
			"flags":1,
			"mode":2	/* снятие флагов */
		}]
	}&sid=<your_sid>

:!: Внимание! Для полного удаления объекта из сессии в параметре «flags» должна стоять единица, то есть мы перестаем получать какие-либо события от объекта, только если выполняем запрос на удаление базового флага. Если же при добавлении объекта в сессию был указан флаг, например 3, а при удалении 2, то оставшийся флаг у объекта будет равен 1. Следовательно мы отписались от получения событий, за которые отвечает флаг 2, но остались подписаны на события флага 1.

Результат выполнения:

[{
    "i": 553632,
    "d": null,
    "f": 0
}]

Результатом того, что объект удален из сессии является значение поля «f» равное 0.

Предположим, что объект добавлен в сессию, например - Bavarian Tractor, но нам теперь нужно обрабатывать не только события изменения имени, но и события изменения счетчиков. Не обязательно удалять объект из сессии и добавлять его с новым флагом, можно просто к текущим флагам объекта добавить новые:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/update_data_flags&
	params={
		"spec":[{
			"type":"id",
			"data":34868,
			"flags":8192,
			"mode":1	/* добавление флагов */
		}]
	}&sid=<your_sid>

Результат выполнения:

[{
    "i": 34868,
    "d": {
        "cfl": 1298,
        "cnm": 45414,
        "cneh": 0,
        "cnkb": 43602
    },
    "f": 8193
}]

Обратите внимание: в запросе добавляется флаг 8192, а в результирующем JSON указано значение «f» равное 8193. Это значит, что к уже имеющемуся значению «f», т.е. единице, добавили новые флаги и ответ вернулся уже с суммой установленных флагов.

Если же нужно отслеживать события всех элементов конкретного типа, то в параметре «type» нужно указать значение type:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/update_data_flags&
	params={
		"spec":[{
			"type":"type",
			"data":"user",
			"flags":1,
			"mode":0
		}]
	}&sid=<your_sid>

Получение событий

Проверим как система посылает и принимает события на примере переименования объекта.

1. Создайте на сервере Wialon Hosting новый объект, например:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/create_unit&
	params={
		"creatorId":50935,
		"name":"unit",
		"hwTypeId":96266,
		"dataFlags":1
	}&sid=<your_sid>

Результат выполнения:

{
    "item": {
        "nm": "unit",
        "cls": 2,
        "id": 656513,
        "uacl": -1
    },
    "flags": 1
}

2. Выполните вход в систему при помощи запроса описанного в разделе Логин/логаут.

3. Выполните запрос avl_evts. Никаких событий не будет отображено.

https://hst-api.wialon.com/avl_evts?sid=<your_sid>

Результат выполнения:

{
    "tm": 1358780392,
    "events": []
}

4. Добавьте объект в сессию, как было описано в пункте выше. Например:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/update_data_flags&
	params={
		"spec":[{
			"type":"id",
			"data":656513,
			"flags":1,
			"mode":0}]
	}&sid=<your_sid>

Результат выполнения:

[{
    "i": 656513,
    "d": {
        "nm": "unit",
        "cls": 2,
        "id": 656513,
        "uacl": -1
    },
    "f": 1
}]

5. Переименуйте объект, например:

https://hst-api.wialon.com/wialon/ajax.html?svc=item/update_name&
	params={
		"itemId":656513,
		"name":"unit1"
	}&sid=<your_sid>

Результат выполнения:

{
    "nm": "unit1"
}

6. Выполните запрос avl_evts еще раз.

https://hst-api.wialon.com/avl_evts?sid=<your_sid>

Результат выполнения:

{
    "tm": 1358780632,
    "events": [{
        "i": 656513,
        "t": "u",
        "d": {
            "nm": "unit1"
        }
    }]
}

В поле «events» отобразилась информация о событии переименования.

Пример управления получением событий изменения прав доступа на элемент / удаления, создания объекта.

1. Подписка:

<your_api_url>/wialon/ajax.html?svc=core/update_data_flags&params={"spec":[{"type":"access","data":1,"flags":0,"mode":0}]}&sid=<your_sid>

Ответ:

[]

2. Изменения прав доступа пользователя с id:«15444406» на элемент с id:«17090192» («Просмотр элемента и его основных свойств»):

<your_api_url>/wialon/ajax.html?svc=user/update_item_access&params={"userId":15444406,"itemId":17090192,"accessMask":1}&sid=<your_sid>

Ответ:

{}

3. Получение avl_evts:

<your_api_url>/avl_evts?sid=<your_sid>

Ответ:

{"tm":1526397552,		/* время */
 "events":[{
    "i":-5,			/* событие изменения прав доступа на элемент */
    "d":{
        "a":[{
        "t":"avl_unit",		/* тип элемента - объект */
        "ids":[17090192]	/* id элемента */
        }]
    }
}]}

4. Создание элемента.

<your_api_url>/wialon/ajax.html?svc=core/create_unit&params={"creatorId":15444406,"name":"New unit","hwTypeId":"13028700","dataFlags":1}&sid=<your_sid>

Ответ:

{"item":{"nm":"New unit","cls":2,"id":17298228,"mu":0,"uacl":-1},"flags":1}

5. Получение avl_evts.

{"tm":1526402957,	
 "events":[{
     "i":15444406,					/* id пользователя */	
     "t":"u",						/* тип события - создание объекта */		
     "d":{"prpu":{
         "monu":"[\"17298228\"]",			/* id элемента */
         "used_hw":"{\"13028700\":1,\"13285316\":0}"}
     }
}]}

6. Удаление элемента.

<your_api_url>/wialon/ajax.html?svc=item/delete_item&params={"itemId":17298228}&sid=<your_sid>

Ответ:

{}

7. Получение avl_evts.

{"tm":1526403113,	/* время */
 "events":[{
     "i":17298228,	/* элемент с id 17298228 */
     "t":"d"}]		/* тип события - удаление */
}

8. Отписка:

<your_api_url>/wialon/ajax.html?svc=core/update_data_flags&params={"spec":[{"type":"access","data":0,"flags":0,"mode":0}]}&sid=<your_sid>

Ответ:

[]