Содержание

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

Управление элементами и событиями системы подразумевает 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» отобразилась информация о событии переименования.