Мониторинг состояния автомобиля через мобильное приложение OBD-II

Проблема: как получить реальное состояние автомобиля через OBD-II Владельцы автопарков часто сталкиваются с ситуацией: машина на ходу, но расход топлива внезапно вырос, или загорелся Check Engine, а до ближайшего сервиса 500 км. Мониторинг через OBD-II даёт полную картину, но реализация приложени

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Мониторинг состояния автомобиля через мобильное приложение OBD-II
Простой
от 4 часов до 2 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1218
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    600

Проблема: как получить реальное состояние автомобиля через OBD-II

Владельцы автопарков часто сталкиваются с ситуацией: машина на ходу, но расход топлива внезапно вырос, или загорелся Check Engine, а до ближайшего сервиса 500 км. Мониторинг через OBD-II даёт полную картину, но реализация приложения упирается в кучу нюансов: протоколы адаптеров, фоновый опрос под Android и iOS, декодирование DTC. Мы решаем эти задачи 5+ лет и накопили более 50 проектов.

OBD-II порт есть в любом автомобиле, выпущенном с середины 1990-х. Через него ELM327-совместимый адаптер (Viecar, KONNWEI, Veepeak) по Bluetooth или Wi-Fi отдаёт PID-запросы — и приложение получает обороты двигателя, нагрузку, температуру охлаждающей жидкости, скорость, напряжение бортовой сети, коды ошибок DTC. Задача звучит просто, но реализация упирается в несколько нетривиальных моментов.

Какие данные можно получить через OBD-II?

Стандарт <cite>SAE J1979</cite> определяет Mode 01 (текущие данные) и Mode 03 (коды ошибок). Не все PID поддерживаются всеми автомобилями — сначала запрашиваем PID 0x00 (supported PIDs 01-20), затем 0x20, 0x40, 0x60, чтобы построить карту доступных параметров.

PID Параметр Формула
0x04 Нагрузка двигателя A * 100 / 255 %
0x05 Температура охлаждающей жидкости A - 40 °C
0x0C Обороты двигателя (256*A + B) / 4 RPM
0x0D Скорость A км/ч
0x11 Положение дроссельной заслонки A * 100 / 255 %
0x42 Напряжение бортовой сети (256*A + B) / 1000 В
0x5E Расход топлива (256*A + B) / 20 л/ч

Коды ошибок (Mode 03) возвращают список DTC в формате 2 байта на код. Первые два бита определяют систему: 00 — двигатель (P), 01 — трансмиссия (P1xxx), 10 — шасси (C), 11 — кузов (B). Декодирование кодов в читаемые описания требует базы данных — открытые варианты: CSV из репозитория hfreire/ecu-can-bus-decoder или платная база от OBD Solutions.

Какие ошибки возникают при работе с ELM327 и как их избежать?

Адаптеры ELM327 говорят через AT-команды поверх последовательного порта. Подключение через Classic Bluetooth — BluetoothSocket на Android с UUID 00001101-0000-1000-8000-00805F9B34FB (SPP профиль). На iOS Classic Bluetooth для сторонних приложений закрыт; единственный путь — BLE ELM327 адаптеры (Viecar EA400-P, OBDLink CX) через Core Bluetooth.

Самая частая ошибка при работе с ELM327 — отправить следующий PID-запрос, не дождавшись > (prompt) в ответе. Адаптер буферизует команды непредсказуемо, и вместо значения RPM приложение получает ? или NO DATA. Правильный цикл опроса — последовательный, с таймаутом ожидания промпта ~200 мс:

class OBDConnection(private val socket: BluetoothSocket) { private val input = socket.inputStream.bufferedReader() private val output = socket.outputStream suspend fun sendCommand(command: String): String = withContext(Dispatchers.IO) { output.write("$command\r".toByteArray()) val sb = StringBuilder() var char: Int while (input.read().also { char = it } != -1) { val c = char.toChar() sb.append(c) if (c == '>') break } sb.toString().trim().removeSuffix(">").trim() } suspend fun readPID(mode: String, pid: String): String { return sendCommand("$mode$pid") } } 

Инициализация адаптера перед опросом обязательна: ATZ (сброс), ATE0 (отключить эхо), ATL0 (без переноса строк), ATSP0 (автовыбор протокола). Без ATE0 парсить ответы значительно сложнее — команда возвращается в потоке вместе с ответом.

Использование корутин с асинхронными таймаутами сокращает время полного цикла опроса в 2 раза по сравнению с блокирующими потоками, особенно при опросе 15+ PID.

Как происходит процесс разработки?

Мы подходим к проекту системно: сначала анализируем требования и совместимость с автомобилями заказчика, проектируем архитектуру, затем реализуем на Kotlin/Android или Swift/iOS. После тестирования на реальных адаптерах публикуем приложение в сторах. Весь процесс включает:

  1. Аналитика и составление карты PID для целевых авто
  2. Проектирование модулей: OBD-соединение, база данных, уведомления
  3. Реализация с использованием Jetpack Compose или SwiftUI
  4. Тестирование на физических адаптерах (несколько моделей)
  5. Деплой в Google Play и App Store

Архитектура приложения

На Android — foreground service с низким приоритетом уведомления (иначе Android 8+ убьёт процесс через несколько минут). Service управляет подключением к адаптеру и циклом опроса, UI подписывается через StateFlow. На iOS — foreground-only, поскольку Core Bluetooth работает в фоне только для Heart Rate и некоторых других профилей; опрос идёт пока экран активен.

Параметр Android iOS
Подключение OBD-II Classic Bluetooth (SPP) BLE (только BLE-адаптеры)
Фоновый опрос Foreground service Только при активном экране
Push-уведомления Firebase APNs
Инструменты Kotlin, Jetpack Compose Swift, SwiftUI

Частота опроса: RPM и скорость — каждые 100-200 мс, температура и расход — каждые 1-2 секунды. Не опрашивайте все PID с одинаковой частотой — это перегружает адаптер и заметно замедляет шину CAN. Для push-уведомлений о приближающемся ТО используем календарь и одометр.

Что входит в нашу работу

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

Дополнительно: TPMS и камера салона

Датчики давления шин (TPMS) на большинстве автомобилей работают через отдельный радиочастотный протокол (315/433 МГц) и не доступны через OBD-II. Для их мониторинга нужны внешние BLE-датчики (например, Meneea, Fobo Tire Plus), которые стикуются на вентиль и передают давление и температуру. Интегрируются через стандартный Core Bluetooth / Android BLE API.

Разработка базового мобильного приложения с подключением к ELM327, мониторингом 10-15 PID и чтением DTC: 3-4 недели. Полноценное приложение с историей поездок, геолокацией, расчётом расхода топлива и TPMS: 6-8 недель. Стоимость рассчитывается индивидуально после уточнения целевых платформ и списка поддерживаемых параметров. Свяжитесь с нами, чтобы обсудить ваш проект и получить предварительную оценку.

Получите консультацию по мониторингу автопарка — мы поможем выбрать оптимальный набор датчиков и адаптеров.