Отправляем данные с модуля OBD2 автомобиля в Home Assistant

Недавно я установил в свой автомобиль головное устройство на Android. Уже имея на тот момент модуль OBD2 и зная о существовании такой программы как Torque, я задался вопросом, а можно ли отправлять данные снимаемые Torque в систему домашней автоматизации Home Assistant. Как оказалось, можно. Давайте попробуем это сделать.


Что нам понадобится


Естественно, нам понадобится сам модуль OBD2. Выглядеть они могут по разному. И стоить по разному. Главное условие беспроблемной работы, чтобы они были построены на оригинальном чипе PIC18F25K80 с прошивкой v1.5. Так же нам необходимо, чтобы у нас был интернет канал для передачи данных в Home Assistant. Это может быть смартфон с установленными приложениями и с подключением к интернет или Android магнитола с подключением к интернету по Wi-Fi c телефона или по USB модему. И парочка приложений.


Необходимо оборудование:


Автомобильный Bluetooth или WI-FI модуль ODB2.

Android устройство (8 или более поздней версии).

Устройство передачи данных (может выступать само устройство на Android или USB модем).


Необходимо программное обеспечение:


Llamalab Automate. Стоит программа недорого. Есть и патченная версия на четырепда. Если вы никогда не слышали об этом приложении раньше, это визуальный инструмент сценариев. Оно похоже на приложение под названием Tasker. Но если вы выберете Llamalab Automate, вы сможете скачать заранее подготовленный скрипт, чтобы захватывать данные ODB2 и отправлять их в Home Assistant, что сильно облегчит жизнь.


Torque pro. лайт версию не пробовал, не знаю. Также есть версия на четырепда. Очень популярное приложение, которое работает с модулями ODB2. Можно использовать для отображения данных в самом приложении, но для этого проекта мы будем использовать его возможности записи данных.


MQTT Broker (mosquito или др.). Вполне вероятно, что на вашем сервере Home Assistant уже запущен сервер MQTT, но если нет, то вам нужно установить MQTT сервер и настроить его в Home Assistant.


Шаг 1: установка в автомобиль адаптера ODB2 и программного обеспечения Torque:


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


Установка приложения Torque:

Установите на ваше устройство приложение Torque. Включите зажигание автомобиля, чтобы обеспечить питание ODB2 адаптеру, а затем на вашем Android-устройстве перейдите в Настройки Bluetooth и выполните поиск и сопряжение с ODB2 адаптером.


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


Теперь, когда у нас есть успешное соединение, нам нужно настроить ведение журнала. Перейдите в раздел «Настройки» и выберите «Запись и выгрузка журналов». Выполните следующие настройки:


Выберите, какие данные записывать:

Первое, что вы должны сделать, это выбрать набор данных, который вы хотите записывать. Для этого переходим в пункт «Что записывать». Эти наборы данных называются PID в протоколе ODB2. Конкретный набор данных (PID), доступный для вашего автомобиля, будет зависеть от того, что производитель автомобиля готов предоставить через интерфейс ODB2. Приложение Torque выделяет доступные PID в светло-зеленом цвете. После выбора PID возвращаемся в настройки.



Далее в настройках выбрать:

Синхронизация журналов: Выкл

Интервал записи журналов: выберите 5 секунд.

Начинать журнал при запуске Torque: Да

Только при подключенном OBD: Да

Автозапись данных GPS: Да

Создавать новый журнал: Нет

Отправляем данные с модуля OBD2 автомобиля в Home Assistant
Отправляем данные с модуля OBD2 автомобиля в Home Assistant

Другие параметры нам не интересны, но можете в них покопаться. Далее вернитесь к основным настройкам, выберите «Панель приборов" и выполните следующую настройку:


Запуск Torque после перезагрузки: Да


Остальные параметры нас так же не интересуют.


Итак, мы установили адаптер ODB2 и подключили его к устройству Android. Мы установили приложение Torque и настроили его для подключения к адаптеру ODB2 и ведения журнала некоторых данных непрерывно, чтобы всегда работать в фоновом режиме (даже после перезагрузки).


Для следующего шага нам нужно подготовить Home Assistant к получению данных с внешнего устройства, и для этого мы будем использовать "Long Lived Tokens" или "Долгосрочные токены доступа".


Примечание:  Просто создайте токен доступа в Home assistant и скопируйте строку, для последующего использования в настройках скрипта.


Шаг 3: Установка Llamalab Automate:


На вашем устройстве Android установите Llamalab Automate из магазина Google play или четырепда.


Примечание: Работать со сценарием сможет только полная (Premium) версия программы.


Затем перейдите в раздел Community в приложении (программа может попросить доустановить некоторые модули, например Automate Network permissions.) и найдите "Car Telemetry to Home Assistant" (автор Robert Cunningham). Загрузите сценарий, перейдите в него, дайте все привелегии и запустите его кнопкой «Start».

Отправляем данные с модуля OBD2 автомобиля в Home Assistant

После запуска скрипт попросит ввести вас такие данные как название автомобиля (обязательно запомните что ввели, нам это далее понадобится), адрес сервера Home Assistant и токен, который мы ранее создали в HA и записали.


Адрес сервера вводим в таком виде: https://[ваш адрес сервера Home Assistant]:8123


Примечание 1: мой сервер Home Assistant подключен с SSL. Ваш может быть и http


Примечание 2: скрипт будет отправлять данные на https://[ваш адрес сервера Home Assistant]:8123/api/service/mqtt/publish


Примечание 3: Если вы не в первый раз запускаете скрипт и хотите изменить информацию, перейдите в каталог /Torqlogs на вашем устройстве Android и удалите файл car_config.


Шаг 3: Тестируем:


Итак, если все прошло хорошо, то после ввода настроек данные должны начать поступать. Если в логах Car Telemetry to Home Assistant вы видите сообщения типа "Rest Post success:Torque data:200", то это означает, что сообщения поступают на ваш сервер Home Assistant правильно. Проверьте ваш сервер MQTT и найдите topic c названием ‘devices/[название автомобиля]/torque’. Он должен содержать JSON-пакет данных программы Torque от вашего автомобиля. Если вы видите в логах Car Telemetry to Home Assistant сообщения об ошибках, вот несколько советов, которые могут помочь в решении проблем:


Помните, что если вы не используете SSL в Home Assistant, то адрес сервера должен начинаться с "http", а не "https".

Проверьте что программа Torque создает лог-файл с именем Torque.log

Если Llamalab Automate не может подключится к серверу Home Assistant, а в самом Home Assistant появилось сообщение о неудачном подключении с внешнего ip, то вводим токен следующим образом «Bearer токен».


Шаг 4: Конфигурация Home Asisstant


Последний шаг известен каждому пользователю Home Assistant. Нам нужно добавить сенсор в configuration.yaml чтобы получать данные.


- platform: mqtt

name: "Название_автомобиля Torque"

state_topic: "devices/название_автомобиля/torque"

value_template: "{{ state_attr(‘sensor.название_автомобиля_torque', 'GPS Time') }}"

json_attributes_topic: "devices/название_автомобиля/torque"


Примечание: Замените «название_автомобиля" на то имя что вы дали своему автомобилю в скрипте в Llamalab Automate.


В Home Assistant далее это должно выглядеть примерно так:

Отправляем данные с модуля OBD2 автомобиля в Home Assistant

На этом все. Далее можно красиво это все выводить в Grafana с помощью InfluxDB. Примерно вот так:

Отправляем данные с модуля OBD2 автомобиля в Home Assistant

Но с Grafana я пока не совсем разобрался, так что продолжение поста придется подождать.