Движение, поездки и остановки

 

Стандартизированный атрибут движения был введен для обеспечения универсального способа обработки движения устройства для всех протоколов. Некоторые устройства сообщают об этом атрибуте напрямую. Для других устройств он автоматически рассчитывается на основе значения скорости и параметра speedThreshold . Также возможно переопределить его с помощью вычисляемых атрибутов .

Система анализирует положение и переключает состояние движения в соответствии с конфигурацией. Traccar переключает состояние с «остановился» на «двигался» , если устройство сообщает о движении как об истинном в течение более minimalTripDuration секунд или если пройденное расстояние превышает minimalTripDistance метров. Traccar переключает состояние с «двигался» на «остановился» , если устройство сообщает о движении как о ложном в течение более minimalParkingDuration секунд или если включена функция useIgnition , а зажигание выключено. Переключение состояния возможно только в течение непрерывных периодов; любые колебания приводят к сбросу обнаружения.

Для настройки логики обнаружения можно использовать следующие параметры:

  • report.trip.minimalTripDuration - поездки меньшей продолжительности и расстояния, чем минимальная продолжительность, игнорируются. По умолчанию 300 секунд и 500 метров.
  • report.trip.minimalTripDistance — поездки меньшей продолжительности и расстояния, чем минимальное значение, игнорируются. По умолчанию — 300 секунд и 500 метров.
  • report.trip.minimalParkingDuration - остановки с продолжительностью менее минимальной не отображаются как остановки. По умолчанию 300 секунд.
  • report.trip.minimalNoDataDuration — промежутки в сообщаемых позициях, превышающие это значение, считаются остановками (только в отчетах). По умолчанию 3600 секунд.
  • report.trip.useIgnition - принудительно переводит переключатель в состояние "стоп", если сообщается о выключенном зажигании. По умолчанию отключено.

Новая логика поездки

Если параметр report.trip.newLogic включен, Traccar использует альтернативную модель движения, основанную на пространственной кластеризации, вместо того, чтобы полагаться только на изменения скорости. Движение начинается после того, как устройство достаточно далеко отходит от последней точки отсчета движения, и останавливается после того, как устройство остается в ограниченной области в течение минимального времени. Такой подход уменьшает количество ложных срабатываний при коротких паузах. Длительные перерывы в поступающих данных также могут разделять интервалы движения, чтобы сделать временные рамки поездок более реалистичными.

  • report.trip.minDistance - минимальное расстояние, необходимое для переключения в режим движения. По умолчанию 200 метров.
  • report.trip.minDuration - минимальное время простоя, необходимое для перехода в состояние "остановка". По умолчанию 180 секунд (3 минуты).
  • report.trip.stopGap - продолжительность перерыва, по истечении которого перемещение может быть разделено в зависимости от отсутствующих данных. По умолчанию 3600 секунд (1 час).

Поездки и остановки

Traccar предоставляет два расширенных типа отчетов: «Поездки» и «Остановки». Для определения поездок и остановок в этих отчетах используется один и тот же алгоритм обнаружения движения. Отчет об остановках может обнаруживать промежутки между указанными положениями и рассматривать их как остановку.

Примеры

Ниже приведены два примера, иллюстрирующие работу данной логики.

Первый пример иллюстрирует наиболее распространенный случай передачи данных. Это может быть устройство с внутренним аккумулятором или подключенное к источнику бесперебойного внешнего питания. Оно продолжает передавать данные даже при остановке транспортного средства, но может перейти в спящий режим через некоторое время (строки 19-21), если нет движения.

Поездка 1 обнаружена, поскольку период начался с нулевой скорости (инициализированной как остановка), расстояние превышает стандартные 500 метров или продолжительность превышает 5 минут, и за ней следует остановка, продолжительность которой превышает minimalParkingDuration .

Остановка 1 обнаружена, поскольку ее продолжительность превышает minimalParkingDuration , а скорость близка к нулю.

Поезд 2 определяется из строки 27; строки 24–25 игнорируются как колебания. Параметры превышают минимальные, и ему предшествуют и следуют позиции с нулевой скоростью.

Второй пример иллюстрирует случай, когда устройство не имеет внутренней батареи и питается только при включенном зажигании. Такие устройства всегда запускаются с холодного старта и имеют задержку в определении местоположения по GPS. Для таких устройств часто начинается передача данных со скоростью выше нуля. Использовать тот же алгоритм, что и в первом примере, невозможно, поэтому была введена дополнительная логика. Промежутки между интервалами передачи данных определяются как остановки.

Параметр report.trip.minimalNoDataDuration установлен на 600 (10 минут). Видно, что скорость никогда не бывает меньше значения speedThreshold , но промежуток (строки 15–28) составляет более 10 минут. Это интерпретируется как остановка. Предыдущая поездка определяется корректно. Последующий период движения не определяется как поездка, поскольку алгоритм не может определить, когда он заканчивается. Записываются только полные остановки или поездки.