«На связи» — не значит «работает»: почему трекер молчит о том, что ослеп
Вы едете по городу. Открываете карту — машина стоит во дворе, где вы её оставили утром. Статус зелёный, «на связи». Время последнего обновления — минуту назад. Ошибок нет.
Прибор при этом исправен, SIM работает, данные идут непрерывно. Он просто последние два часа не видел ни одного спутника и ни разу об этом не сообщил.
Мы держим сервер мониторинга и разбираем то, что приходит от приборов, на уровне отдельных пакетов. Ниже — механизм, из-за которого «на связи» и «работает» оказываются разными вещами, и единственный признак, по которому это можно поймать снаружи.
Проверьте за минуту, ваш ли это случай
- Точка стоит, когда машина едет — вы в дороге, а на карте автомобиль замер, и время обновления при этом свежее. Это ваш случай, читайте дальше.
- Точка движется, когда машина стоит — скачет по двору, уезжает в сторону, рисует зигзаг на парковке. Это другая беда, с другой причиной, и ей посвящён отдельный разбор. Идите туда, эта статья вам не поможет.
Коротко
- Потеряв спутники, прибор не замолкает. Он продолжает слать телеметрию датчиков каждые 20–60 секунд и просто не включает в пакет навигационную часть.
- Признака «координаты недостоверны» в этих данных нет: за неделю ноль таких записей из 42 547.
- Сервер, получив пакет без координат, подставляет последние известные — вместе со временем определения, признаком достоверности и скоростью.
- В результате карта показывает правильное место, свежую отметку и статус «на связи». Ни одной ошибки нигде.
- 77 % пакетов от датчиков несут скопированные координаты. Разрыв между временем определения и временем приёма доходит до часов.
- Единственный признак снаружи — разница между двумя отметками времени: когда определены координаты и когда получен пакет.
Что происходит, когда прибор теряет спутники
Здравый смысл подсказывает: потерял сигнал — перестал слать. На деле наоборот.
Современный трекер отправляет не одну сущность, а пакет из нескольких частей. В нём может быть навигационная часть — координаты, время определения, скорость, признак достоверности. И отдельно части от датчиков: зажигание, двери, уровень топлива, напряжение бортовой сети, температура.
Датчики к спутникам отношения не имеют. Прибор читает их с проводов и шины, и потеря сигнала на них не влияет никак. Поэтому, оказавшись в подземном паркинге или под плотной застройкой, прибор продолжает работать в обычном ритме и отправлять всё, что знает.
Он просто перестаёт класть в пакет навигационную часть. Не помечает её как ненадёжную, не отправляет нули, не выставляет флаг — её в пакете нет вовсе.
С точки зрения протокола это корректное поведение: сообщать нечего, значит поле отсутствует. Проблема начинается дальше, когда эту тишину надо как-то показать человеку.
Ноль из 42 547: признака недостоверности не существует
Мы предполагали, что у части записей будет стоять отметка «координаты получены, но им нельзя доверять». Такой признак есть и в ЕГТС, и в модели данных сервера — то есть место, куда его записать, предусмотрено.
Проверили за неделю по одному прибору.
42 547 записей телеметрии. Записей с признаком «координаты недостоверны» — ноль.
Не мало. Не единицы. Ровно ноль.
Флаг существует в описании протокола, но на практике прибор ставит его всегда в положение «достоверно» — потому что отправляет координаты только тогда, когда они у него есть. А когда их нет, он не отправляет запись с плохим флагом; он не отправляет навигационную часть вообще.
Отсюда следует неприятное: искать в данных пометку «здесь координаты плохие» бесполезно. Её не будет. Плохих координат не бывает — бывает их отсутствие, и оно ничем себя не обозначает.
Что делает сервер: копирует последнюю точку целиком
Дальше пакет приходит на сервер, и тому надо сохранить запись. Запись без координат неудобна почти всем: карте нечего рисовать, отчёту нечего считать, истории некуда поставить метку.
Traccar, на котором работает наш сервис, подставляет последнее известное положение. Решение разумное: событие «открылась дверь» лучше показать примерно там, где машина была, чем не показать нигде. Другие системы вполне могут поступать так же — но мы этого не проверяли и утверждать не будем.
Тонкость в том, что именно копируется.
Копируются широта и долгота — это ожидаемо. Но вместе с ними копируются время определения координат, признак достоверности и скорость.
И вот тут получается ловушка. Запись, у которой координаты часовой давности, несёт отметку «данные достоверны». Формально это правда: та точка действительно была достоверной — час назад. Практически это означает, что система не может отличить свежую позицию от скопированной, потому что все признаки у них одинаковые.
Почему это хуже, чем просто отсутствие данных
Если бы прибор при потере сигнала замолкал, всё было бы честно: связи нет, статус красный, человек видит проблему и идёт разбираться.
Вместо этого он получает картину полного благополучия:
- машина на карте — в правильном месте (там, где её видели последний раз);
- отметка «данные достоверны» — стоит;
- статус — «на связи», и это чистая правда: пакеты идут каждые 20–60 секунд;
- время последнего обновления — свежее;
- в журналах — ни одной ошибки, потому что ошибки не было.
Ни один индикатор не показывает проблему, потому что проблемы с точки зрения системы нет. Прибор работает, связь есть, данные приходят. Отсутствует только то, чего никто не проверяет: свежесть координат.
Это худший класс неисправностей — тот, который выглядит как исправность. Отказ, который виден, чинят. Отказ, который не виден, живёт годами.
Из нашей практики: мы нашли это не потому, что кто-то пожаловался. Мы искали в потоке совсем другое и обратили внимание, что у части записей время определения координат подозрительно круглое и повторяется. Жалоб при этом не было — и не могло быть: снаружи всё выглядело правильно.
77 % пакетов несут скопированные координаты
Мы посчитали, насколько это частое явление, а не редкий сбой.
77 % пакетов от датчиков приходят со скопированными координатами. Не каждый сотый, не каждый десятый — три четверти.
Разрыв между временем определения координат и временем приёма пакета доходит до часов.
Практическое следствие касается не карты, а событий. Когда прибор сообщает «открылась дверь» или «включилось зажигание», это событие получает координаты, которых уже нет. Тревога рисуется не там, где случилась — иногда за квартал, иногда за десятки километров.
Причём здесь важно не путать с другим механизмом: точка не гуляет и не ошибается на десятки метров, она старая. Разброс приёмника — отдельная история, и ей посвящён свой разбор.
Единственный признак, доступный снаружи
Хорошая новость: признак есть, он один, и для него не нужен доступ к серверу.
Смотрите на разницу между двумя отметками времени:
- когда определены координаты — момент, в который приёмник в последний раз видел спутники;
- когда получен пакет — момент, в который сервер принял данные.
У исправно работающего прибора эти отметки расходятся на секунды. Если разрыв растёт — минуты, потом десятки минут, потом часы, — прибор на связи, но слеп.
Проблема в том, что интерфейсы обычно показывают одну колонку «последнее обновление», и она бодро тикает, потому что берётся из времени приёма. Посмотрите, есть ли в вашей системе вторая отметка — в карточке устройства или в подробностях позиции.
Если в вашей системе показывается только одна отметка времени — вы не сможете отличить работающий прибор от ослепшего. Это не придирка к интерфейсу, а прямое следствие того, что описано выше.
Что делать
1. Найдите в своей системе вторую отметку времени. Одна колонка «обновлено» — недостаточно. Нужна пара «когда определены координаты» и «когда пришли данные».
2. Проверьте разрыв прямо сейчас, пока машина стоит на виду. Если автомобиль перед вами, а координаты определены сорок минут назад — вы только что нашли у себя это явление.
3. Не доверяйте координатам событий безоговорочно. Метка «сработала сигнализация» стоит там, где были последние координаты, а не обязательно там, где сработала.
4. Проверьте, где стоит прибор. Механизм, описанный выше, безобиден, пока спутники теряются редко. Если прибор лежит под металлом или в багажнике, он будет слепнуть постоянно — и вы будете постоянно видеть скопированные точки.
5. Не ищите в данных пометку о недостоверности. Её нет. Ноль из 42 547 — не наша особенность, а следствие того, как устроены протоколы.
Чего мы не утверждаем
Наши числа — по одному прибору за одну неделю. 42 547 записей и 77 % — достаточно, чтобы явление не было случайностью у этого устройства, и недостаточно, чтобы объявлять доли универсальными. У прибора с открытой антенной на крыше слепых периодов будет меньше.
Подстановка последней точки — не ошибка разработчиков. Это осознанный размен: показать событие примерно там, где машина была, лучше, чем не показать нигде. Спорна не подстановка, а то, что вместе с координатами копируется признак достоверности.
Разбор сделан на ОДНОМ приборе. Это важнее всех прочих оговорок. По ЕГТС у нас говорит одно устройство, и все 42 547 записей — его. Одна марка, одна прошивка, один экземпляр: это наблюдение, а не выборка. Механизм выглядит общим для протоколов, где навигационная и сенсорная части передаются отдельными блоками, но подтвердить это на других приборах мы пока не можем.
Мы не утверждаем, что все системы мониторинга ведут себя одинаково. Мы описываем то, что видим у себя, и то, что следует из устройства протоколов. Проверить свою систему можно за минуту — пункт 2 выше.
Частые вопросы
Как понять, что трекер потерял спутники, если статус зелёный?
По разрыву между временем определения координат и временем получения данных. Других признаков снаружи нет.
Почему прибор не сообщает, что не видит спутники?
Потому что с его точки зрения сообщать нечего. Он отправляет то, что знает, — показания датчиков. Навигационную часть просто не включает, и отдельного уведомления об этом протоколом не предусмотрено.
Значит, координаты на карте могут быть часовой давности?
Да. И выглядеть они будут точно так же, как свежие, включая отметку «данные достоверны».
Это поломка прибора?
Нет. Прибор, который мы разбирали, ведёт себя именно так, и поведение это укладывается в устройство протокола. Потеря спутников в паркинге или под плотной застройкой — норма; ненормально то, что об этом никак не сообщается.
Помогает ли смена прибора?
Помогает правильное размещение антенны. Прибор, который видит небо, теряет фикс редко, и явление перестаёт быть заметным — хотя механизм остаётся.
Вывод
Трекер, потерявший спутники, не замолкает — он продолжает слать данные без координат, а сервер подставляет вместо них последние известные, копируя заодно и время определения, и отметку достоверности.
За неделю среди 42 547 записей не нашлось ни одной с признаком «координаты недостоверны». 77 % пакетов от датчиков несли скопированные координаты, а разрыв доходил до часов.
Снаружи это выглядит как исправная работа: правильное место, свежая отметка, зелёный статус, ноль ошибок. Единственное, что выдаёт подмену, — разница между временем определения координат и временем приёма пакета.
Найдите в своей системе эти две отметки. Если показывается только одна — вы не увидите разницы между работающим прибором и ослепшим, и это стоит знать до того, как разница окажется важной.