
Как Wialon работает с данными
О каких данных идет речь
Начнем с терминов: что в данном случае мы имеем в виду под «данными»?
Данные – это сообщения, которые сохраняет и передает устройство, установленное на объекте. Такие сообщения включают в себя:
время;
информацию от GPS-модуля: координаты, скорость, высоту, количество спутников;
параметры от внешних и внутренних датчиков: уровень топлива от ДУТ, количество оборотов колеса от одометра и так далее.
Wialon принимает эти данные, в случае необходимости вносит в них изменения и обрабатывает.

Расскажем подробно о каждом этапе работы с данными.
Время в Wialon
Для Wialon время – это исключительно важная информация, так как именно по времени происходит сортировка сообщений.
Как это работает: трекер формирует сообщение, используя формат Unix-времени (количество секунд, прошедших с полуночи 1 января 1970 года) и отправляет на сервер Wialon.
Как время влияет на данные
Wialon обрезает время до секунды, а миллисекунды не указывает. При этом популярные трекеры вроде Teltonika, Ruptela, Galileosky могут генерировать более одного сообщения в секунду. При большом потоке сообщений это может привести к путанице, поскольку у Wialon нет другого критерия сортировки сообщений, кроме времени.
Команда разработчиков Wialon рассматривает возможность увеличения размера поля для времени на три символа. Но реализация и тестирование этой доработки – дело небыстрое, так как обработка данных по секундам и миллисекундам должна быть максимально надежной.
Время сохранения сообщения трекером меньше либо равно времени его отправки трекером из своей памяти, и все это меньше либо равно времени прихода на сервер.
Выглядит это так:

Правило Wialon для времени сохранения сообщения
На практике пользователь может столкнуться с ситуацией, которую мы называем «сообщение из будущего»: сервер получает сообщение с меткой времени, которое по его часам еще не наступило. Из-за чего это происходит:
Конфигурация устройства. Если в трекере не установлен часовой пояс UTC+0, то трекер может отправить сообщение на сервер с неправильной меткой времени. В итоге Wialon может получить сообщение с временной меткой «из будущего» и будет вынужден изменить ее. Решение простое – настроить время трекера по UTC+0.
Синхронизация времени. Ситуация характерна для Wialon Local: когда не настроена синхронизация, возможны отклонения по времени у сервера на секунды и даже минуты. Это приводит к нарушению упомянутого выше неравенства. Чтобы этого избежать, администратор сервера должен настроить периодическую синхронизацию времени по NTP (протоколу сетевого времени).
Параметры датчиков
Параметры – это значения в сообщениях, которые описывают состояние отслеживаемого объекта и установленного на него оборудования.
Что осложняет работу с параметрами
Нечитабельность данных. Информация, которую Wialon получает, не всегда понятна пользователю.
Когда пользователь видит значение temperature13, он понимает: речь идет о температуре. Но температуре чего: двигателя, топлива или воздуха? В градусах по Цельсию или Фаренгейту?
И таких вопросов может быть очень много по любому параметру. Каждый производитель трекеров имеет свое представление о том, как нужно записывать значения.
Wialon со своей стороны унифицирует общие для всех трекеров параметры. Например, параметр speed – это всегда скорость, lat, lon – координаты и так далее.
Отсутствие единого стандарта отображения данных. Wialon работает с 2 300 моделями оборудования, и их число растет. Подобная гибкость имеет свои минусы: невозможно автоматически стандартизировать значения параметров при таком количестве оборудования и случаев его использования.
Чтобы расшифровать сообщения от трекеров, вы можете зайти в специальный раздел «GPS/ГЛОНАСС оборудование» на вкладке «Оборудование».
В строке «Поиск оборудования» введите интересующую модель.
Далее выберите вкладку «Параметры».
Вы получите список параметров, их описание и единицы измерения (если это актуально).
Фильтрация данных
Wialon удаляет те данные, которые попадают в категорию неточных согласно настройкам валидности. Все настройки осуществляет пользователь, без них Wialon ничего не удаляет.
Коротко напомним, как работает фильтрация валидности:
Зайдите на вкладку «Дополнительно» у объекта.
Включите раздел «Фильтрация валидности сообщений».
Выберите условия фильтрации. Например, по скорости (наиболее распространенный критерий для фильтрации) или минимальному количеству спутников.
Для трекеров, которые сами могут определить, считается ли сообщение невалидным, воспользуйтесь опцией «Пропускать невалидные сообщения».

Фильтрация валидности сообщений
Датчики
Несмотря на то, что датчики тоже работают с параметрами, они сильно упрощают их отображение для пользователя:
Датчики определяют логику обработки параметра. Каждый из типов датчиков имеет связанные с ним алгоритмы в Wialon. Например, в отчетах для температуры и веса есть отдельные колонки, которые Wialon заполняет, опираясь на тип датчика.
Датчики улучшают доступный функционал. Частый пример от наших партнеров – подключение относительного одометра или датчика пробега, чтобы конечный пользователь получил более точные данные по пробегу и поездкам, чем на основе GPS.
Датчики дают доступ к новому функционалу. Примеров множество: ДУТопределяет сливы, датчик зажигания считает моточасы, а датчик пассажиров назначает пассажиров. Без создания этих датчиков подобный функционал не доступен.
Как датчики обрабатывают данные
Выражение данных через математические формулы. В строке, где указан параметр, пользователь может задать формулу. Например, это может быть простая формула, переводящая метры в километры с помощью коэффициента. Более сложные варианты также доступны: если пользователь хочет увидеть ускорение, он вводит формулу, по которой Wialon делит разность скорости между двумя сообщениями на разность времени между ними.
Таблица расчета. Она позволяет отобразить упрощённые зависимости, используя лишь некоторые из точек, которые интегратор определяет на практике.
Например, тарировка бака при использовании датчика уровня топлива помогает определить соответствие уровня топлива в баке объему этого топлива.
Также с помощью таблицы расчета можно сопоставить значение датчика с диапазоном исходного параметра.
Например, если напряжение больше 23, то датчик зажигания включен, то есть равен 1, а если меньше, то датчик выключен и выдает 0.
Валидация. С помощью валидации можно связать значения нескольких датчиков между собой. Для этого используются не только математические, но и логические операции. Например, проверка на неравенство нулю.
3 основных вида обработки данных
Разобравшись с тем, что такое данные в Wialon и где есть «узкие» места с их предобработкой, переходим к финальной обработке этих данных.
Есть три ключевых метода обработки данных в Wialon, с которыми чаще всего встречаются пользователи. Два из них – онлайн и аналитика – хорошо известны. Третий – события – появился относительно недавно.
Сразу стоит отметить, что в качестве исходные данных эти методы берут одни и те же сообщения.
Онлайн
Алгоритм работы метода обработки данных онлайн – самый простой и прозрачный: он обрабатывает каждое новое сообщение в режиме реального времени.
Вкладка «Мониторинг». На ней рядом со списком объектов есть множество колонок с разными индикаторами. Пользователь также может кликнуть на иконку объекта и получить расширенные данные, например, значения ДУТ. Данные датчиков уровня топлива изменились – Wialon обновил информацию.
«Дашборд». Информация, например, геозона с объектами или состояние движения, представлены в виде диаграмм с онлайн-данными.
Уведомления. Они также относятся к методу обработки данных онлайн. С их помощью можно рассчитывать длительность состояния объекта.
Аналитика: сообщения, треки и отчеты
В некотором смысле аналитику можно противопоставить онлайну: онлайн обрабатывает каждое приходящее сообщение здесь и сейчас, а аналитика работает с законченным периодом.
Например, если пользователь построил отчет за последний час, а потом трекер прислал какие-то данные из «черного ящика» за этот час после формирования отчета, то отчет их не будет видеть до тех пор, пока пользователь не сформирует его еще раз.
Инструменты аналитики
Вкладка «Сообщения»: здесь не только отображаются полученные данные, но также рассчитываются пробег и длительность поездки.
Вкладка «Треки» учитывает детектор поездок и отображает заправки и прочие маркеры.
Отчеты: представляют собой гибкий инструмент для отображения широкого спектра информации.
Как работает аналитика
Wialon выгружает набор данных за указанный период, а затем работает с ними по заранее известной логике. При этом логика для каждого инструмента аналитики будет разной.
Например, таблица «Поездки» ориентируется на детектор поездок, таблица «Заправки» – на свойства из датчика уровня топлива, а таблица «Хронология» может отобразить поездки и заправки одновременно.
События
К онлайну и аналитике мы добавили события, в каком-то смысле объединив ключевые плюсы двух других методов.
От онлайна взяли оперативность: события учитывают все новые сообщения, обрабатывая их в фоне.
От аналитики – работу с объемом сообщений: события учитывают ранее накопленные сообщения и обрабатывают их еще раз при необходимости. В отличие от онлайна, событие отображает информацию при временном отсутствии данных. Это значит, что если в последнем сообщении нет информации по какому-то параметру, то событие возьмет эту информации из последнего известного сообщения. Онлайн не смотрит так далеко и просто ставит прочерк.
Что получаем в итоге: в тот момент, когда пользователь запросит информацию, данные уже обработаны и могут быть сразу же отображены.
На данный момент такой алгоритм применяется для показаний 6 видов:
поездки;
датчики;
зажигание;
превышение скорости;
счетчики;
топливо.
Где используются события
Мобильное приложение Wialon. События наиболее популярны на смартфонах, так как обеспечивают быстрый доступ к наиболее актуальным данным в любой момент времени.
Уведомления о сливах и заправках. Эти уведомления стали возможны именно благодаря событиям.
«Дашборд». Здесь события используются для отображения части карточек: состояние подключения (подключены/не подключены), состояние движения (стоят/движутся, т.д.).
Таблица по превышениям скорости в отчетах. Хотя отчеты относятся к инструментам аналитики, эта таблица работает именно на событиях.
Всплывающие подсказки и расширенная информация. При соответствующих настройках события помогают отобразить последние известные данные по датчикам. Таким образом Wialon может работать с трекерами, которые отчитываются о состоянии только в момент изменения, вместо того, чтобы постоянно отправлять однообразные сообщения.
Например, во время движения транспортного средства трекер может отправлять сообщение «двигатель работает» снова и снова. Но гораздо экономичнее прислать сообщение «двигатель работает» один раз, когда его включили, а затем – сообщение «двигатель не работает», когда состояние изменилось и двигатель выключили. Так события позволяют по одному сообщению «двигатель работает» или «двигатель не работает» судить о том, что было в промежутке.
Расхождения между типами обработки данных
В идеале расхождений между событиями и аналитикой не должно быть. Но в реальности они встречаются. Чаще всего это связано с различием в алгоритмах. Но в этом случае мы видим скорее разную скорость отображения результата, а не разные результаты.
Если говорить о расхождениях значений, это возможно по нескольким причинам.
Большой объем данных. Алгоритм событий, который обрабатывает данные только в хронологическом порядке, сначала рассортировывает все сообщения, а затем начинает обрабатывать их с того места, где появились новые данные.
В случае серьезной разницы, которая не исчезает через какое-то время, пользователь всегда может обратиться в техподдержку. У таких задач высокий приоритет, и команда быстро и тщательно работает над каждым случаем расхождения.
Как избежать проблемы: настроить выдачу сообщений из трекера в хронологическом порядке: это позволит быстрее обрабатывать данные, так как событиям не придется пересчитывать старые данные несколько раз.
Изменения настроек. Представим, что весь месяц пользователь отслеживал данные в формате событий в мобильном приложении и каждый день видел одни значения. Затем 31 числа изменил настройки, например, датчиков топлива, и построил отчет за месяц. Данные в отчете могут отличаться от тех, что он видел до этого в событиях. Так происходит потому, что отчет показывает данные с учетом обновленных настроек за весь месяц, а события автоматически пересчитались только за последние 24 часа.