Сразу хочу выразить благодарность Виктору pvvx за его работу ATC_MiThermomete. Это мне помогло разобраться в нюансах программирования BLE на TLSR8253 (хотя не факт, что я написал полностью правильный код :)). Ну и еще он отвечал на мои глупые вопросы на форуме. Спасибо.
А также моему сыну Алексею, который помог мне со стилями в html, чтобы все выглядело так, как я хотел. Спасибо.
Описание
Железо
Выбор пал на недорогой модуль от Ai-Thinker TB-04 (чуть больше 120 рублей)
Испытывалось все на вот таком модуле от Ai-Thinker TB-04-KIT
Чтобы в этот модуль залить прошивку нужно 2-ю ножку микросхемы CH340 соединить с выводом SWS.
Саму программу заливки можно скачать у pvvx - TlsrComProg. Спасибо ему еще раз. По большому счету нужны всего два файла TlsrComProg.py и floader.bin
Корпус
Решение самодостаточного модуля было подсмотрено в проекте waterius. Чтобы не изобретать, куда это потом все прятать, берем, так называемый, Battery Holder Box на 3 батарейки АА. Переделываем на 2 батарейки и получаем питание 3 вольта и один сегмент под плату.
Плата
Изначально была одна версия платы. На испытательном варианте все работало нормально. Но в реальных условиях выяснилось, что иногда при срабатывании одного счетчика, например горячей воды, автоматом увеличивается и счетчик холодной. Было предположение, что происходит наводка из-за длинных проводов. В результате родился второй вариант платы. Но проблема осталась и со второй версией платы. Ошибка была все-таки в коде.
В общем есть два варианта платы. Выбирайте любой. Все работает.
Готовое устройство
Софт
Прошивку нужно залить в модуль с помощью github.com/pvvx/TLSRPGM или github.com/pvvx/TlsrComProg825x. Это уж как кому нравится. Затем соедиться с ним через Web-интерфейс и настроить начальные данные - количество литров горячей воды, количество литров холодной воды и количество литров на один импульс (смотрите документацию на ваш счетчик). А также обновить прошивку “по воздуху”. Если нужно шифрование передаваеммых данных, вводим ключ длиной 16 байт, например ‘231d39c1d7cc1ab1aee224cd096db932’, и отправляем его, нажав на кнопку ‘Set BindKey’.
Первое соединение происходит достаточно быстро, потому что период обнаружения выбран малый, 250 мсек. После первого соединение этот период увеличивается до 2.5 секунд для экономии батарейки. Потому на последующие соединения, если таковые будут нужны, понадобится больше времени (не пугайтесь, все работает).
Вроде все. Будут вопросы, задавайте, если смогу, отвечу.
Скриншот из Home Assistant
Пример автоматизации для Home Assistant
История версий