Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

ru:local:remoteapi1504:codesamples:update_datafalags [20/05/2014 11:49]
ru:local:remoteapi1504:codesamples:update_datafalags [20/05/2014 11:49] (текущий)
Строка 1: Строка 1:
 +{{indexmenu_n>​3}}
 +====== Управление элементами системы и событиями ======
 +Управление элементами и событиями системы подразумевает 2 этапа. На первом отбираются типы событий,​ которые нужно получать,​ а на втором происходит получение событий и их дальнейшая обработка.
  
 +//:!: Внимание!//​ Для запуска данного примера на Wialon Kit во всех запросах следует заменить **<​nowiki>​https://​hst-api.wialon.com</​nowiki>​** на **<​nowiki>​https://​kit-api.wialon.com</​nowiki>​**,​ а для входа в систему использовать логин и пароль своей учетной записи или логин и пароль демо-пользователя:​ //**kitdemo kitdemo**//​.
 +
 +===== Добавление элементов в сессию =====
 +
 +Отслеживание событий элементов является одной из важнейших функций Wialon. Чтобы [[../​apiref:​requests:​avl_evts|получать события от элементов]],​ данные элементы должны быть добавлены в сессию.
 +
 +Существует 3 способа добавления элементов в сессию:​ по типу, списком ID и по ID.
 +
 +Например,​ нужно добавить в сессию три объекта:​ Bavarian Tractor, Alabama, Touareg. Поскольку известны ID этих объектов,​ то добавляем эти объекты,​ используя значение //col// для параметра **"​type"​**:​
 +<​code>​
 +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>​
 +</​code>​
 +Т.к. был установлен только базовый флаг, то от данных трех объектов будут приходить только события об изменении названия. ​
 +
 +//:!: Внимание!//​ Значение параметра **"​mode"​** установленное в 0 говорит о том, что какие бы флаги не стояли ранее у элемента,​ они будут заменены полностью на те, что указаны в запросе.
 +
 +Результат выполнения:​
 +<code javascript>​
 +[{
 +    "​i":​ 34868,
 +    "​d":​ null,
 +    "​f":​ 1
 +}, {
 +    "​i":​ 22800,
 +    "​d":​ null,
 +    "​f":​ 1
 +}, {
 +    "​i":​ 553632,
 +    "​d":​ null,
 +    "​f":​ 1
 +}]
 +</​code>​
 +
 +Далее, предположим,​ что отслеживать события объекта Touareg нам больше не нужно, следовательно,​ его можно удалить из сессии. Т.к. нам нужно осуществить действие только над одним объектом,​ в запросе указывается значение //id// для параметра **"​type"​**:​
 +<​code>​
 +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>​
 +</​code>​
 +
 +//:!: Внимание!//​ Для полного удаления объекта из сессии в параметре **"​flags"​** должна стоять единица,​ то есть мы перестаем получать какие-либо события от объекта,​ только если выполняем запрос на удаление базового флага. Если же при добавлении объекта в сессию был указан флаг, например 3, а при удалении 2, то оставшийся флаг у объекта будет равен 1. Следовательно мы отписались от получения событий,​ за которые отвечает флаг 2, но остались подписаны на события флага 1.
 +
 +Результат выполнения:​
 +<code javascript>​
 +[{
 +    "​i":​ 553632,
 +    "​d":​ null,
 +    "​f":​ 0
 +}]
 +</​code>​
 +Результатом того, что объект удален из сессии является значение поля **"​f"​** равное 0.
 +
 +
 +Предположим,​ что объект добавлен в сессию,​ например - Bavarian Tractor, но нам теперь нужно обрабатывать не только события изменения имени, но и события изменения счетчиков. Не обязательно удалять объект из сессии и добавлять его с новым флагом,​ можно просто к текущим флагам объекта добавить новые:
 +<​code>​
 +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>​
 +</​code>​
 +
 +Результат выполнения:​
 +<code javascript>​
 +[{
 +    "​i":​ 34868,
 +    "​d":​ {
 +        "​cfl":​ 1298,
 +        "​cnm":​ 45414,
 +        "​cneh":​ 0,
 +        "​cnkb":​ 43602
 +    },
 +    "​f":​ 8193
 +}]
 +</​code>​
 +Обратите внимание:​ в запросе добавляется флаг 8192, а в результирующем JSON указано значение **"​f"​** равное 8193. Это значит,​ что к уже имеющемуся значению **"​f"​**,​ т.е. единице,​ добавили новые флаги и ответ вернулся уже с суммой установленных флагов.
 +
 +Если же нужно отслеживать события всех элементов конкретного типа, то в параметре "​type"​ нужно указать значение //type//:
 +<​code>​
 +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>​
 +</​code>​
 +
 +===== Получение событий =====
 +
 +Проверим как система посылает и принимает события на примере переименования объекта. ​
 +
 +**1.** Создайте на сервере [[http://​wialonb3.gurtam.com/​|Wialon Hosting]] новый объект,​ например:​
 +<​code>​
 +https://​hst-api.wialon.com/​wialon/​ajax.html?​svc=core/​create_unit&​
 + params={
 + "​creatorId":​50935,​
 + "​name":"​unit",​
 + "​hwTypeId":​96266,​
 + "​dataFlags":​1
 + }&​sid=<​your_sid>​
 +</​code>​
 +Результат выполнения:​
 +<code javascript>​
 +{
 +    "​item":​ {
 +        "​nm":​ "​unit",​
 +        "​cls":​ 2,
 +        "​id":​ 656513,
 +        "​uacl":​ -1
 +    },
 +    "​flags":​ 1
 +}
 +</​code>​
 +
 +**2.** Выполните вход в систему при помощи запроса описанного в разделе [[login]].
 +
 +**3.** Выполните запрос [[../​apiref/​requests/​avl_evts|avl_evts]]. Никаких событий не будет отображено.
 +<​code>​
 +https://​hst-api.wialon.com/​avl_evts?​sid=<​your_sid>​
 +</​code>​
 +Результат выполнения:​
 +<code javascript>​
 +{
 +    "​tm":​ 1358780392,
 +    "​events":​ []
 +}
 +</​code>​
 +
 +**4.** Добавьте объект в сессию,​ как было описано в пункте выше.
 +Например:​
 +<​code>​
 +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>​
 +</​code>​
 +Результат выполнения:​
 +<code javascript>​
 +[{
 +    "​i":​ 656513,
 +    "​d":​ {
 +        "​nm":​ "​unit",​
 +        "​cls":​ 2,
 +        "​id":​ 656513,
 +        "​uacl":​ -1
 +    },
 +    "​f":​ 1
 +}]
 +</​code>​
 +
 +**5.** Переименуйте объект,​ например:​
 +<​code>​
 +https://​hst-api.wialon.com/​wialon/​ajax.html?​svc=item/​update_name&​
 + params={
 + "​itemId":​656513,​
 + "​name":"​unit1"​
 + }&​sid=<​your_sid>​
 +</​code>​
 +Результат выполнения:​
 +<code javascript>​
 +{
 +    "​nm":​ "​unit1"​
 +}
 +</​code>​
 +
 +**6.** Выполните запрос [[../​apiref/​requests/​avl_evts|avl_evts]] еще раз. ​
 +<​code>​
 +https://​hst-api.wialon.com/​avl_evts?​sid=<​your_sid>​
 +</​code>​
 +Результат выполнения:​
 +<code javascript>​
 +{
 +    "​tm":​ 1358780632,
 +    "​events":​ [{
 +        "​i":​ 656513,
 +        "​t":​ "​u",​
 +        "​d":​ {
 +            "​nm":​ "​unit1"​
 +        }
 +    }]
 +}
 +</​code>​
 +
 +В поле "​events"​ отобразилась информация о событии переименования.
Follow us on Facebook Gurtam Wialon Twitter Gurtam Wialon info@gurtam.com   |   Copyright © 2002-2024 Gurtam