Skip to content

slacky1965/watermeter_ble

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Watermeter Bluetooth LE Telink TLSR8253 (Ai-Thinker TB-04)

Сразу хочу выразить благодарность Виктору pvvx за его работу ATC_MiThermomete. Это мне помогло разобраться в нюансах программирования BLE на TLSR8253 (хотя не факт, что я написал полностью правильный код :)). Ну и еще он отвечал на мои глупые вопросы на форуме. Спасибо.

А также моему сыну Алексею, который помог мне со стилями в html, чтобы все выглядело так, как я хотел. Спасибо.

Repository watermeter_ble


Описание

  • Рассчитано на два счетчика воды.
  • Не работает с системой namur, только замыкание-размыкание (сухой контакт).
  • Ведет подсчет замыканий-размыканий, увеличивая каждый раз количество литров на заданное значение от 1 до 10 литров (по умолчанию 10 литров на один импульс).
  • Сохраняет показания в энергонезависимой памяти модуля.
  • Передает показания по Bluetooth LE в рекламном пакете в формате BTHome V2.0.
  • Данные датчиков в пакете могут быть зашифрованы AES-CCM.
  • Первоначальная настройка происходит через WEB-интерфейс.
  • Соединиться с модулем можно только с того устройства, с которого производили первое соединение. Первый раз соединиться можно с любого устройства. Чтобы сбросить whitelist, нужно замкнуть контакт SWS на землю более, чем на 5 секунд (или через WEB-интерфейс, если первоначальное устройство соединения доступно).

Железо

Выбор пал на недорогой модуль от Ai-Thinker TB-04 (чуть больше 120 рублей)

Ai-Thinker TB-04

Испытывалось все на вот таком модуле от Ai-Thinker TB-04-KIT

Ai-Thinker TB-04-KIT

Чтобы в этот модуль залить прошивку нужно 2-ю ножку микросхемы CH340 соединить с выводом SWS.

Ai-Thinker TB-04-KIT

Саму программу заливки можно скачать у pvvx - TlsrComProg. Спасибо ему еще раз. По большому счету нужны всего два файла TlsrComProg.py и floader.bin


Корпус

Решение самодостаточного модуля было подсмотрено в проекте waterius. Чтобы не изобретать, куда это потом все прятать, берем, так называемый, Battery Holder Box на 3 батарейки АА. Переделываем на 2 батарейки и получаем питание 3 вольта и один сегмент под плату. BOX 3AA BOX 3AA BOX 3AA BOX 3AA


Плата

Изначально была одна версия платы. На испытательном варианте все работало нормально. Но в реальных условиях выяснилось, что иногда при срабатывании одного счетчика, например горячей воды, автоматом увеличивается и счетчик холодной. Было предположение, что происходит наводка из-за длинных проводов. В результате родился второй вариант платы. Но проблема осталась и со второй версией платы. Ошибка была все-таки в коде.

В общем есть два варианта платы. Выбирайте любой. Все работает.

Схема и плата (версия 1)

PCB_V1

Схема и плата (версия 2)

PCB_V2


Готовое устройство

PCB_V1


Софт

Прошивку нужно залить в модуль с помощью github.com/pvvx/TLSRPGM или github.com/pvvx/TlsrComProg825x. Это уж как кому нравится. Затем соедиться с ним через Web-интерфейс и настроить начальные данные - количество литров горячей воды, количество литров холодной воды и количество литров на один импульс (смотрите документацию на ваш счетчик). А также обновить прошивку "по воздуху". Если нужно шифрование передаваеммых данных, вводим ключ длиной 16 байт, например '231d39c1d7cc1ab1aee224cd096db932', и отправляем его, нажав на кнопку 'Set BindKey'.

Web flasher

Первое соединение происходит достаточно быстро, потому что период обнаружения выбран малый, 250 мсек. После первого соединение этот период увеличивается до 2.5 секунд для экономии батарейки. Потому на последующие соединения, если таковые будут нужны, понадобится больше времени (не пугайтесь, все работает).


Вроде все. Будут вопросы, задавайте, если смогу, отвечу.

Скриншот из Home Assistant

Home Assistant

Пример автоматизации для Home Assistant


История версий

  • 1.0 - Начало.
  • 1.1 - Добавлена возможность обновления по OTA.
  • 1.2-1.6 - Эксперименты с изменениями версий для конфигурирования через web-интерфейс. Добавления нотификаций.
  • 1.7 - Добавлена возможность отображать отладочную информацию с модуля в web-интерфейсе при конфигурации.
  • 1.8 - Добавлена возможность сбросить whitelist через замыкание SWS на землю на время более 5 секунд.
  • 1.9 - Изменен формат сообщений согласно новой спецификации BTHome V2.0. Добавлена возможность шифровать данные датчиков AES CCM.
  • 2.0 - Устранена проблема с подсчетом импульсов.
  • 2.1 - Устранена проблема с подсчетом импульсов (иногда происходили пропуски в подсчете замыканий).