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


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

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

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

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


Требования

Для интеграции требуется наличие 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

В 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 начинающихся на 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 - не криптованная
(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 для счетчиков Элехант смотреть.



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

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

 117 |


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