Компонент интеграции счётчиков ресурсов от Элехант с Home Assistant


Опубликовано 14.02.2024 19:11 | Автор: Admin
Данная публикация была обновлена 13.10.2024 15:10

В данной статье рассматривается:
Компонент интеграции счётчиков ресурсов от Элехант с Home Assistant с расшифровкой протокола обмена по bluetooth

Для меня это первая разработка интеграции для Home Assistant и первое знакомство с языком Python так, что не судите строго. Данная интеграция это "я его слепила из того что было" 

Изобретать свой велосипед пришлось из-за того, что имеющиеся интеграции не поддерживают esp32-bluetooth-proxy

esp32-bluetooth-proxy – интересен тем, что его не надо подключать непосредственно Home Assistant, как физический bluetooth адаптер и его можно разместить рядом со счетчиком т.к. действие bluetooth имеет небольшой радиус действия.

esp32-bluetooth-proxy представляет из себя программный модуль на базе ESP32 который имеет на борту WiFi и bluetooth. По WiFi мы подключаемся к HA а по bluetooth мы получаем данные от счетчика. Модули ESP32 не дорогие и их множество разновидностей, ознакомится можно тут,  читать.

Моудули ESP32 могут быть прошиты непосредственно их Home Assistant, для этого надо установить дополнение ESPHome. Как это сделать можно почитать тут, Прошивка ESP32/ESP8266 через ESPHome



Требования

Для интеграции требуется наличие Bluetooth модуля в сервере HA или ESP32 плата с установленной на ней Bluetooth proxy ESPHome.

Модуль тестировался при использовании ESPHome esp32-bluetooth-proxy, но так же должен работать с физическим адаптером bluetooth

Код для работы с известными счетчиками добавлен, но не проверялся т.к. у автора нет этих счетчиков


Поддерживаются:

  • * СГБ-1.8 - работает
  • * СГБ-3.2
  • * СГБ-4.0 - работает
  • * СГБ-6.0
  • * СГБ-1.6
  • * СГБД-1.8
  • * СГБД-3.2 - работает
  • * СГБД-4.0
  • * СГБД-6.0
  • * СГБД-1.6
  • * СОНИК-G1.6
  • * СОНИК-G2.5
  • * СОНИК-G4
  • * СОНИК-G6
  • * СОНИК-G10
  • * СГБД-1.8ТК
  • * СГБД-3.2ТК
  • * СГБД-4.0ТК
  • * СГБД-6.0ТК
  • * СГБД-1.6ТК
  • * СОНИК-G16ТК
  • * СОНИК-G25ТК
  • * СОНИК-G4ТК
  • * СОНИК-G6ТК
  • * СОНИК-G10ТК
  • * СГБ-1.8ТК
  • * СГБ-3.2ТК
  • * СГБ-4.0ТК
  • * СГБ-6.0ТК
  • * СГБ-1.6ТК
  • * СВД-15 - работает
  • * СВД-20
  • * СВТ-15
  • * СВТ-15 - работает
  • * СВТ-20
  • * СВТ-20
  • * СЭБ
  • * СТБ-10

Установка

Скопируйте папку elehant_meter в custom_components в корне конфигурации Home Assistant


Особенности

 - С ESP32-C3 который основан на RISC-V (RV32IMC) esp32-bluetooth-proxy работает очень плохо.


Пример кода esp32-bluetooth-elehant

substitutions:
  name: "esp32-bluetooth-elehant"
  friendly_name: Bluetooth Proxy Elehant
packages:
  esphome.bluetooth-proxy: github://esphome/bluetooth-proxies/esp32-generic.yaml@main
esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

api:
  encryption:
    key: P6WgSzWf5HF4vDnEwVOFVSEW9qA6o6RI6pNd5ANiC

ota:
  - platform: esphome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

esp32_ble_tracker:
  scan_parameters:
    interval: 1100ms  
    window: 1100ms
    #duration: 10min
    active: false
    #continuous: true

bluetooth_proxy:
  active: true


logger:

 Скачать модуль с GitHab elehant_meter

Дополнение


Расшифровка протокола счетчиков Элехант

По мере дальнейшего изучения протокола информация будет меняться.

Предисловие:

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

У нас есть приложение от производителя, и оно написано под Android, ну и, как всем известно, такие приложения декомпилируется очень просто и мы получаем исходный код на Java. А далее просто изучаем этот код … Вот такой реверс инжиниринг и был произведен, но даже при таком подходе остались еще невыясненные моменты.

Итоги реверс инжиниринга

  • Список поддерживаемых счетчиков перечислен выше и там есть те, которых еще не существует. По коду видно, что планируются выпуск счетчиков энергии и тепловых счетчиков, но на текущий момент только газа и воды.
  • Устройства с MAC начинающихся на B1 (мак как у основного) - это какие-то дополнительные данные.
  • Приложение отсылает данные на https://cntdev.ru/n и тут интересна политика https://boxold.cntdev.ru/privacy

Данные в mac адресе:
         mac
---------------------------------
B0:01:02:01:8B:8B
 0  1  2  3  4  5
---------------------------------
(0)B0 - данные протоколу v1 / B1 - дополнительные данные, требует выяснения
(1)01 – модель счетчика
(2)02 – тип счетчика
(3,4,5)01:8B:8B - серийный номер
Данные в пакете:
ffff -  код производителя в заголовке
          ---------------
           Пакет данных:
-----------------------------------------------------------------------
80 88 A0 01 02 01 8B 8B 01 13 1E 00 00 7A 63 0F 16
 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16
------------------------------------------------------------------------
0   -   Данные не обрабатываются (всегда равен 0х80)
1   -   Данные не обрабатываются (кто-то говорит, что это некий счетчик, который изменяется каждую минуту или номер пакета)
2   -   Данные не обрабатываются (не известно)
3   -   Равен 1 (вероятно это версия пакета, версии 1, 5, 8(для B1))
4   -   Тип счетчика (тот же что и в mac)
5   -   Модель счетчика (тот же что и в mac)
6-8 -   Серийный номер 
9-12 -  Показания (0.1 литр)
13    - Батарея (показание больше 100, но берется минимальное значение из двух)
14-15 - Температура (деленная на 100)
16 -    Версия прошивки /10

Модели счетчиков газа:

1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 32, 33, 34, 35, 36, 48, 49, 50, 51, 52, 64, 65, 66, 67, 68, 80, 81, 82, 83, 84

Модели счетчиков воды:

1, 2, 3, 4, 5, 6

Типы счетчиков:

1 – Газ

2 – Вода

3 – Энергия (Возможно)

4 – Тепла (Возможно)

Соотношение:

    "1-1": "СГБ-1.8",
    "1-2": "СГБ-3.2",
    "1-3": "СГБ-4.0",
    "1-4": "СГБ-6.0",
    "1-5": "СГБ-1.6",
    "1-16": "СГБД-1.8",
    "1-17": "СГБД-3.2",
    "1-18": "СГБД-4.0",
    "1-19": "СГБД-6.0",
    "1-20": "СГБД-1.6",
    "1-32": "СОНИК-G1,6",
    "1-33": "СОНИК-G2,5",
    "1-34": "СОНИК-G4",
    "1-35": "СОНИК-G6",
    "1-36": "СОНИК-G10",
    "1-48": "СГБД-1.8ТК",
    "1-49": "СГБД-3.2ТК",
    "1-50": "СГБД-4.0ТК",
    "1-51": "СГБД-6.0ТК",
    "1-52": "СГБД-1.6ТК",
    "1-64": "СОНИК-G1,6ТК",
    "1-65": "СОНИК-G2,5ТК",
    "1-66": "СОНИК-G4ТК",
    "1-67": "СОНИК-G6ТК",
    "1-68": "СОНИК-G10ТК",
    "1-80": "СГБ-1.8ТК",
    "1-81": "СГБ-3.2ТК",
    "1-82": "СГБ-4.0ТК",
    "1-83": "СГБ-6.0ТК",
    "1-84": "СГБ-1.6ТК",
    "2-1": "СВД-15",
    "2-2": "СВД-20",
    "2-3": "СВТ-15",
    "2-4": "СВТ-15",
    "2-5": "СВТ-20",
    "2-6": "СВТ-20",
    "3-1": "СЭБ",
    "4-1": "СТБ-10"

Возможно, что-то при исследованиях я не правильно понял или не смог понять. Если есть кому, что дополнить пишите. Исследования продолжаются...

На основе этих данных написана интеграция для Home Assistant для счетчиков Элехант смотреть.



Метки
Home Assistant Элехант Python модуль bluetooth Протокол

Комментариев: 0

 131 |


Добавить комментарий:
Google
Yandex
Отправить