Для меня это первая разработка интеграции для Home Assistant и первое знакомство с языком Python так, что не судите строго. Данная интеграция это "я его слепила из того что было"
Изобретать свой велосипед пришлось из-за того, что имеющиеся интеграции не поддерживают esp32-bluetooth-proxy
Для интеграции требуется наличие Bluetooth модуля в сервере HA или ESP32 плата с установленной на ней Bluetooth proxy ESPHome.
Модуль тестировался при использовании ESPHome esp32-bluetooth-proxy, но так же должен работать с физическим адаптером bluetooth
Код для работы с известными счетчиками добавлен, но не проверялся т.к. у автора нет этих счетчиков
Скопируйте папку elehant_meter в custom_components в корне конфигурации Home Assistant
В configuration.yaml добавьте следующие строки:
sensor:
- platform: elehant_meter
- С 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
---------------------------------
B0:01:02:01:8B:8B
0 1 2 3 4 5
---------------------------------
(0)B0 - не криптованная
(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 - Данные не обрабатываются (не известно)
4 - Равен 1 (данный байт проверяется на это значение)
5 - Тип счетчика (тот же что и в mac)
6 - Модель счетчика (тот же что и в mac)
7-9 - Серийный номер
10-13 - Показания (0.1 литр)
14 - Батарея (показание больше 100, но берется минимальное значение из двух)
15-16 - Температура (деленная на 100)
Модели счетчиков газа:
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 для счетчиков Элехант смотреть.