Перейти к содержимому

Работа в условиях РЭБ и функционал LBS

В зоне действия средств РЭБ спутниковый сигнал искажается тремя способами, и лечится каждый по-своему:

  1. Глушение — координат нет вообще, трек «замирает» в одной точке.
  2. Спуфинг координат — реальный сигнал подменяется более мощным искусственным, трек резко улетает в сторону.
  3. Спуфинг времени — дата и время подменяются прошлым или будущим; сервер мониторинга либо кладёт точки в историю, либо отбрасывает их.

Все настройки собраны в секции Трек → Компенсация отклонения трека из-за РЭБ. Они есть только на Galileosky 10: в прошивке 7x и XS этих функций нет.

⚙ Открыть компенсацию РЭБ

Есть два независимых варианта — их можно использовать вместе.

Прибор передаёт в пакете информацию о базовой станции, на которой сейчас зарегистрирована SIM-карта: идентификатор соты, код локальной соты, код страны, код оператора, RSSI. Сервер мониторинга, если в сообщении нет координат, подставляет координаты, привязанные к этой вышке.

Включается отметкой соответствующих тегов в основном пакете секции «Протокол», либо параметром Передача данных по вышкам сотовой связи в протоколе:

ExtMainPackBit 129,1

Ограничения варианта:

  • сервер мониторинга обязан иметь базу сотовых станций всех операторов с привязанными координатами — иначе подставлять будет нечего;
  • точность равна радиусу соты: пока прибор не перейдёт на следующую вышку, координаты не меняются;
  • тег Идентификатор соты (4 байта) (данные для 3G и LTE-станций) доступен с прошивок 48.18 для 7x и 3.18 для 10; обработчик протокола на сервере должен его поддерживать — уточните у поставщика ПО мониторинга.

Вариант 2: получать координаты от LBS-сервиса

Заголовок раздела «Вариант 2: получать координаты от LBS-сервиса»

Прибор сам отправляет данные об окружающих сотовых вышках (а на модификациях с Wi-Fi — ещё и о видимых точках доступа) в геолокационный сервис и получает обратно вычисленные координаты, которые подставляет в сообщения. Точность выше, чем в первом варианте, за счёт триангуляции по нескольким вышкам.

Основная команда — LBSCFG.

LBSCFG <режим>,<интервал>,<токен>[,<useWifi>,<wifiMaxRssi>],<host>,<port>

Параметры useWifi и wifiMaxRssi присутствуют только на приборах с Wi-Fi-модулем: без Wi-Fi команда принимает 5 параметров, с Wi-Fi — 7.

ПараметрЗначенияПо умолчанию
Режим LBS0 — выключено, 1 — Yandex.Locator, 2 — EasyLBS0
Минимальный интервал между запросами LBS, с10…6553560
Токен доступадо 65 символов—
useWifi — включать в запрос данные о Wi-Fi-точках0 / 10
wifiMaxRssi, дБм−100…0—
host — адрес LBS-серверадо 64 символов; пусто = адрес по умолчанию для выбранного режимапусто
port — порт LBS-сервера0…65535; 0 = порт по умолчанию. Учитывается только вместе со своим host0

Пример:

LBSCFG
LBSCFG:OnOff=1,reqInterval=30,apiKey=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,useWifi=0,wifiMaxRssi=0,host=,port=0;

Изменение относительно старой документации. Старая документация описывает LBSCFG OnOff,reqinterval,apikey,usewifi, где OnOff — это 0/1. В прошивке 48.28 первый параметр — режим из четырёх значений, а в конце команды добавлены host и port для переопределения адреса LBS-сервера (например, при работе через прокси). Команда GSMLOCATION больше не существует — настройка «Определение координат по данным GSM-сети» заменена режимами LBSCFG.

Короткая команда LBS <интервал>,<токен> в прошивке осталась, но она задаёт только интервал и токен и не включает режим. Для включения LBS используйте LBSCFG.

Зарегистрируйтесь в сервисе Yandex Локатор (https://yandex.ru/maps-api/products/locator) и получите токен.

Интервал подбирайте под характер эксплуатации: при движении по трассе прибор быстро меняет вышки — разумно запрашивать раз в 60 с; для техники, работающей на ограниченной площадке, хватит 300 с. Каждый запрос — это деньги.

Известная проблема Yandex Локатора: в отдельных регионах координаты Wi-Fi-точек в базе сервиса привязаны неверно, и трек уезжает в сторону. Если так — временно выключите useWifi (или переведите Wi-Fi-модуль в режим «точка доступа» в секции Wi-Fi).

Режим EasyLBS (2) работает с сервисом EasyLBS. Адрес и порт при необходимости переопределяются полями host/port — подсекция Адрес сервера LBS.

Сервису нужно знать, где стоят ваши BLE-маяки, и по какому ключу к нему обращается прибор. И то и другое заводится прямо из конфигуратора — кнопка «EasyLBS: маяки и ключи» под выпадающим списком Режим LBS: см. «EasyLBS: маяки и ключи устройств».

⚙ Открыть настройки EasyLBS

Для режима EasyLBS на приборах с Bluetooth в запрос можно добавлять данные о видимых BLE-устройствах:

LBSBLE <вкл>,<minRssi>,<maxCount>,<маска1>,…,<маска8>
ПараметрЗначенияПо умолчанию
Включить запрос данных по BLE меткам0 / 10
Минимальный RSSI, дБм−127…0, 0 = без порога0
Максимум устройств в запросе0…32, 0 = значение по умолчанию (7)0
Маски MAC-адресов, до 8 штук12 hex-символов, X — любая тетрада, например 80EAXXXXXXXXпусто

В дереве настроек блок BLE-наблюдения для EasyLBS появляется только при режиме LBS EasyLBS, а всё, кроме самой отметки, убрано в диалог «Фильтрация меток» — порог RSSI, максимум устройств и восемь масок.

Как это работает в прошивке:

  • прибор держит список последних наблюдений — 16 меток, каждая живёт 60 секунд с момента, когда её видели последний раз. Поэтому maxCount больше 16 ничего не добавляет: столько меток в приборе просто не хранится;
  • в запрос уходят самые сильные по RSSI, прошедшие порог и маски; по каждой передаются MAC, уровень сигнала и возраст наблюдения в секундах;
  • если масок не задано — принимаются все метки;
  • после включения отметки сканер стартует при первом же LBS-запросе, но первые 15 секунд прибор копит наблюдения и запрос не отправляет: запись с пустым списком меток бесполезна. Повтор — через интервал запросов.

Маски задаются целиком: если указать хотя бы одну позицию маски, весь список заменяется переданным (пустые позиции пропускаются). Ответ команды всегда печатает все слоты масок через ;, включая пустые. Неверная маска отклоняется целиком: WRONG MASK FORMAT mask<N>.

Запросы идут, когда выполняется хотя бы одно условие:

  • координат от GNSS-модуля нет или они признаны невалидными (в том числе фильтром компенсации спуфинга, см. ниже);
  • LBS выбран источником навигации (GPSDATASOURCE 6);
  • это первый запрос после включения прибора.

Поверх этого работают три ограничителя:

  • между запросами выдерживается минимальный интервал (параметр «Минимальный интервал между запросами LBS»); отсчёт — от момента, когда предыдущий ответ уже обработан;
  • если с последней LBS-позиции прибор не двигался по акселерометру, запрос на сервер не уходит: подставляются закешированные координаты. Любое движение сбрасывает кэш;
  • в режиме Yandex.Locator без заполненного токена запросы не выполняются вообще; режиму EasyLBS ключ не обязателен — без него запрос уходит без привязки к учётной записи.

Как только корректные спутниковые данные восстанавливаются, запросы прекращаются.

Чтобы координаты, полученные по LBS, стали источником для трека, в подсекции Источник GNSS значение Источник данных должно быть «Встроенный модуль» (тогда LBS работает как замена при отсутствии координат) либо 6 — LBS (GPSDATASOURCE 6,<таймаут>).

Спуфинг почти всегда сопровождается аномалиями — очень высокой скоростью, большой или отрицательной высотой. Отсекаются они обычным фильтром координат в секции «Трек»: см. «Настройка трека».

Пример набора для грузового транспорта в городе:

GPS.CORRECT 1,200,5,120,10,50,4
GPS.CORRECT3 -30,450,20

Прибор сравнивает текущие координаты от GNSS-модуля с предыдущими (полученными от модуля или по LBS). Если расхождение превышает порог, текущие координаты объявляются невалидными, приоритет отдаётся предыдущим, и уходит запрос в LBS-сервис.

GNSS.FENABLED10 1

Порог задаётся параметром фильтра 100:

GNSS.FPARAM10 100,1000 # 1000 метров вместо 10000 по умолчанию

Предварительно должен быть настроен LBS (см. выше). Минимальное допустимое значение — 500 метров.

Подсекция Синхронизация времени (NTPCONFIG):

NTPCONFIG <вкл>,<период мин>,<сервер1>,<сервер2>,…
  • включение периодической синхронизации по любому доступному каналу в интернет (по умолчанию включено);
  • период 1…1440 минут, по умолчанию 60; отсчитывается от последней успешной синхронизации;
  • серверы перебираются по порядку; пустое поле очищает слот.

Если спуфинг времени случается часто, а связь GSM устойчивая, выключите синхронизацию от спутников и оставьте только сетевую:

TIMESYNCGSM 1
TIMESYNCGNSS 0

TIMESYNCGNSS присутствует в дереве настроек (подсекция «Синхронизация времени»). TIMESYNCGSM в дереве настроек не представлена — выполняйте её во вкладке «Команды».

⚙ Открыть команды

Тот же фильтр GNSS.FENABLED10, что и для координат, сравнивает текущие дату и время от GNSS-модуля с предыдущими. При расхождении больше порога время объявляется невалидным и запускается синхронизация от сервера точного времени.

Порог задаётся параметром фильтра 101:

GNSS.FPARAM10 101,180 # 180 секунд вместо 300 по умолчанию

Минимальное допустимое значение — 30 секунд.

Запрос текущих значений обоих порогов — команда без параметров:

GNSS.FPARAM10
GNSS.FPARAM10: 100,10000.0000,101,300
  1. Убедитесь, что теги базовой станции отмечены в основном пакете и сервер их разбирает.
  2. Выполните LBSCFG без параметров — режим должен быть отличен от 0, токен заполнен.
  3. Выполните GNSS.FPARAM10 без параметров — вернутся действующие пороги.
  4. Проверьте на тестовой поездке в проблемном районе, что трек не «замирает» и не улетает.

См. также: EasyLBS: маяки и ключи устройств · Настройка трека · Передача данных на сервер · Вкладка «Настройки» (конфигурация прибора)