Трекер шлёт каналы, а что за ними, не знает никто: как размапить датчики без документации

22 мин чтения
Столбчатая диаграмма распределения 89 импульсов канала din5 за неделю по одному трекеру: 75 срабатываний на стоянке с выключенным зажиганием, 8 в движении, 6 в моменты без валидного GPS-фикса и ни одного при включённой охране, что и опровергло гипотезу «канал показывает охрану» в пользу гипотезы «канал показывает дверь».
Схему можно потянуть вбок.

Вы подключили прибор к своему серверу, и в атрибутах позиций появилось десятка полтора имён: adc0, adc2, din5, din9. Ни одной подписи. Протокол честно описывает, как передать значение датчика: номер входа, два байта, флаг. Что этот датчик означает, протокол не описывает вообще, и справочника соответствий в нём нет. Дальше начинается не инженерия, а археология.

Ниже разбор того, как мы размапливали каналы одного прибора StarLine по недельной выгрузке: 41 539 записей одного устройства с 30 августа по 6 сентября 2026 года. Разбор получился поучительнее результата. Мы дважды получили убедительное подтверждение неверной гипотезы, оба раза с процентами, которые не стыдно показать, и оба раза ошибка была не в вычислениях. Она была в том, с чем мы сравнивали результат.

как устроен наш GPS-мониторинг

Коротко о главном

  • Совпадение гипотезы с каналом в 91 процент не доказало ничего. По эталонному логу ручник был поднят 20,7 часа против 0,6 часа опущенного, перекос в 33 раза. При такой пропорции почти любой канал, который просто стоит в одном значении, покажет 90 с лишним процентов.
  • Правильный ответ дали 23 записи из 1319, те редкие, где состояние было другим. Он оказался противоположным первому: канал инверсный. Смотреть надо на редкое состояние, а не на общий процент.
  • Одна и та же проверка даёт от 91 до 95 процентов в зависимости от способа отбора записей, и убедительно выглядит любой вариант. Называть процент без описания фильтра бессмысленно.
  • Разбивка тех же 89 импульсов по состоянию машины дала 8 срабатываний в движении по одному разумному определению и 54 по другому, разница в семь раз. Публикуя разбивку, публикуйте определение: «75 на стоянке» это не факт, а факт плюс способ измерения.
  • Соседство событий дважды выдало себя за причину. Канал din5 мы размапили как дверь, переставили в охрану по убедительному совпадению и вернули обратно пересчётом по неделе: 89 импульсов, ни одного при включённой охране.
  • Разрушила ложную версию не статистика, а фраза владельца: «я на заправке машину не глушу и на охрану не ставлю». В базе нет колонки «что человек делал руками».
  • Дискретный вход без питания не читается: при выключенном зажигании канал был равен единице в 8083 случаях из 8083.
  • У метода есть предел. Медиана интервала между снимками 59 секунд, поэтому пятисекундное открытие двери не попадает в передачу в принципе.

Прежде чем размапливать, убедитесь, что каналы вообще доезжают до базы

Первый шаг не про смысл каналов, а про их наличие: «канала нет» может означать не отсутствие данных, а отсутствие их разбора. У нас так и было. Штатный декодер EGTS в Traccar 6.5 сенсорные субзаписи знал по типам, но не разбирал, а главное, выбрасывал их целиком: StarLine шлёт датчики отдельным пакетом без координат, а условие сохранения требовало валидного GPS-фикса. Прибор слал показания всё время, сервер их принимал, подтверждал приём и терял.

Каналы adc и din, о которых дальше пойдёт речь, появились в базе только после патча из двух правок. Первая раскладывает аналоговые и дискретные субзаписи в атрибуты, вторая меняет условие сохранения на «валидный фикс либо непустые атрибуты». Без второй первая ничего не меняет, и именно на этом месте люди обычно решают, что прибор датчики не отдаёт.

разбор обеих правок и рецепт сборки образа

Отсюда практический вывод для любого, кто собирается размапливать: сначала сверьте сырой поток протокола с тем, что сервер из него сохранил, за один и тот же час. Если субзаписи в логе есть, а атрибутов в таблице позиций нет, обсуждать прошивку и провода рано, разрыв внутри вашего сервера.

Вторая честная оговорка того же рода касается уже нашей стороны. Мы читаем только каналы с префиксами adc, din и liquid. Прибор, который называет свои каналы иначе, для нас невидим, и это наше решение, а не свойство приборов.

Метод: сравнивать состояния, а не окрестности событий

Работающая схема сверки выглядит так: берём независимый эталон, строим из него ступенчатую шкалу состояния во времени и для каждой записи телеметрии смотрим, каким состояние было в её момент. Получается таблица два на два: канал в нуле при поднятом ручнике, канал в единице при поднятом, и так далее. Эталоном у нас служила история из приложения производителя за 4 и 5 сентября, время в ней местное, в базе UTC, сводилось вычитанием трёх часов.

Первый заход был другим, и он оказался ловушкой. Мы смотрели на окрестности переключений: менялся ли канал рядом с моментом, когда владелец дёрнул ручник. Результат выглядел прекрасно. Канал din9 менялся рядом с 20 из 23 опусканий и 19 из 23 подниманий. Почти попадание, хоть сейчас в карту каналов.

Проблема в том, что рядом с этими моментами менялось всё подряд. Машина трогалась, тормозила, открывались двери, включалось и выключалось зажигание. Ручник дёргают не в вакууме, а внутри плотной цепочки действий, и любой канал из этой цепочки покажет высокое совпадение с любым другим её звеном. Проверка по окрестностям не отличает «этот канал и есть ручник» от «этот канал срабатывает там же, где ручник».

Сверка по состояниям от этого свободна. Она спрашивает не «поменялось ли что-то рядом», а «совпадает ли значение канала с состоянием узла в спокойный момент, вдали от любых переключений». Ответ на этот вопрос уже что-то значит. Правда, значит он меньше, чем кажется, и следующий раздел ровно об этом.

какие приборы и протоколы мы поддерживаем

Совпадение в 91 процент не доказало ничего

Наивная сверка по всему периоду с прямой полярностью дала 91,1 процента: 1201 совпадение из 1319. Цифра, при виде которой хочется закрыть вопрос и записать канал в карту. Мы почти так и сделали.

Считать её нужно было не саму по себе, а в сравнении с базовой частотой канала. По эталону ручник был поднят 20,7 часа против 0,6 часа опущенного, перекос в 33 раза. При такой пропорции проверка перестаёт различать гипотезы: высокий процент получается и для настоящего ручника, и для канала, который просто стоит в одном значении и не несёт никакого смысла вовсе. Гипотеза «всегда единица» на этих данных выступила бы примерно так же. Мы измерили не качество гипотезы, а перекос выборки.

Один и тот же расчёт даёт от 91 до 95 процентов

Раньше по той же паре мы называли другое число, 94,6 процента. Обе цифры верны, и это одна и та же проверка. Разница в фильтре: 94,6 получается, если выбросить записи, лежащие ближе 90 секунд к переключениям эталона (1157 совпало, 66 разошлось, 96 отброшено), а 91,1 получается по всему периоду без отбрасывания.

В прошлый раз фильтр просто не был назван вслух. В зависимости от способа отбора получается от 91 до 95 процентов, и убедительно выглядит любой вариант. Это не придирка к формулировке, а свойство таких проверок: процент совпадения без описания того, какие записи в него вошли, не сообщает читателю ничего проверяемого. Если вы публикуете такую цифру, публикуйте вместе с ней правило отбора, иначе через месяц вы сами не сможете её воспроизвести.

Правильный ответ дали 23 записи из 1319

Пересчёт делался по устойчивым участкам, дальше 60 секунд от любого переключения, и только при включённом зажигании:

ручник поднят  → канал в нуле:    45 из 52
ручник опущен  → канал в единице:  19 из 23
обратная полярность: 85%, n = 75

Картина перевернулась. Канал не прямой, а инверсный: ноль означает поднятый ручник. Тот самый din9, который по наивной сверке подтверждал прямую полярность на 91 процент, на очищенной выборке подтвердил обратную.

Решили вопрос 23 записи из 1319, те редкие, где ручник был опущен. Всё остальное было шумом базовой частоты. Отсюда главный практический приём всей статьи: смотреть надо на редкое состояние, а не на общий процент. Если одно из состояний занимает почти всё время, оно ничего не проверяет, и вся доказательная сила сосредоточена в горстке записей, где было по-другому. Считайте эту горстку отдельно и не усредняйте её с остальными.

Полезно проговорить и обратную сторону приёма. Редких записей мало по определению, поэтому вывод на них держится на маленьком n и обязан быть подписан этим n. Наши 85 процентов получены на 75 замерах, и это надо писать рядом с процентом, а не в примечании.

Тот же счёт, другое определение, разница в семь раз

Второй способ обмануть себя устроен хитрее первого, и виновата в нём уже не выборка, а формулировка вопроса.

Забежим немного вперёд. Ниже пойдёт речь о канале din5, у которого за неделю набралось 89 импульсов, и их надо было разложить по состоянию машины: сколько на стоянке, сколько на ходу. Задача звучит настолько однозначно, что определение никто обычно не пишет. Мы посчитали её двумя одинаково разумными способами, на одних и тех же 89 импульсах:

Определение «машина двигалась» Стоянка Движение Без навигации
Скорость в ближайшей навигационной записи 75 8 6
Максимум скорости в окне ±90 секунд 29 54 6

В корзине «движение» разница в семь раз. Ни одна из двух строк не является ошибкой, обе посчитаны верно по одним и тем же данным. Они просто отвечают на разные вопросы. Первая отвечает на вопрос «что машина делала в этот момент». Вторая, на вопрос «двигалась ли она хоть когда-то в трёх минутах вокруг события».

Разница между этими вопросами кажется мелкой ровно до того, как посмотришь на числа. Событие, случившееся через минуту после остановки, попадает в «стоянку» по первому определению и в «движение» по второму, и обе трактовки защитимы. А поскольку большая часть импульсов у нас пришлась именно на края поездок, на подход к машине, посадку и высадку, вся разбивка перевернулась.

Сравните с предыдущим разделом, эти два примера стоит держать рядом. Там завышенный процент дала перекошенная выборка, и лечилось это фильтрацией. Здесь выборка одна и та же, и лечить в ней нечего. «Стояла ли машина» звучит однозначно ровно до момента, пока не спросишь «в какой момент».

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

Дискретный вход без питания не читается

Отдельная причина, по которой наивная сверка вышла такой высокой, обнаружилась в поведении входа при заглушенной машине. При выключенном зажигании канал был равен единице в 8083 случаях из 8083, ровно сто процентов. При включённом он оказывался в нуле в 131 случае из 545, то есть примерно в четверти замеров.

Читается это однозначно: без питания вход не «показывает ноль» и не «показывает состояние узла», он показывает то, что показывает, и к положению ручника это отношения не имеет. Правило простое и переносится на любой дискретный вход любого прибора: показания имеют смысл только при работающем зажигании, остальное надо отфильтровать до всякой статистики.

Практический эффект тут сильнее, чем кажется. Машина стоит заглушенной большую часть недели, поэтому залипшее значение составляет подавляющее большинство записей. Оно и вытянуло наивную сверку к 91 проценту, и оно же заставляет при беглом взгляде счесть такой канал константой и списать его в мусор. Мы сначала так и сделали.

Соседство приняли за причину, дважды

История канала din5 короче, но обиднее, потому что мы прошли круг целиком и вернулись в исходную точку.

Шаг первый, версия «дверь». Канал сработал в момент заправки одновременно со скачком уровня топлива на adc5. Логика очевидная: подошёл, открыл лючок, залил, уровень вырос. Записали как дверь.

Шаг второй, версия «охрана». Разбор двух коротких окон показал, что импульсы din5 совпадают с постановкой и снятием с охраны на каналах din0 и din14. Совпадение выглядело убедительным, дверь из карты убрали.

Шаг третий, одна фраза. Владелец прочитал вывод и сказал: «я ни разу на заправке не глушил машину и не ставил её на охрану».

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

Шаг четвёртый, пересчёт по неделе. По выборке из 41 539 записей за семь суток картина оказалась такой:

  • 89 импульсов din5 за неделю, это 12,7 срабатывания в сутки;
  • 75 из 89 пришлись на стоянку, 8 на движение, 6 остались без навигации (разбивка по скорости в ближайшей навигационной записи, см. раздел выше);
  • ни одного при включённой охране.

Последний пункт и хоронит версию «охрана». Если бы канал показывал охрану, он обязан был бы срабатывать именно при её включении, а он не сработал так ни разу за неделю обычной езды. Обратите внимание, что этот пункт от определения движения не зависит вовсе: состояние охраны читается с каналов din0 и din14, а не со скорости, поэтому ноль остаётся нулём при любом способе счёта. Частота в 12,7 раза в сутки, со своей стороны, для двери правдоподобна: было бы 300, это не дверь, было бы 0,5, тоже не дверь.

Шесть импульсов без навигации заслуживают отдельной строки, потому что это не брак разметки, а знакомый симптом. В эти моменты трекер исправно слал телеметрию датчиков, но ни одной навигационной записи рядом не было, поэтому что делала машина, мы просто не знаем: ближайший валидный фикс отстоит от импульса на 6-28 минут. Пять из шести случаев пришлись на утро 1 сентября, сразу после ночного провала приёма длиной 215 минут, шестой лёг внутрь 95-минутного провала 3 сентября. Это та же слепота приёмника, о которой мы писали отдельно, и правильная подпись для такой корзины не «прочее», а «состояние неизвестно».

почему трекер показывает движение при потерянном GPS

Шаг пятый, объяснение ложного совпадения. Дверь открывают через несколько секунд после снятия с охраны и закрывают перед постановкой. Вот конкретная утренняя последовательность, совпавшая с рассказом владельца «подхожу, снимаю с охраны, открываю дверь, закрываю, завожу»: снятие с охраны в 03:25:53, дверь в 03:26:00. Семь секунд.

На коротком окне два звена одной цепочки неотличимы от причины и следствия. События в машине вообще идут цепочками, и разорвать цепочку можно только одним способом: найти случаи, где одно звено было, а другого не было. Неделя данных такие случаи дала, два коротких окна дать их не могли в принципе.

Побочный вывод, который мы забрали в продукт: раз за неделю обычной езды din5 не сработал при включённой охране ни разу, событие «дверь открыли, пока машина под охраной» можно строить как анти-угонный сигнал. На этих данных ложных срабатываний у него не было бы.

Предел разрешения, который надо назвать вслух

У метода есть жёсткое ограничение, и прятать его нечестно: события короче интервала передачи вы не поймаете никаким анализом.

Вот замеренные интервалы между снимками дискретных входов:

Окно (UTC) Снимков Медиана Минимум Максимум Длиннее 10 с
4 сентября, 09:00 - 14:15 340 59 с 1 с 179 с 92 %
5 сентября, 03:00 - 07:00 279 59 с 2 с 156 с 88 %

Событие из эталона «дверь открыта в 12:43:10, закрыта в 12:43:15» длилось пять секунд. В передачу оно не попадает в принципе, а серия «открыл, закрыл, открыл» склеивается в один импульс. Значит, наши 89 импульсов din5 за неделю это нижняя граница числа открываний, а не точный счёт, и любой отчёт «сколько раз открывали дверь» на таких данных надо строить с этой оговоркой.

Есть и вторая половина картины, обнадёживающая. Минимальные интервалы в 1 и 2 секунды показывают, что прибор шлёт не только по расписанию, но и по событию. Размапить, соответственно, можно то, что он сам считает событием, а всё остальное придётся ловить попаданием в регулярный снимок. Оговорка обязательна: это наблюдение из последовательностей изменений, а не отдельно измеренная статистика, и мы отмечаем разницу, потому что звучит оно как цифра, цифрой не являясь.

Чек-лист: как размапить свой канал и не обмануть себя

Это то, ради чего писалась статья, и это переносится на любой прибор, чего не скажешь о самой карте каналов.

1. Сначала базовая частота, потом процент совпадений. Посчитайте, сколько времени канал вообще проводит в каждом состоянии. Если 99 процентов времени он в единице, то совпадение в 94 процента хуже случайного. Сравнивать надо не с нулём, а с тем результатом, который дала бы пустая гипотеза «всегда единица».

2. Считайте по редкому состоянию. Вся проверяющая сила лежит в записях, где состояние было нетипичным. У нас всё решили 23 записи из 1319. Их надо посчитать отдельной строкой и указать n.

3. Сравнивайте состояния, а не окрестности событий. Рядом с любым событием в машине меняется всё сразу. Берите устойчивые участки, дальше минуты от любого переключения.

4. Отбрасывайте записи без питания. Дискретный вход при выключенном зажигании показывает не состояние узла, а собственное залипание.

5. Соседство не равно причине. Отличить их можно только там, где цепочка разрывается: ищите случаи, когда одно событие было, а другого не было. Если таких случаев в вашем окне нет, окно надо расширять, а не делать вывод.

6. Записывайте определение рядом с числом. Любая разбивка держится на определении, и разумных определений обычно два или три. У нас смена определения «машина двигалась» изменила одну из корзин в семь раз на одних и тех же данных. Число без определения нельзя ни проверить, ни повторить через месяц.

7. Сверяйте частоту события со здравым смыслом. 12,7 срабатывания в сутки похоже на дверь. 300 или 0,5 не похожи ни на что осмысленное. Грубая проверка, но отсекает большинство неверных гипотез за одну выборку.

8. Спрашивайте человека. В данных нет того, что владелец делал руками, а именно это и разрывает цепочки из пятого пункта.

9. Длина окна решает не всё, решает попадание в редкое событие. Наш канал adc3 за неделю переключился ровно три раза, и все три в одно утро в пределах сорока минут. Окно в двое суток, легшее мимо этого утра, честно покажет константу. «Не менялся ни разу» и «не менялся в отрезке, который я посмотрел» это разные утверждения.

10. Если ставите эксперимент, разносите действия во времени. Наш протокол для проверки в машине: по одному действию за раз, зажигание включено, держать состояние 40-60 секунд, между действиями не меньше двух минут. Смысл в том, чтобы соседство перестало быть возможным объяснением.

Отдельно про инструмент. В живом потоке около 7000 позиций в сутки, и глазами в нём не видно ничего. Мы смотрели через маленькую утилиту, которая показывает только изменения каналов, по строке на изменение: время, канал, было и стало. Ровный поток «ничего не изменилось» скрыт, иначе полезное в нём тонет. Написать такую вещь полдня, а без неё разбор просто не начинается.

Что получилось и что осталось необъяснённым

Итоговая карта каналов конкретного прибора StarLine выглядит так:

Канал Что означает Примечание
adc0 напряжение бортсети в милливольтах, около 12 900 это 12,9 В
adc1 температура салона градусы Цельсия
adc2 температура двигателя градусы Цельсия
adc5 уровень топлива проценты
din0, din14 охрана два канала под одно состояние
din8 зажигание
din10 двигатель запущен включается на 3-5 секунд позже зажигания, гаснет вместе с ним
din5 дверь версия менялась дважды, см. выше
din9 ручник, инвертированный (0 это поднят) читать только при включённом зажигании
adc3, adc6 смысл не установлен

Эта таблица не переносится на другого производителя. Она получена на одном приборе StarLine и годится ровно для него. Соседний прибор другой марки на том же протоколе может разложить те же входы в другом порядке, и никакого признака «эта карта вам не подходит» не появится, каналы просто будут показывать неправдоподобные вещи не там, где вы их ждёте.

adc3 и adc6 мы так и не размапили. Это не стыд, а нормальный итог: часть каналов после недели данных осталась необъяснённой, и писать в карту правдоподобную догадку хуже, чем оставить пустую клетку. Пустая клетка честно говорит «не знаем», а догадка через полгода будет выглядеть как факт.

Чего мы не утверждаем

Что эталон безупречен. История из приложения производителя пришла к нам расшифровкой скриншотов, сделанной другой сессией, самих скриншотов автор разбора не видел. Файл на 94 строки, из них 89 разбираются как события с отметкой времени, а 3 обрезаны и в расчёт не брались. Весь разбор опирается на чужую транскрипцию: если в ней ошибка, она проходит насквозь и никакой статистикой не ловится.

Что 85 процентов это много. Это результат на 75 замерах после жёсткой фильтрации. Он лучше, чем 91 процент на грязной выборке, именно потому, что проверяет гипотезу, а не перекос. Но n маленькое, и мы это знаем.

Что разбивка 75 на 8 единственно верная. Она верна для определения «скорость в ближайшей навигационной записи». По определению «максимум скорости в окне ±90 секунд» те же импульсы делятся как 29 на 54. Мы выбрали первое, потому что оно отвечает на вопрос про момент события, но это выбор, а не факт из данных.

Что метод годится для коротких событий. При медиане в 59 секунд между снимками всё, что короче минуты, ловится случайно или не ловится вовсе.

Что мы читаем CAN-шину. Не читаем. Речь только про аналоговые и дискретные входы самого трекера.

Частые вопросы

У меня в атрибутах пусто, значит прибор не шлёт датчики? Не обязательно. Сначала проверьте, доезжают ли они до базы: сравните сырой поток протокола за час с атрибутами позиций за тот же час. У нас данные приходили всё время и выбрасывались сервером, потому что в сенсорных пакетах нет координат. разбор патча, который это чинит

Сколько данных нужно, чтобы размапить канал? Зависит не от объёма, а от того, попало ли в выборку редкое состояние. Неделя реальной езды у нас сработала, два коротких окна дали ложный ответ. Если канал за всё окно ни разу не поменялся, это утверждение про окно, а не про канал.

Можно ли взять чужую карту каналов для того же производителя? Как гипотезу для проверки да, как готовый ответ нет. Мы свою карту получили на одном приборе и на другую марку не переносим. Проверять чужую карту надо тем же способом, каким строили бы свою: сверкой с событиями, которые вы можете подтвердить независимо.

Почему процент совпадения у меня высокий, а канал ведёт себя странно? Скорее всего, вы измеряете перекос выборки. Посчитайте, сколько времени канал проводит в каждом состоянии, и отдельно посчитайте совпадение на редком состоянии. Если на редком совпадения нет, высокий общий процент ничего не значит.

Две мои разбивки по одним и тем же данным расходятся, какая правильная? Скорее всего, обе, и вы сравниваете разные определения. Проверьте, в какой момент каждая из них смотрит на скорость: в момент события или в окне вокруг него. У нас эти два варианта дали 8 и 54 срабатывания в движении на одних и тех же 89 импульсах. Выбирать надо не «правильную», а ту, что отвечает на ваш вопрос, и подписывать её определением.

Что делать, если владелец недоступен и спросить не у кого? Ставить эксперимент по протоколу из десятого пункта чек-листа: по одному действию за раз, с паузами не меньше двух минут. Это дороже одного сообщения, но даёт ровно то, чего нет в пассивных данных, а именно разорванные цепочки событий.

Вывод

Главная ошибка в размапливании каналов не вычислительная. Мы ни разу не ошиблись в арифметике: 91 процент был посчитан верно, 20 из 23 по окрестностям посчитаны верно, совпадение din5 с охраной на двух окнах было настоящим, и обе разбивки 89 импульсов, отличающиеся в семь раз, тоже верны. Ошибка каждый раз пряталась не в вычислении, а в том, что рядом с числом не было написано, что именно оно измеряет и с чем его сравнивать.

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

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

Материал подготовлен на данных сервиса мониторинга «Точка GPS»: выгрузка боевой базы за 7 суток по одному устройству, 41 539 записей, сверка с историей из приложения производителя за 4 и 5 сентября 2026 года. Все проценты пересчитаны заново перед публикацией, правила отбора записей указаны рядом с цифрами.

другие технические разборы сервиса

GPS-мониторингдатчикителематикаStarLineEGTSTraccarразметка каналов

Читайте также