Команды бота

Редактирование файла

Создать автоматизацию

Создать правило автоотправки

OBDAssist

OBD Assist

Android приложение для диагностики автомобилей по протоколу OBD2.

Возможности

  • 📱 Проектный подход: Создавайте отдельные проекты для каждого автомобиля
  • 🔌 Подключение к OBD2: Работа с ELM327 адаптерами через Bluetooth
  • 🔍 Сканирование ошибок: Чтение и стирание кодов ошибок (DTC)
  • 📊 Чтение параметров: Получение данных о работе двигателя и систем автомобиля
  • 🤖 AI Assist: Интеллектуальный анализ данных с помощью AI
  • 💾 Сохранение данных: Все данные сохраняются локально в базе данных

Требования

  • Android 8.0 (API 26) или выше
  • Bluetooth адаптер
  • ELM327 OBD2 адаптер с поддержкой Bluetooth

Установка

  1. Клонируйте репозиторий
  2. Откройте проект в Android Studio
  3. Синхронизируйте Gradle зависимости
  4. Соберите и установите приложение на устройство

Использование

Создание проекта

  1. На главном экране нажмите кнопку "+"
  2. Заполните информацию об автомобиле (марка, модель, год, VIN)
  3. Нажмите "Сохранить"

Подключение к OBD2

  1. Откройте проект
  2. Нажмите "Подключиться"
  3. Выберите ваш ELM327 адаптер из списка Bluetooth устройств
  4. Дождитесь подключения

Чтение ошибок

  1. После подключения нажмите "Читать ошибки"
  2. Приложение просканирует систему и отобразит все найденные коды ошибок
  3. Для стирания ошибок нажмите "Стереть ошибки"

Чтение параметров

  1. Нажмите "Читать параметры"
  2. Приложение получит доступные параметры OBD2 и отобразит их значения

Описание неисправности

  1. Нажмите "Описать неисправность"
  2. Введите описание проблемы
  3. Сохраните

AI Assist

  1. Нажмите кнопку "AI Assist"
  2. Приложение отправит все данные проекта (информацию об автомобиле, ошибки, параметры, описание проблемы) в AI для анализа
  3. Получите детальное заключение с рекомендациями по диагностике и ремонту

Примечание: Для работы AI Assist необходимо настроить API ключ bothub в коде приложения (файл AIService.kt или через настройки приложения).

Демо-режим

Приложение включает демо-режим для тестирования функционала без подключения к реальному OBD2 адаптеру:

  1. На главном экране нажмите кнопку "Демо" в верхней панели
  2. Будет создан тестовый проект с:
    • Произвольным автомобилем (марка, модель, год, VIN)
    • Случайными кодами ошибок OBD2
    • Набором параметров двигателя
    • Описанием типичной неисправности
  3. Откройте созданный проект и попробуйте функцию AI Assist

Это позволяет протестировать анализ данных без необходимости подключения к реальному автомобилю.

Структура проекта

app/
├── src/main/java/com/obdassist/
│   ├── data/              # Модели данных и база данных
│   ├── obd2/              # OBD2 сервис и протоколы
│   ├── repository/        # Репозитории данных
│   ├── ai/                # AI сервис для анализа
│   └── ui/                # UI компоненты (Compose)
│       ├── screen/        # Экраны приложения
│       ├── component/     # Переиспользуемые компоненты
│       ├── viewmodel/     # ViewModels
│       └── theme/         # Тема приложения

Технологии

  • Kotlin — язык программирования
  • Jetpack Compose — современный UI фреймворк
  • Room — локальная база данных
  • Coroutines — асинхронное программирование
  • Navigation Compose — навигация между экранами
  • Retrofit — для API запросов (AI)

Разрешения

Приложение требует следующие разрешения:

  • BLUETOOTH — для подключения к OBD2 адаптеру
  • BLUETOOTH_ADMIN — для управления Bluetooth соединением
  • BLUETOOTH_CONNECT — для подключения к устройствам (Android 12+)
  • BLUETOOTH_SCAN — для сканирования устройств (Android 12+)
  • INTERNET — для работы AI Assist

Настройка AI Assist

Для использования AI Assist необходимо:

  1. Получить API ключ от bothub
  2. В файле app/src/main/java/com/obdassist/ui/viewmodel/ProjectDetailViewModel.kt обновите создание AIService:
private val aiService = AIService("your-bothub-api-key-here")

Или передайте ключ через переменную окружения или настройки приложения.

Параметры bothub API:

  • Base URL: https://bothub.chat/api/v2/openai/v1
  • Модель: gpt-4.1
  • Температура: 0.7
  • Макс. токенов: 1200
  • Макс. длина текста: 5000 символов

Без API ключа: Приложение будет показывать демо-ответ с базовой информацией.

Лицензия

Этот проект создан для образовательных целей.

Поддержка

При возникновении проблем создайте issue в репозитории проекта.

CHANGELOG_2025-12-30.md

Обновления OBD Assist — 30.12.2025

Выполненные изменения

1. ✅ Изменение расположения и названий кнопок

Файл: ProjectDetailScreen.kt

Убран заголовок "Действия"

Кнопки расположены по две в ряд с новыми названиями:

  • Ряд 1:
    • Ошибки (было: Читать ошибки)
    • Стереть (было: Стереть ошибки)
  • Ряд 2:
    • Параметры (было: Читать параметры)
    • Отчет (было: Сохранить состояние)
  • Ряд 3:
    • Проблема (было: Описать неисправность)
    • AI ассистент (было: AI Assist)

Используется компонент Row с weight(1f) для равномерного распределения кнопок.

2. ✅ Обновление диалога AI

Файл: ProjectDetailScreen.kt

Изменения:

  • Заголовок диалога: "AI ассистент" (было: "AI SCAN", ещё раньше: "AI Анализы")
  • Кнопка анализа: "Анализ" (было: "Проанализировать")
  • Кнопка закрытия: "Закрыть"

Добавлена информация о машине в детальном окне анализа:

Теперь перед результатом AI анализа отображается:

  1. Информация о машине:

    • Марка, модель, год
    • VIN (если указан)
  2. Коды ошибок:

    • Список всех найденных ошибок с описаниями
    • Количество ошибок
  3. Параметры OBD2:

    • Список всех считанных параметров со значениями
    • Количество параметров
  4. Описание проблемы (если указано)

  5. Разделитель (Divider)

  6. AI Анализ — результат работы нейросети

3. ✅ Исправление кодировки русского языка

Файлы: ProjectDetailViewModel.kt

Кодировка UTF-8 уже была правильно настроена в методах:

  • exportAnalysisToFile (строка 317): content.toByteArray(Charsets.UTF_8)
  • exportStateToFile (строка 391): content.toByteArray(Charsets.UTF_8)

Русские символы теперь корректно сохраняются в текстовые файлы.

4. ✅ Добавление логирования для диагностики краша при подключении

Файлы:

  • OBD2Service.kt
  • ProjectDetailViewModel.kt

OBD2Service.kt — детальное логирование процесса подключения:

- Начало подключения к устройству (name + address)
- Создание RFCOMM сокета
- Установка Bluetooth соединения
- Инициализация потоков ввода/вывода
- Каждая команда инициализации ELM327:
  - ATZ (сброс)
  - ATE0 (отключение эха)
  - ATL0 (отключение перевода строки)
  - ATH0 (отключение заголовков)
  - ATSP0 (автоопределение протокола)
- Успешное завершение или ошибка с полным стеком

ProjectDetailViewModel.kt — логирование на уровне ViewModel:

- Попытка подключения
- Успешное подключение
- Ошибка подключения с полным сообщением

Как использовать логи для диагностики:

  1. Подключите устройство к компьютеру
  2. Откройте Android Studio → Logcat
  3. Фильтруйте по тегу: OBD2Service или ProjectDetailViewModel
  4. При нажатии кнопки "Подключиться" вы увидите детальную последовательность действий
  5. В случае краша вы увидите точное место и причину ошибки

Внешний вид после изменений

Секция с кнопками (без заголовка):

┌─────────────────────────────────────┐
│  [Ошибки]         [Стереть]         │
│  [Параметры]      [Отчет]           │
│  [Проблема]       [AI ассистент]    │
└─────────────────────────────────────┘

Диалог "AI ассистент"

┌─────────────────────────────────────┐
│  AI ассистент                    ✕  │
├─────────────────────────────────────┤
│  [Список сохранённых анализов]      │
│                                     │
│  [Анализ]  [Закрыть]                │
└─────────────────────────────────────┘

Детальный просмотр анализа

┌─────────────────────────────────────┐
│  Анализ от 30.12.2025 21:50      ✕  │
├─────────────────────────────────────┤
│  Информация о машине:               │
│  Toyota Camry (2015)                │
│  VIN: XXXXXXXXXXXXXXXXX             │
│                                     │
│  Коды ошибок (2):                   │
│  • P0420: Катализатор...            │
│  • P0171: Слишком бедная смесь      │
│                                     │
│  Параметры (5):                     │
│  • Температура ОЖ: 85 °C            │
│  • Обороты двигателя: 850 RPM       │
│  ...                                │
│                                     │
│  Описание проблемы:                 │
│  Машина глохнет на холостых...      │
│  ─────────────────────────────      │
│  AI Анализ:                         │
│  [Результат анализа от AI]          │
│                                     │
│  [Экспорт]  [Закрыть]               │
└─────────────────────────────────────┘

Проверка работы

Тестирование UI:

  1. Откройте проект диагностирования
  2. Проверьте, что кнопки расположены по две в ряд БЕЗ заголовка
  3. Проверьте новые названия кнопок
  4. Нажмите кнопку "AI ассистент" → проверьте, что диалог называется "AI ассистент"
  5. Создайте анализ → откройте его → проверьте наличие всей информации о машине

Тестирование подключения:

  1. Откройте Android Studio → Logcat
  2. Используйте фильтр: tag:OBD2Service OR tag:ProjectDetailViewModel
  3. Нажмите "Подключиться" в приложении
  4. Наблюдайте за логами:
    • Если подключение успешно: вы увидите все этапы инициализации
    • Если краш: вы увидите точное место и причину ошибки

Тестирование сохранения файлов:

  1. Считайте параметры и ошибки
  2. Нажмите "Отчет"
  3. Откройте файл в текстовом редакторе
  4. Проверьте, что русские символы отображаются корректно

Возможные проблемы и решения

Проблема 1: Краш при подключении

Что проверить в логах:

  • SecurityException → не предоставлены Bluetooth разрешения
  • IOException → проблемы с физическим подключением к адаптеру
  • NullPointerException → проблема с устройством или сокетом

Решение:

  • Проверьте разрешения Bluetooth в AndroidManifest.xml
  • Убедитесь, что OBD адаптер включен и сопряжен
  • Попробуйте переподключить адаптер

Проблема 2: Русские символы отображаются как "?"

Что проверить:

  • Убедитесь, что редактор поддерживает UTF-8
  • Проверьте, что файл открыт с правильной кодировкой

Решение уже применено в коде (Charsets.UTF_8)

Дополнительная информация

Структура кода:

app/src/main/java/com/obdassist/
├── ui/
│   ├── screen/
│   │   └── ProjectDetailScreen.kt  (UI кнопок и диалогов)
│   └── viewmodel/
│       └── ProjectDetailViewModel.kt  (бизнес-логика)
├── obd2/
│   └── OBD2Service.kt  (работа с OBD адаптером)
└── ...

Все изменения внесены и готовы к тестированию!

USAGE.md

Инструкция по использованию OBD Assist

Быстрый старт

1. Подготовка оборудования

  • Убедитесь, что у вас есть ELM327 OBD2 адаптер с поддержкой Bluetooth
  • Подключите адаптер к диагностическому разъему автомобиля (обычно находится под рулевой колонкой)
  • Включите зажигание автомобиля (не обязательно заводить двигатель)

2. Сопряжение Bluetooth устройства

  1. Откройте настройки Bluetooth на вашем Android устройстве
  2. Найдите ваше ELM327 устройство (обычно называется "OBD" или "ELM327")
  3. Сопрягите устройства (пароль обычно: 1234 или 0000)

3. Создание проекта

  1. Запустите приложение OBD Assist
  2. Нажмите кнопку "+" в правом нижнем углу
  3. Заполните информацию об автомобиле:
    • Марка (например: Toyota)
    • Модель (например: Camry)
    • Год выпуска (например: 2020)
    • VIN (опционально, можно прочитать из OBD)
  4. Нажмите "Сохранить"

4. Подключение к OBD2

  1. Откройте созданный проект
  2. Нажмите кнопку "Подключиться"
  3. Выберите ваше ELM327 устройство из списка
  4. Дождитесь сообщения "Подключено"

5. Чтение ошибок

  1. После успешного подключения нажмите "Читать ошибки"
  2. Приложение просканирует систему и отобразит все коды ошибок (DTC)
  3. Каждая ошибка будет показана с кодом и описанием

Стирание ошибок:

  • Нажмите "Стереть ошибки" для очистки кодов ошибок из памяти ЭБУ
  • Внимание: Стирание ошибок не исправляет проблему, только очищает память!

6. Чтение параметров

  1. Нажмите "Читать параметры"
  2. Приложение получит доступные параметры OBD2:
    • Обороты двигателя
    • Скорость автомобиля
    • Температура охлаждающей жидкости
    • Положение дроссельной заслонки
    • И другие параметры

7. Описание неисправности

  1. Нажмите "Описать неисправность"
  2. Введите подробное описание проблемы:
    • Какие симптомы наблюдаются
    • Когда проблема появилась
    • При каких условиях проявляется
  3. Нажмите "Сохранить"

8. AI Assist — Анализ данных

  1. Убедитесь, что вы:

    • Подключены к OBD2
    • Прочитали ошибки (если есть)
    • Прочитали параметры
    • Описали неисправность (опционально)
  2. Нажмите кнопку "AI Assist"

  3. Приложение отправит все данные в AI для анализа

  4. Получите детальное заключение с:

    • Интерпретацией кодов ошибок
    • Анализом параметров
    • Возможными причинами проблем
    • Рекомендациями по диагностике и ремонту
    • Приоритетностью действий

Советы по использованию

Оптимальные условия для диагностики

  • Двигатель должен быть прогрет до рабочей температуры
  • Все системы должны быть включены (кондиционер, фары и т.д.)
  • Автомобиль должен быть на ровной поверхности

Интерпретация кодов ошибок

Коды ошибок OBD2 имеют формат: P0XXX

  • P — Система управления двигателем (Powertrain)
  • C — Система шасси (Chassis)
  • B — Кузов (Body)
  • U — Сеть автомобиля (Network)

Первая цифра после буквы:

  • 0 — Общий код (SAE)
  • 1 — Код производителя

Частые проблемы

Не удается подключиться:

  • Убедитесь, что Bluetooth включен
  • Проверьте, что устройство сопряжено
  • Убедитесь, что адаптер подключен к автомобилю
  • Попробуйте перезапустить приложение

Нет данных:

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

Медленная работа:

  • OBD2 протокол работает медленно, это нормально
  • Чтение всех параметров может занять несколько минут

Настройка AI Assist

Для использования AI Assist необходимо настроить API ключ OpenAI:

  1. Получите API ключ на https://platform.openai.com/
  2. В файле AIService.kt замените apiKey на ваш ключ
  3. Или добавьте настройки в приложение для ввода ключа

Примечание: Без API ключа AI Assist будет показывать демо-ответ с базовой информацией.

Безопасность

  • Не стирайте коды ошибок без понимания причины
  • AI рекомендации носят информационный характер
  • Всегда консультируйтесь с профессиональным механиком для серьезных проблем
  • Приложение не заменяет профессиональную диагностику

Поддержка

При возникновении проблем:

  1. Проверьте подключение Bluetooth
  2. Убедитесь, что адаптер совместим с вашим автомобилем
  3. Проверьте версию протокола OBD2 вашего автомобиля
  4. Создайте issue в репозитории проекта

Edit Message

Attachments:

AI Assistant

Enter your instruction to edit the text: