1

Информация по списку объектов

(27/05/2020 18:52:28 отредактировано Лео)

Тема: Информация по списку объектов

Есть задача получать интервалы стоянок (этого не нашёл, но хотя бы поездок) по списку ТС. Список формируется динамически для каждого запроса, интервал каждый раз разный.
На эту тему я обнаружил группу команд events.
Вижу, что с помощью update_units можно указать список объектов.
В своё время получал с помощью check_updates оперативные события как раз по группе ТС. Но сейчас мне нужны исторические данные.
Подскажите, подойдёт ли для получения информации за период по списку метод get?
Просто там написано, что надо сначала "загрузить события" в сессию. Я так понял, это больше похоже не на загрузку событий, а на отбор данных, которые мне понадобятся. Меня смущает первый же параметр метода load. Это itemID. При этом update_units возвращает кол-во объектов, но не номер динамического списка ТС, значит у меня нет никаких идентификаторов списка объектов, кроме как понимания, что он загружен в текущую сессию. Как же мне тогда получить данные без itemID?

2

Информация по списку объектов

Re: Информация по списку объектов

Добрый день!

Для получения каких либо данных , интервалы, значения, нужно всегда указывать  itemID элемента(тов). Например, данные по отчетам, событиям, сообщения.
Интервалы стоянок через события  events вы не получите. Стоянки нужно самостоятельно рассчитывать , исходя из полученных интервалов поездок (trips). Аналогично реализовано в мобильном приложение, к примеру.

Для получения событии за определенной период (историю) как раз и нужно использовать методы events/load / events/get. Первый запрос загружает события в сессию, через второй уже получаете определенные данные.  Можно сразу получить через первый запрос  с параметром "selector"

Для группы объектов - выполняете запрос core/batch , который будет содержать все необходимые запросы (каждый со своим itemID , временем даже можно разное)  events/load

Diana Cheley
Wialon Hosting Expert
Gurtam
3

Информация по списку объектов

(01/06/2020 17:42:26 отредактировано Лео)

Re: Информация по списку объектов

Спасибо за ответ. Заинтересовал вот этот фрагмент:

Для получения каких либо данных , интервалы, значения, нужно всегда указывать  itemID элемента(тов).

Я специально упомянул ранее, что у загруженного в сессию списка ТС нет никакого идентификатора. Остаётся только в itemID писать уид конкретной ТСки. Ваш ответ намекает на то, что с помощью элемента itemID можно отразить список ТС в запросе events/load. Или эта фраза не относится к методу events/load?

Про селектор тоже не очень понял. Я получал события с вариантом селектора timeFrom-timeTo и нужной мне детализацией поездок. А как в селекторе указать список ТС? Или это тоже не ответ про список ТС?

Тогда остаётся только упомянутый core/batch. Скажите, насколько оптимален предложенный вами метод для получения данных по списку примерно 100-500 ТС?

Подскажите, что даёт возможность указания списка ТС методом events/update_units? Этот список м.б. использован только одним методом events/check_updates или ещё где-то?

4

Информация по списку объектов

Re: Информация по списку объектов

Добрый день!



Я специально упомянул ранее, что у загруженного в сессию списка ТС нет никакого идентификатора.

у списка, конечно, нет никакого идентификатора, вернее если речь идет о группе объектов, то конечно, у группы внутри системы есть свой itemID. Но в большинстве запросов именно нужно указывать itemID объектов.

Ваш ответ намекает на то, что с помощью элемента itemID можно отразить список ТС в запросе events/load. Или эта фраза не относится к методу events/load?

Про селектор тоже не очень понял. Я получал события с вариантом селектора timeFrom-timeTo и нужной мне детализацией поездок. А как в селекторе указать список ТС? Или это тоже не ответ про список ТС?

все верно, в селекторе нужно указывать параметры выбора данных, например, timeFrom-timeTo , и нужную детализацию.
Список ТС тут никак не указывается.

у вас есть список ТС , он должен быть к примеру с именами и itemID  объектов. Тогда в запросе  events/load вы сможете передать itemID объекта.
В одном запросе указывается один itemID (один объект), поэтому несколько запросов events/load, нужно будет выполнить в запросе core/batch.
Здесь есть дополнение  : каждый вызываемый events/load перезатирает предыдущий, т.е например вначале выполняем для объекта1, возвращаются данные, если потом выполнить для объект2 , то уже данные
Т.к метод core/batch возвращает суммирующий результат по всем указанным в нем запросам, и получится что в результате всегда будет только данные по одному (последнему) объекту.
Для того, чтобы избежать перезаписи нужно будет еще в batch добавить запрос events/unload

См пример для 4 объектов , в selector временные интервалы разбиты по дням
метод svc=core/batch
params :

{"params":[{"svc":"events/load","params":{"itemId":203,"ivalType":4,"timeFrom":1590537600,"timeTo":1591105392,"detectors":[{"type":"trips","filter1":0,"filter2":""}],"selector":{"expr":"(1590537600-1590623999|1590624001-1590710400|1590710401-1590796800|1590796801-1590883200|1590883201-1590969600|1590969601-1591056000|1591056001-1591105392)","timeFrom":1590537600,"timeTo":1591105392,"detalization":227}}},{"svc":"events/unload","params":{}},{"svc":"events/load","params":{"itemId":217,"ivalType":4,"timeFrom":1590537600,"timeTo":1591105392,"detectors":[{"type":"trips","filter1":0,"filter2":""}],"selector":{"expr":"(1590537600-1590623999|1590624001-1590710400|1590710401-1590796800|1590796801-1590883200|1590883201-1590969600|1590969601-1591056000|1591056001-1591105392)","timeFrom":1590537600,"timeTo":1591105392,"detalization":227}}},{"svc":"events/unload","params":{}},{"svc":"events/load","params":{"itemId":136,"ivalType":4,"timeFrom":1590537600,"timeTo":1591105392,"detectors":[{"type":"trips","filter1":0,"filter2":""}],"selector":{"expr":"(1590537600-1590623999|1590624001-1590710400|1590710401-1590796800|1590796801-1590883200|1590883201-1590969600|1590969601-1591056000|1591056001-1591105392)","timeFrom":1590537600,"timeTo":1591105392,"detalization":227}}},{"svc":"events/unload","params":{}},{"svc":"events/load","params":{"itemId":184,"ivalType":4,"timeFrom":1590537600,"timeTo":1591105392,"detectors":[{"type":"trips","filter1":0,"filter2":""}],"selector":{"expr":"(1590537600-1590623999|1590624001-1590710400|1590710401-1590796800|1590796801-1590883200|1590883201-1590969600|1590969601-1591056000|1591056001-1591105392)","timeFrom":1590537600,"timeTo":1591105392,"detalization":227}}},{"svc":"events/unload","params":{}}],"flags":0}


Тогда остаётся только упомянутый core/batch. Скажите, насколько оптимален предложенный вами метод для получения данных по списку примерно 100-500 ТС?

тут ограничений как таковых нет. Метод core/batch выполняет запросы последовательно,  т.е просто больше времени нужно будет для выполения запроса по 500 объектам.

Подскажите, что даёт возможность указания списка ТС методом events/update_units? Этот список м.б. использован только одним методом events/check_updates или ещё где-то?

метод events/update_units и последующий метод events/update_units используются для получения данных в онлайн режиме (постоянно получать обновления) , т.е не исторический за N период.
Те id объектов, которые вы передали в метода events/update_units (для добавления объектов в сессию), конечно, вы можете использовать эти же значения id  для  itemID в events/load, если список TC тот же.

Diana Cheley
Wialon Hosting Expert
Gurtam
5

Информация по списку объектов

Re: Информация по списку объектов

У меня получилось. Конечно, с кучей проблем в виде лаконичной надписи error: 4, но спустя пару часов перебора разных дефолтных значений разных параметров ответ всё же был получен.
Мне зачем-то выдаётся пустой результат запроса unload, что ставит крест на возможности проверки соответствия формата по XSD. Придётся ручками всё парсить с большой вероятностью ошибок. Но хоть что-то. Спасибо.