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