1

Отчёт без айдишников. Зачем?

(edited by Лео 17/09/2019 09:18:54)

Topic: Отчёт без айдишников. Зачем?

Делаю отчёт "Хронология". Получаю последний статус ТСки: поездка, стоянка и остановка. Причём, с продолжительностью, как мне и надо. Выполняется он по группе, чтобы каждые 5 минут не слать 500 запросов по работающим ТСкам отдельно. И что мы видим в данных? Многозначительное наименование объекта. Всё. Идентифицируй ТСку как хочешь. Как добавить айдишник в отчёт - я не нашёл.
Подскажите, как решить задачу получения текущего состояния ТСки с его продолжительностью в привязке к айдишнику ТС, а не наименованию в данной системе, которое пользователь может ещё и изменить.

2

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Искать по наименованию id объекта при помощи запросов поиск итема.

FFA0-0BBB-8911-15BB

https://www.reg.ru
3

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Тем самым получив 500 запросов в 5 минут. Спасибо, не подходит.

4

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Будет достаточно одного-двух core/search_items, которым достать список всех объектов с именами, а затем перематчить.

Но с переименованиями в любом случае проблема.

Wialon Hosting Frontend
5

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Я ещё обнаружил events/update_units. Такое ощущение, что кусок документации просто отсутствует, потому что вообще непонятно, что это за события. Но там есть "trips". Может это быть что-то подходящее под мою задачу?

6

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Лео wrote:

Я ещё обнаружил events/update_units. Такое ощущение, что кусок документации просто отсутствует, потому что вообще непонятно, что это за события. Но там есть "trips". Может это быть что-то подходящее под мою задачу?

Попробуйте events/load вызвать, можно посмотреть, какие данные там есть. Пример запроса — https://forum.gurtam.com/viewtopic.php? … 48#p170348 . Можно увеличить detalization, будет больше данных.

События — это последовательность интервалов. trips, например, содержат интервалы всех поездок, время их начала/окончания, пробег по GPS, максимальную/средние скорости, на каком-то уровне детализации и трек в гугловом формате.

События рассчитываются постоянно и сохраняются, поэтому могут быть намного быстрее отчётов (которые вычисляют результат читая все сообщения за указанный период). Могут быть задержки вычислений, чёрные ящики могут быть пересчитаны сильно позже.

events/update_units позволяет подписаться на получение вычисленных интервалов в реальном времени. К сожалению, обновления приходят не в avl_evts, а в events/check_updates.

Wialon Hosting Frontend
7

Отчёт без айдишников. Зачем?

(edited by xc404c 17/09/2019 11:45:04)

Re: Отчёт без айдишников. Зачем?

В идеале бы получать вот эти данные (они отображаются в панели мониторинга), но почему-то их нельзя получить через api... Тут именно то, что надо. Текущий статус и его продолжительность.

Американский форум - Задаёшь вопрос, потом тебе отвечают.
Израильский форум - Задаёшь вопрос, потом тебе задают вопрос.
Русский форум - Задаёшь вопрос, потом тебе долго рассказывают какой ты муд@к.
8

Отчёт без айдишников. Зачем?

(edited by Лео 17/09/2019 12:59:59)

Re: Отчёт без айдишников. Зачем?

rual wrote:

Попробуйте events/load вызвать, можно посмотреть, какие данные там есть. Пример запроса — https://forum.gurtam.com/viewtopic.php? … 48#p170348 . Можно увеличить detalization, будет больше данных.

Я запросил события trips по конкретной ТСке. Она точно стоит на приколе, но я почему-то получил результат:
{
"100000000" : [
{
"trips" : {
"from" : {
"t" : 1568010325,
"y" : 46.3842926025,
"x" : 39.3679046631
},
"to" : {
"t" : 1568713547,
"y" : 46.3842849731,
"x" : 39.3678741455
},
"m" : 1568713547,
"f" : 0
}
}
]
}
Т.е. в таблице "поездки" запись, что она в движении по сей час. Я не нашёл никакого признака, который мог бы трактовать как поездка/стоянка/остановка. Как понять, что приведённый интервал - стоянка, а не поездка?

9

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Увеличьте детализацию до 0x2, там будет:

"state":<bool>,        /* state: 0 - parking, 1 - trip, 2 - stop */
Wialon Hosting Frontend
10

Отчёт без айдишников. Зачем?

(edited by Лео 17/09/2019 14:48:18)

Re: Отчёт без айдишников. Зачем?

Да, но пропал временной интервал. Мне тогда запрашивать сначала с 1, потом с 2? Получил интервал, получил состояние интервала.

OUTPUT
{
"10000000" : [
{
"trips" : {
"state" : 0,
"max_speed" : 0,
"curr_speed" : 0,
"avg_speed" : 0,
"distance" : 0,
"odometer" : 2536129,
"course" : 0,
"altitude" : 9
}
}
]
}

11

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Их можно объединять побитовым ИЛИ: 0x1 | 0x2 = 0x3.

Wialon Hosting Frontend
12

Отчёт без айдишников. Зачем?

(edited by Лео 17/09/2019 15:20:54)

Re: Отчёт без айдишников. Зачем?

*написал сообщение параллельно с предыдущим

Немного взломал систему. Использовал оба признака детализации значением 3 (двоичное 11).
Теперь в детализации появился и статус, и тайминги.

"1000000" : [
{
"trips" : {
"from" : {
"t" : 1568721971,
"y" : 36.4009361267,
"x" : 29.3039321899
},
"to" : {
"t" : 1568722334,
"y" : 36.4007720947,
"x" : 29.3037071228
},
"m" : 1568722394,
"f" : 0,
"state" : 2,
"max_speed" : 19,
"curr_speed" : 0,
"avg_speed" : 2,
"distance" : 201,
"odometer" : 8517811,
"course" : 0,
"altitude" : 4
}
}
],

13

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

rual wrote:

Увеличьте детализацию до 0x2, там будет:

"state":<bool>,        /* state: 0 - parking, 1 - trip, 2 - stop */

Кстати, тут явно не bool. Скорее, uint.
И ещё до кучи передайте разрабам. В пакете http://www.w3.org/2001/XMLSchema нет типа text, но есть string.
Вдогонку и шестнадцатиричные значения из документации лучше убрать вообще, переведя их в десятичные значения.

14

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Лео, разве параметры запросов и ответы не в JSON?

FFA0-0BBB-8911-15BB

https://www.reg.ru
15

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Лео, попробуйте сделать запрос через три точки. Если не поможет, то еще можно использовать доп свойства

16

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

RedRock wrote:

Лео, разве параметры запросов и ответы не в JSON?

Это очевидно. Но к чему вы клоните? К тому, что в JSON описаны типы uint и long, например?

17

Отчёт без айдишников. Зачем?

(edited by Лео 18/09/2019 10:55:10)

Re: Отчёт без айдишников. Зачем?

rual wrote:

Попробуйте events/load вызвать, можно посмотреть, какие данные там есть. Пример запроса — https://forum.gurtam.com/viewtopic.php? … 48#p170348 . Можно увеличить detalization, будет больше данных.

Я добился ответа по events/load, он очень странный. Например, по ТСке 17296507 мне возвращается последним событием простой с 18.09.2019 10:12:26  по  18.09.2019 10:19:56. При этом отчёт, про который вы говорили, что он менее оперативный, показывает поездку с 2019-09-18 10:28:12 по 2019-09-18 10:31:51. И судя по треку ТСка действительно двигается.

Оба запроса отправлены примерно в 10:32.
В отчёте действительно есть строка с простоем с началом в 18.09.2019 10:12:26, правзда, заканчивается он в 2019-09-18 10:28:12.

Можете пояснить разницу? Повторный запрос данных по events/load даёт тот же результат, интервалы не меняются.

18

Отчёт без айдишников. Зачем?

(edited by Лео 18/09/2019 11:11:34)

Re: Отчёт без айдишников. Зачем?

Ещё хотел бы уточнить. Возвращаются завершённые события или последнее по времени начала и по текущее время?

Т.е. если вернули остановку, то я должен трактовать, что она завершилась во время trips.to.t и значит сейчас ТС в движении.
Или же возвращённая остановка говорит, что он стоит с времени trips.from.t и можно считать, что по текущее время?

Разница в трактовке "что считается последним событием". Судя по отчёту, события вы сортируете по времени начала. Т.е. сначала поездка, она началась давно, а более свежие события остановки - они в рамках старого события и значит, если мне вернули интервал остановки, то сейчас ТС в пути, т.к. возвращается только завершённое событие (т.е. ТС поехала, событие остановки завершилось).

19

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Лео, вопрос еще какую задачу Вы решаете и для чего. Насколько Вам необходимо чтобы состояние поездки/стоянки объекта соответствовало данным, которые визуально видит пользователь Wialon-а.

Если у Вас в принципе стоит задача вычислить факты поездки/стоянки или выполнять некоторые действия на основании изменения текущего статуса в движении объекта без привязки к системам конфигурации Wialon (тот-же детектор поездок), то Вы можете склеить две системы - Wialon и flespi. И далее во flespi прозрачным образом через калькуляторы настроить систему обработку данных в режиме реального времени - к примеру получать push-уведомления о начале, изменении поездки/стоянки/геозоны по MQTT, одним REST запросом по всем объектам получить последнюю поездку/стоянку/остановку/посещения-геозон и т.д.

Вот пример с картинками: https://flespi.com/blog/analytics-walk- … your-trips (ну и далее по ссылкам там много информации)

At the dark side of telematics...
20

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Нужен монитор диспетчеру. Как только он видит, что ТСка стоит 5 или более минут и на неё выписано задание, он звонит водителю и выясняет причину простоя. Примерно так.
Следовательно, нужно знать текущий статус движение/стоянка и его продолжительность.

21

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Лео, Ваша задача решается стандартными инструментами flespi c некоторыми интеграционными работами (привязка/удаление контроля при выписке задания или его окончании):

1. Настраиваете ретранслятор с Wialon чтобы ввести данные во flespi-канал (протокол Wialon Retranslator). Заводите и именуете объекты во flespi как нужно диспетчеру.
2. Создаете калькулятор с настройками для детектирования стоянки длительностью более 5 минут.
3. Далее Ваша интеграционная часть когда задание выписывается делате соответствующую привязку девайса в калькулятору с begin_time=времени начала задания (с какого момента контролировать отсутсиве такой стоянки) и по его окончании девайс от калькулятора отвязывается или ему выставляется статус active=false.

В случае начала/окончания/обновления такой парковки к Вам прилетит событие по MQTT. Это же событие можно безопасно ловить и визуализировать прямо в веб-броузере - т.е. для работы с диспетчером серверного кода не требуется.

Это же можно (попробовать) отображать диспетчеру стандартным MQTT дашбоардом - MQTT Tiles, создать multiplier widget с топиком flespi/interval/gw/calcs/+/devices/+/created и на начало каждой уникальной такой парковки у диспетчера будет появлятся соответствующая кнопка. Но это больше для обработки в realtime, возможно GUI для визуализации лучше написать самому, например маркировать каждый случай как обработанный аннотируя созданный интервал каким-либо своим параметром.

Вот тут есть некоторый пример конфигурации борда с калькулятора flespi.

At the dark side of telematics...
22

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

Вот, стандартными инструментами получается сделать dashboard, когда по мере возникновения такой несанкционированной парковки появляется имя автомобиля, начало и длительность парковки. Соответственно это повод диспетчеру позвонить водителю.
https://cdn.flespi.io/file/5D8241AD0000005A3693C28075625C847AD9CADE119DEA92

Все это конечно можно и на русском сделать.

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

Это все без малейшей строчки кода)

At the dark side of telematics...
23

Отчёт без айдишников. Зачем?

(edited by RedRock 19/09/2019 05:30:57)

Re: Отчёт без айдишников. Зачем?

shal wrote:

3. Далее Ваша интеграционная часть когда задание выписывается делате соответствующую привязку девайса в калькулятору с begin_time=времени начала задания (с какого момента контролировать отсутсиве такой стоянки) и по его окончании девайс от калькулятора отвязывается или ему выставляется статус active=false.

Все таки какой-то код надо писать?
В таком случаи, если Ваша интеграционная часть когда задание выписывается делате перенос объекта в группу, то вы можете составить уведомление по датчику мгновенного определения движения. Более того во вкладке мониторинг вы можете в списки отобразить состояния такого датчика. И так же вы можете изменять иконку объектов в соответствии вхождения в ту или иную группу, допустим группы: "На заявке"/"Без заявке".
Лео, а через что вы выписываете задания для объекта мониторинга?

FFA0-0BBB-8911-15BB

https://www.reg.ru
24

Отчёт без айдишников. Зачем?

Re: Отчёт без айдишников. Зачем?

RedRock wrote:

Лео, а через что вы выписываете задания для объекта мониторинга?

Через 1С. В принципе, я уже обошёлся событиями trips и ignition с детализацией 3.
Единственное неудобство апи, с которым пришлось столкнуться, - динамические свойства. Это не позволило мне валидировать пакет по XSD.