Высокопроизводительный телематический шлюз ELM327 / OBD-II на Rust
Низкоуровневый сервер-мультиплексор для Android. Изолирует сторонний диагностический софт от медленных физических задержек CAN-шины, формирует строгие тактовые сетки опроса (WFQ) и транслирует кэшированные параметры клиентам за 1–2 мс — как на одном устройстве, так и по локальной сети или через Tailscale/VPN по всему миру.
Базовый функционал и кастомные планы опроса
Мобильное приложение PL.OBD2
Полнофункциональный шлюз-мультиплексор для повседневной эксплуатации, трек-дней и диагностики без ограничений по времени.
- Стабильный темп опроса до 60 PID/сек;
- Полная поддержка 4 транспортов: Classic BT (SPP), BLE GATT, Wi-Fi, USB OTG;
- Мультиплексирование потоков (Torque, CarScanner, RealDash, RaceChrono);
- Автоматическое снятие Паспорта связки и бенчмарк групп 1..6;
- Локальное вещание и трансляция по сети через защитный PIN-Gate;
- 20000+ расшифровок кодов с наименованиями для 40+ марок автомобилей.
Ручная сборка планов опроса
Оптимизированный веб-построитель планов с возможностью тонкой ручной настройки параметров и тактовой сетки опроса шины.
- Преодоление лимита 60 PID/с до предельных цифр паспорта адаптера (до 95.5+ PID/сек);
- Опрос редких показателей путем расширения циклов карусели без замедления скоростного пула;
- Ручная вставка дилерских величин Mode 22 с назначением индивидуальных блоков (Target) и адресов ответа (Reply);
- Экспорт зашифрованных планов .plp с привязкой к аппаратному ключу RSA-2048 устройства;
- Описания-расшифровки кодов ошибок и варианты решения проблемы.
Три шага инициализации Prometrius Link
Архитектура шлюза разделяет личность автомобиля, адаптер и профиль опроса. Паспорт привязывается к уникальному ключу MAC|протокол|UID_авто, исключая смешивание калибровок между машинами.
Выбор устройства
- В главном окне выберите или добавьте ваш Автомобиль (генерируется UUID v7).
- Нажмите на поле Адаптер и укажите тип связи:
BT,BLE,Wi-FiилиUSB. - Для Classic Bluetooth поддерживается автоподстановка PIN (1234/0000), для BLE — опция «Скорость BLE» (приоритет
CONNECTION_PRIORITY_HIGH), для USB OTG — прямой bulk-доступ к чипам CH340, CP210x, FTDI, PL2303.
Калибровка связки
- Нажмите [СТАРТ]. Запустится процесс знакомства (команды
ATZ,ATI,AT@1,ATDPN). - Ядро прогоняет измерительную карусель однородных групп (размерности 1..6) и замеряет реальный физический предел шины (до 95.5 PID/сек).
- По завершении формируется эталонный Паспорт связки с фиксацией ответивших параметров (кнопка [ПАСПОРТ]). При повторных запусках знакомство пропускается.
Выбор показателей
- Перейдите на вкладку «ПОКАЗАТЕЛИ». Автоматически активируется профиль текущей пары.
- Отметьте необходимые датчики чекбоксами и задайте индивидуальную частоту (Гц).
- Шлюз строго контролирует Бюджет шины (например: «Выбрано: 40 из 54 pid/c»). Превышение лимита аппаратно блокируется во избежание просадок и очередей.
Создание интерфейсов и подключение клиентов
Prometrius Link изолирует адаптер и выступает мульти-сервером. Подключение сторонних приложений осуществляется не только по локальному адресу 127.0.0.1: вы можете подключить головное устройство по общей Wi-Fi сети автомобиля или транслировать живой поток телеметрии из любой точки мира через Tailscale, WireGuard или любой VPN-меш. Безопасность внешних подключений гарантирует встроенный PIN-Gate.
Настройка вкладки «ИНТЕРФЕЙСЫ»
В приложении откройте вкладку «ИНТЕРФЕЙСЫ» → нажмите [ДОБАВИТЬ] и выберите формат вещания:
- RealDash — сетевой порт по умолчанию
5558(бинарные 16-байтные TCP-кадры0x11223344). Нажмите [Сохранить RealDash XML] для генерации файла конфигурации приборов. - RaceChrono — порт
5559(строки телеметрии$RC310 Гц NMEA). Нажмите [Сохранить легенду] для назначения каналов логгера. - OBD2 / ELM327 — сетевой порт
35000или5557(полная эмуляция протокола ELM327 v1.5 по TCP для Torque Pro и Car Scanner). - SimplOBD2 — порт
5560для текстового потока сырых значений.
Подключение Torque
- Откройте Настройки → Настройки адаптера OBD.
- Тип подключения: укажите Wi-Fi.
- IP-адрес: 127.0.0.1 (на одном устройстве), IP в Wi-Fi сети автомобиля или виртуальный IP шлюза в Tailscale / VPN.
- Порт: укажите 35000 (или назначенный порт OBD2).
- Запросы исполняются мгновенно из кэша памяти за 1–2 мс.
Подключение Car Scanner
- Откройте Настройки → Подключение.
- Тип подключения: укажите Wi-Fi.
- IP-адрес: 127.0.0.1, локальный адрес сети или IP из Tailscale.
- Порт: 35000 (или назначенный порт OBD2).
- Шлюз эмулирует ответы настоящего адаптера: статус
ELM327 v1.5 (Prometrius Cache)с поддержкойATH1.
RealDash & RaceChrono
- RealDash: Garage → Connections → RealDash CAN → TCP-клиент → укажите IP:5558. Импортируйте выгруженный XML.
- RaceChrono: Settings → Vehicle profile → DIY Device → TCP client → IP:5559 ($RC3 10 Гц). Доступно удаленное наблюдение за болидом на треке из любой точки мира.
Инженерные решения ядра Prometrius
Ускорение опроса в 2–4 раза
Инициализация адаптера по протоколу ATSP6 с отключением эхо-запросов (ATE0), форматирования (ATL0, ATS0) и активацией агрессивных адаптивных таймингов (ATAT2). Группировка до 6 PID в одном фрейме повышает темп съема до 60–95.5 PID/сек.
Мультиплексирование потоков
Ядро шлюза работает как мультиплексор, позволяя нескольким клиентам (Torque, CarScanner, RealDash) одновременно подключаться к одному адаптеру. Данные мгновенно раздаются из локального кэша памяти (Snapshot) без потери скорости и пропусков кадров.
Автономный Foreground Service
Ядро шлюза оформлено как системная служба типа connectedDevice с удержанием процессора через PARTIAL_WAKE_LOCK. Связь с бортовыми системами не разрывается при сворачивании приложения и выключении экрана магнитолы.
Онлайн-построитель планов опроса и генератор .plp
Инструмент ручной сборки планов опроса. Позволяет точно распределять PIDs по тактам отправки, объединять запросы в мульти-группы до 6 PIDs, выделять разовые Init-такты и настраивать опрос кастомных PIDs Mode 22. На выходе формируется зашифрованный бинарный план .plp, привязанный к асимметричному ключу RSA-2048 вашего устройства из Паспорта.
2.0Hz: 5 групп (5 PIDs) — 7DF
1.0Hz: 1 такт (ATF Mode 22) — 7E1
| Цикл | Target | Mode | PIDs (Группа) |
|---|---|---|---|
| Init | 7DF | 01 | 0105, 010F (Разовый опрос ECT, IAT) |
| 0 | 7DF | 01 | 0104, 010C, 010D, 0111, 0143, 0105 (6/6) |
| 1 | 7E1 | 22 | 220109 (Температура масла АКПП ATF) |
| 2 | 7DF | 01 | 0104, 010C, 010D, 0111, 0143, 0123 (6/6) |
.plp в приложение осуществляется бесшовно. Дешифрование выполняется аппаратно внутри защищенного хранилища Android KeyStore.