Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Счётчик газа #8

Open
sashayohan opened this issue Sep 9, 2021 · 24 comments
Open

Счётчик газа #8

sashayohan opened this issue Sep 9, 2021 · 24 comments

Comments

@sashayohan
Copy link

У Элехант есть ещё счётчик газа
https://elehant.ru/cntr_gaz_dist.php

Данные думаю передаются так же, как и на воду.
По идее интеграция должна его тоже увидеть.
Какие на выходе данные через mqtt отдаются? только цифры показаний?

Вот думаю, можно ли использовать для газа или интеграция только под воду заточена?

@vooon
Copy link
Owner

vooon commented Sep 9, 2021

У меня нет их газового счетчика, да и протокол просто отреверсил наблюдая за изменениями в пакетах.
https://github.com/vooon/elehant-to-mqtt/blob/master/docs/protocol.md

Прошивка публикует все известные поля для каждого услышанного счетчика.
Также прошивка публикует сырые данные в tele/<device-name>/BLE_ADV_RAW, можно попробовать найти.

А так, если понять где поле с данными, и как отличить газовый пакет от водяного, то добавить еще один декодер не проблема.

@sashayohan
Copy link
Author

Заказал на сайте производителя. На следующей неделе надеюсь получу, буду пробовать)

@booroondook-eng
Copy link

Заказал на сайте производителя. На следующей неделе надеюсь получу, буду пробовать)

Приветствую. Что-то получилось у вас?

@Aleksey-Ivanov
Copy link

Добрый день!
Получилось ли пробросить данные в HA @sashayohan?

@sashayohan
Copy link
Author

Доброго времени суток!
Было всего пару дней на тестирование, на тот момент не получилось подключить, потом уехал. Счётчик находится в другом городе. Смогу ещё раз попробовать с 27 по 31 Января, потом возможно только летом буду.
Через неделю отпишусь

@vooon
Copy link
Owner

vooon commented Jan 22, 2023

@sashayohan думаю стоит снять дамп если получится.

Сейчас raw отключены по умолчанию, так что нужно добавить "ble-publish-raw": true в конфиг.
Потом с помощью mosquitto_sub можно дампить в файл. Как-то так:

mosquitto_sub -h domus1 -t tele/water/BLE_ADV_RAW | tee -a somefile.log

@vooon
Copy link
Owner

vooon commented Jan 22, 2023

И еще: желательно получить несколько сообщений без потребления газа + показания из приложения на это время, и во время использования.

Т.е. получится три записи:

  1. Т1: показания 1
  2. кипятим чайник
  3. Т2: показания 2

Это даст понять какая часть сообщения меняется, и правильно ли работает декодер.

@sashayohan
Copy link
Author

ни разу не делал такие вещи, но готов попробовать)

@booroondook-eng
Copy link

booroondook-eng commented Jan 23, 2023

Приобрел я счетчик газа СГБД-4,0. В-общем, ситуация такая: Родное приложение счетчик видит, всё работает.
Поискал счетчик через приложение "BLE Scanner" на смартфоне. Счетчик нашелся - Выдал свой MAC-адрес: B0:12:01:Xx:Yy:Zz (кстати, если XxYyZz перевести из хекса в десятичную систему, то получится серийный номер счетчика с лидирующими нулями, как написано на наклейке).
В списке обнаруженных устройств напротив счетчика пометка "Non Connectable". При нажатии на ссылку "RAW DATA" выдается следующее:
0x14FFFFFF80AA96010112ZzYyXxF90900007F710B0F
А чуть пониже та же самая последовательность, разделенная на разделы:
LEN: 20
TYPE: 0xFF
VALUE: 0xFFFF80A896010112ZzYyXxF90900007F710B0F
В этом длинном хекс-числе просматривается серийник счетчика (только байты идут справа налево)
Да, для справки - на данный момент показания счетчика в родном приложении такие: +0,2553 м3 (я пока еще не ставил счетчик на газовую трубу, он пока лежит у меня на столе).
P.S. Полный MAC (и серийник) не публикую по определенным причинам, но если ув.разработчику они понадобятся, то сообщу.

@vooon
Copy link
Owner

vooon commented Jan 26, 2023

https://github.com/vooon/elehant-to-mqtt/blob/master/docs/protocol.md

Значит принцип похожий. Снять бы только дамп на три случая, как я писал выше.

@booroondook-eng
Copy link

booroondook-eng commented Jan 26, 2023

https://github.com/vooon/elehant-to-mqtt/blob/master/docs/protocol.md
Значит принцип похожий. Снять бы только дамп на три случая, как я писал выше.

Ситуация такая: протокол "один в один" такой же, как и для водяных датчиков.
Серийный номер вычисляется точно так же.
Передаваемое показание (4 байта) - это объем газа в децилитрах (0.1 л). Делим на 10 - получаем литры. А если делим на 10000 - получаем кубометры
MAC-адрес (точнее, первые три октета) зависит от типа прибора, а именно (пока определено для 4 вариантов счетчиков, возможно существуют и другие):
B0:10:01 - СГБД-1,8
B0:11:01 - СГБД-3,2
B0:12:01 - СГБД-4,0
B0:32:01 - СГБД-4,0ТК (с функцией термокомпенсации)
Ну а вторые три октета - это серийник (наверное, у водяных счетчиков так же).
По поводу дампа - я бы рад, но нигде не могу найти мануала по прошивке. У вас в описании всё так непонятно написано.

@vooon
Copy link
Owner

vooon commented Jan 27, 2023

Да, очень похожее сообщение. А всегда ли после 0x80 + cnt идет 96 01 01 12?

Что касается сборки, то писал я под PlatfromIO, так что нужен он и питон. Ну и я не добавлял никаких костылей для поддержки винды, так что нужна юниксовая система.

@booroondook-eng
Copy link

booroondook-eng commented Jan 27, 2023

Да, очень похожее сообщение. А всегда ли после 0x80 + cnt идет 96 01 01 12?

Да, всегда именно такие 4 байта.
А вот после показания счетчика всегда идет 7F (в вашем описании протокола написано, что 65, но вот у этого моего счетчика всегда 7F.
Далее, два байта, которые у вас указаны, как температура. В моем счетчике в разное время я видел такие значения:
71 0B
19 0D
65 0D
2F 0D
Вполне возможно, что это температура, но с каким-то постоянным завышением на 7 или 8 градусов, если судить по реальной температуре помещений, где этот счетчик в разное время находился (получаются значения 2929, 3353, 3429 и 3375).
Ну и последний байт тоже всегда одинаковый, но значение 0F (у вас в описании - 00)

Что касается сборки, то писал я под PlatfromIO, так что нужен он и питон. Ну и я не добавлял никаких костылей для поддержки винды, так что нужна юниксовая система.

Понятно. А то я как раз именно под Windows попытался собрать и получил кучу ошибок.

@vooon
Copy link
Owner

vooon commented Jan 27, 2023

@booroondook-eng , @sashayohan , @Aleksey-Ivanov в мастер залил начальную поддержку для СГБД.

Декодер практически копия водяного, да и экспорт данных аналогичен.
Нужно собрать и опробовать как работает.

@booroondook-eng
Copy link

@booroondook-eng , @sashayohan , @Aleksey-Ivanov в мастер залил начальную поддержку для СГБД.

Декодер практически копия водяного, да и экспорт данных аналогичен. Нужно собрать и опробовать как работает.

Буду благодарен тому, rто поделится готовым бинарником для прошивки ESP32. Свои мучения со сборкой я выше описывал.

@sashayohan
Copy link
Author

Буду благодарен тому, rто поделится готовым бинарником для прошивки ESP32. Свои мучения со сборкой я выше описывал.

напиши в телегу, никнейм такой же как и тут, сейчас пробую собрать

@vooon
Copy link
Owner

vooon commented Jan 28, 2023

@booroondook-eng в релиз добавил файлы прошивки. См. 0.6.1 что-куда шить.

@Aleksey-Ivanov
Copy link

@vooon @booroondook-eng @sashayohan Ребят, а можете плиз описать процесс как прошивку можно залить на ESP32 ?

@booroondook-eng
Copy link

booroondook-eng commented Jan 31, 2023

@vooon @booroondook-eng @sashayohan Ребят, а можете плиз описать процесс как прошивку можно залить на ESP32 ?

Не знаю, как кто, а я делал так (под Windows 10):

  1. Идем в папку с готовыми бинарниками: https://github.com/vooon/elehant-to-mqtt/releases
  2. Находим заголовок "Release 0.8.1" (это на сегодняшний день самый свежий, но надеемся, что будут и новые), раскрываем подзаголовок "Assets" и скачиваем под ним файлы:
  • bootloader.bin
  • partitions.bin
  • firmware.bin
  1. Идем вниз к заголовку "Release 0.6.1", и из его "Assets" скачиваем недостающий 4-й файл
  • boot_app0.bin
    (на будущее - нам нужны 4 перечисленных выше файла - если каких-то файлов в текущем релизе недостаёт, то ищем и забираем их в одном из предыдущих релизов по принципу "чем позже опубликован, тем лучше")
  1. Скачиваем утилиту Flash Download Tools (например, здесь: https://www.espressif.com/en/support/download/other-tools). Её устанавливать не нужно - надо просто распаковать скачанный архив и запустить EXE-файл)
  2. Подробные инструкции по прошивке имеются здесь: https://ha-pro.ru/index.php/home/ustrojstva/440-sbor-pokazanij-schetchika-vody-i-gaza - ориентируемся на немного отличающиеся имена файлов прошивки, выставляем правильные оффсеты и прошиваем.
  3. Если есть желание подключить внешний дисплей типа SSD1306 128x32 (при отсутствии дисплея на само́й плате), то подключаем его так:
  • VCC -> к пину 3V3
  • GND -> к пину GND
  • SCL -> к пину IO4 (D4)
  • SDA -> к пину IO5 (D5)

@Aleksey-Ivanov
Copy link

@vooon @booroondook-eng @sashayohan Ребят, а можете плиз описать процесс как прошивку можно залить на ESP32 ?

Не знаю, как кто, а я делал так (под Windows 10):

  1. Идем в папку с готовыми бинарниками: https://github.com/vooon/elehant-to-mqtt/releases
  2. Находим заголовок "Release 0.8.1" (это на сегодняшний день самый свежий, но надеемся, что будут и новые), раскрываем подзаголовок "Assets" и скачиваем под ним файлы:
  • bootloader.bin
  • partitions.bin
  • firmware.bin
  1. Идем вниз к заголовку "Release 0.6.1", и из его "Assets" скачиваем недостающий 4-й файл
  • boot_app0.bin
    (на будущее - нам нужны 4 перечисленных выше файла - если каких-то файлов в текущем релизе недостаёт, то ищем и забираем их в одном из предыдущих релизов по принципу "чем позже опубликован, тем лучше")
  1. Скачиваем утилиту Flash Download Tools (например, здесь: https://www.espressif.com/en/support/download/other-tools). Её устанавливать не нужно - надо просто распаковать скачанный архив и запустить EXE-файл)
  2. Подробные инструкции по прошивке имеются здесь: https://ha-pro.ru/index.php/home/ustrojstva/440-sbor-pokazanij-schetchika-vody-i-gaza - ориентируемся на немного отличающиеся имена файлов прошивки, выставляем правильные оффсеты и прошиваем.
  3. Если есть желание подключить внешний дисплей типа SSD1306 128x32 (при отсутствии дисплея на само́й плате), то подключаем его так:
  • VCC -> к пину 3V3
  • GND -> к пину GND
  • SCL -> к пину IO4 (D4)
  • SDA -> к пину IO5 (D5)

Спасибо, огромное! буду пробывать

@booroondook-eng
Copy link

booroondook-eng commented Jan 31, 2023

буду пробывать

пробЫвать не надо - надо пробОвать :-)

@Aliskin-Papa
Copy link

Aliskin-Papa commented Nov 1, 2023

День добрый!
Газовый Элехант B0:12:01 - СГБД-4,0. Можно поправить библиотеку для HomeAssistant (EspHome), чтобы он читался? Взял ваш пример для НА, библиотеку, поправил 4 цифры серийника в Yaml, всё откомпилировалось и прошилось на ура, но Счётчика не видит, сенсоры пустые.

@booroondook-eng
Copy link

День добрый! Газовый Элехант B0:12:01 - СГБД-4,0. Можно поправить библиотеку для HomeAssistant (EspHome), чтобы он читался? Взял ваш пример для НА, библиотеку, поправил 4 цифры серийника в Yaml, всё откомпилировалось и прошилось на ура, но Счётчика не видит, сенсоры пустые.

Насколько я понимаю, суб-проект для ESPHome в какой-то степени заброшен автором в силу ряда причин (где-то в соседних ветках он объясняет эти причины). А собственно говоря, зачем вам реализация именно через ESPHome? Ведь можно прошить и обычную прошивку, а затем получать в ХА данные из MQTT. Всё это прекрасно работает - можно получать не только показания счетчика, но и его температуру.

@Aliskin-Papa
Copy link

Про готовый бинарник то все понятно, в ЕспХоум я хозяин, и на одном модуле вместе со считыванием показаний счётчика у меня еще висят БлеПрокси и Пзем на электричество, а при прошивке бинарником - ничего не поправишь в коде.
Короче, в Примере для НА в компоненте заменил первые 4 разряда мак адреса одного из адресов для воды, на аналогичные для газового счетчика - и всё взлетело. Структура данных у них абсолютно одинаковая.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants