THB2/README-ru.md
2024-12-25 16:23:23 +03:00

292 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[![russian](https://img.shields.io/badge/language-russian-C1C1C1?style=for-the-badge)](README-ru.md)
[![english](https://img.shields.io/badge/also%20available%20in-english-blue?style=for-the-badge)](README.md)
# BTHome THB1, THB2, THB3, BTH01, TH05, TH05F
Кастомные прошивки для устройств Tuya на чипсете PHY622x2.
(!) Не рекомендуется покупать термометры Tuya с датчиками CHT8305 и/или чипами драйверов ЖК-дисплея BL55028. Они имеют повышенное потребление и несовместимы с работой от батареек. Это муляж термометра от Tuya.
| [THB1](https://pvvx.github.io/THB1) | [THB2](https://pvvx.github.io/THB2) | [THB3](https://pvvx.github.io/THB3) | [BTH01](https://pvvx.github.io/BTH01/) |
|:---:|:---:|:---:|:---:|
| <img src="https://pvvx.github.io/THB1/img/THB1.jpg" width="120"/> | <img src="https://pvvx.github.io/THB2/img/THB2.jpg" width="80"/> | <img src="https://pvvx.github.io/THB3/img/THB3.jpg" width="120"/> | <img src="https://pvvx.github.io/BTH01/img/BTH01.jpg" width="100"/> |
| [TH05_V1.3](https://pvvx.github.io/TH05-v1.3) | [TH05_V1.4](https://pvvx.github.io/TH-05) | [TH05F](https://pvvx.github.io/TH05F) | [KEY2](https://pvvx.github.io/iSearching) |
|:---:|:---:|:---:|:---:|
| <img src="https://pvvx.github.io/TH05-v1.3/img/TH05-V1.3.jpg" width="120"/> | <img src="https://pvvx.github.io/TH-05/img/TH05V14.jpg" width="120"/> | <img src="https://pvvx.github.io/TH05F/img/TH05F.jpg" width="120"/> | <img src="https://pvvx.github.io/iSearching/img/keys.jpg" width="120"/> |
| | | | Поддерживает "[FindMy](https://github.com/pvvx/THB2/issues/94)" |
Прошивки работают с [Home Assistant](https://www.home-assistant.io/) и другим программным обеспечением, работающим в формате [BTHome](https://bthome.io/).
Все прошивки поддерживают любой из датчиков: [CHT8215](pvvx.github.io/THB2/CHT8315%20Advanced%20Datasheet%20Ver1.6%2020230927.pdf) ([CHT8310](https://pvvx.github.io/THB2/CHT8310%20Advanced%20Datasheet%20Ver1.1%2020230927.pdf)), [CHT8305](https://github.com/pvvx/pvvx.github.io/blob/master/THB2/CHT8305C%20Advanced%20Datasheet%20Ver2.5%202021-10-26.pdf), [CHT832x](pvvx.github.io/THB2/CHT832X%20Advanced%20Datasheet%20Ver1.pdf), AHT20..30.
* Программа для настройки и BLE OTA [PHY62x2BTHome.html](https://pvvx.github.io/THB2/web/PHY62x2BTHome.html).
* Подгрузка файлов OTA в [PHY62x2BTHome.html](https://pvvx.github.io/THB2/web/PHY62x2BTHome.html) производится автоматически - загружать из файлы из данного репозитория для OTA не требуется.
* Для автономной работы [PHY62x2BTHome.html](https://pvvx.github.io/THB2/web/PHY62x2BTHome.html) достаточно скопировать [html](https://github.com/pvvx/THB2/blob/master/bthome_phy6222/web/PHY62x2BTHome.html) файл в локальную папку.
## Начало работы с устройством
_Для работы с устройством требуется записать прошивку `FW Boot` в устройство через адаптер USB-COM. Прошивка Boot является программой урезанной по функционалу и обеспечивает безопасное обновление OTA._
алее, с помощью соединения BLE в [PHY62x2BTHome.html](https://pvvx.github.io/THB2/web/PHY62x2BTHome.html) через вкладку OTA, записывается основная рабочая программа `FW APP`._
`FW APP` возможно записать и с помощью адаптера USB-COM.
## Прошивки (FW) Boot и APP
* Прошивка [Boot](https://github.com/pvvx/THB2?tab=readme-ov-file#fw-boot-%D0%B8-ota) имеет минимум функций. Boot используются только для выполнения OTA (для загрузки полнофункциональной версии APP (Application - файлы *.bin)).
* Внешне отличить тип устройства возможно по символу смайлика на экране.
| Устройство | Файл Boot | Файл OTA | Маркировка на печатной плате |
|:---:|:---:|:---:|:---:|
| [THB1](https://pvvx.github.io/THB1) | BOOT_THB1_v20.hex | THB1_v20.bin | нет |
| [THB2](https://pvvx.github.io/THB2) | BOOT_THB2_v20.hex | THB2_v20.bin | нет |
| [THB3](https://pvvx.github.io/THB3) | BOOT_THB2_v20.hex | THB2_v20.bin | нет |
| [BTH01](https://pvvx.github.io/BTH01) | BOOT_BTH01_v20.hex | BTH01_v20.bin | нет |
| [TH05_V1.4](https://pvvx.github.io/TH-05) | BOOT_TH05_v20.hex | TH05_v20.bin | TH05_V1.4, TH05_V1.5, TH05_V1.6 с чипом BL55028 |
| [TH05_V1.3](https://pvvx.github.io/TH05-v1.3) | BOOT_TH05D_v20.hex | TH05D_v20.bin | RSH-TH05-V1.3 с чипом BL55072 |
| [TH05F](https://pvvx.github.io/TH05F) | BOOT_TH05F_v20.hex | TH05F_v20.bin | TH05Y_V1.1, TH05Y_V1.2, TH05Y_V3.1 с чипом QD01 2332 NT |
| [KEY2](https://pvvx.github.io/iSearching) | BOOT_KEY2_v20.hex | KEY2_v20.bin | SoC ST17H66B |
Основные файлы прошивок, BOOT_xxx_vxx.hex для программирования через USB-COM адаптер и xxx_vxx.bin для OTA, находятся в директории [bin](https://github.com/pvvx/THB2/tree/master/bin).
Файлы для обновления `FW Boot` по OTA находятся в директории [update_boot](https://github.com/pvvx/THB2/tree/master/update_boot). Процесс обновления `FW Boot` через OTA не является безопасным. Перед этим действием проверьте уровень батареи.
> Актуальная версия `FW Boot` **v2.0**.
## Внутренняя распиновка GPIO:
| Firmware | Sensor SDA/SCL/Power | LCD SDA/SCL/Power | Key | LED | TRG(TX) | IN(RX) |
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| THB1 | P18/P20/- | P34/P33/- | P01 | - | P09 | P10 |
| THB2 | P18/P20/- | - | P07 | P26 | P20 | P18 |
| THB3 | P18/P20/- | P34/P33/- | P01 | - | P09 | P10 |
| BTH01 | P33/P34/P00 | - | P14 | P15 | P20 | P18 |
| TH05 | P33/P34/P00 | P33/P34/P02 | P14 | - | P20 | P18 |
| TH05D | P31/P32/- | P11/P14/- | P02 | - | P09 | P10 |
| TH05F | P33/P34/P00 | P26/P31/P02 | P14 | - | P20 | P18 |
Чип LCD во всех вариантах инициализируется одинаково, но разные порты подключения.
LCD имеет разную разводку сегментов в зависимости от модели.
Датчики опреляются автоматически, но имеют разные порты в зависимости от модели.
## Основные характеристики
! ри настройках по умолчанию_ !
* Интервал BLE рекламы в формате [BTHome v2](https://bthome.io) равен 5 секундам.
* Опрос датчика влажности и температуры производится каждый второй интервал BLE рекламы - период 10 секунд.
* Измерение напряжения батареи происходит каждую минуту.
* Кнопка используется для быстрого подключения к старым BT-адаптерам. Нажатие кнопки переключает интервал BLE рекламы на более короткий период (1562.5 мс). Действие продолжится 60 секунд, затем интервал восстановится на установленный в настройках.
* Измеренное среднее потребление от источника в 3.3В при сканировании термометров THB2 и BTH01 в пассивном режиме составляет до 8 мкА. Для TH05_V1.4 среднее потребление около 23 мкА - [таков ток установленных компонентов](https://github.com/pvvx/THB2/issues/8#issuecomment-1908982171). Остальные версии с экраном: при включенном LCD - от 12 до 14 мкА, c отключенным LCD - от 7 до 12 мкА.
* Запись итории каждые 30 минут
* Интервал соединения с учетом Connect Latency - 900 мс
* Поддерживаемые сенсоры температуры и влажности: AHT30, CHT8305, CHT8215, CHT8310
* Обработка входного контакта со счетчиком для передаваемых событий [Open/Close](https://github.com/pvvx/THB2/issues/10#issuecomment-1935169274)
* Обработка выходного контакта переключаемого по устанавливаемой температуре и/или влажности с гистерезисом
* Поддержка недорогого [повторителя рекламы BLE в Zigbee](https://github.com/pvvx/TLB2Z)
## История версий
| N | Описание |
|---|--- |
| 1.0 | <ul><li>Первая релизная версия</li></ul> |
| 1.1 | <ul><li>Добавлен триггер - вывод TX2 срабатывающий по установленным значениям температуры и/или влажности с гистерезисами. Передача состояния вывода RX2 при connect. Для термометров с экраном добавлен показ смайлика с "комфортом". Дополнены: изменение имени и MAC устройства.</li></ul> |
| 1.2 | <ul><li>Обработка и передача событий open/close со счетчиком с вывода маркированного "RX2" (для THB2 - "RX1").</li></ul> |
| 1.3 | <ul><li>Добавлен THB1 и TH05V1.3. Следующий этап уменьшения потребления для версий с LCD дисплеем и опция отключения дисплея.</li></ul> |
| 1.4 | <ul><li>Стабилизация соединения для всех вариантов устройств. Добавлен [TH05F](https://pvvx.github.io/TH05F). Коррекция хода RTC. Изменено BLE имя для TH05_V1.3 на "TH05D". Добавлены файлы для обновления Boot по OTA.</li></ul> |
| 1.5 | <ul><li>Добавлен вариант шифрования BLE рекламы с помощью BindKey.</li></ul> |
| 1.6 | <ul><li>Добавлено усреднение расчета напряжения батареи, дублирование состояния контакта open/close и счетчика через 12..20 сек (кратно интервалу рекламы) после срабатывания и далее каждые 30 минут.</li></ul> |
| 1.7 | <ul><li>Исправление ошибки (> 42 C) для сенсора CHT8305</li></ul> |
| 1.8 | <ul><li>Добавлено отображение температуры в градусах Фаренгейта</li></ul> |
| 1.9 | <ul><li>Исправлена ошибка восстановления измененного имени устройства после сброса питания</li></ul> |
| 2.0 | <ul><li>Добавлена обработка датчика CHT832x (поддержка платы TH05Y_v3.1)</li><li>Исправление ошибки в bin-файлах BOOT OTA</li><li>Добавлена функция сна при полном разряде батареи.</li><li>Добавлена опытная прошивка для брелков [iSearching](https://pvvx.github.io/iSearching) на чипе ST17H66B с поддержкой FindMy</li><li>Исправлены ошибки отображения для TH05D</li></ul> |
## Прошивка
Прошить устройство програмой `FW Boot` возможно через USB-COM адаптер с выходами на 3.3В:
* [Программирование брелка с ST17H66B описано отдельно](https://github.com/pvvx/THB2/issues/94#issuecomment-2529295288)
1. Соединить GND, TX, RX, RTSRESET, VCC (+3.3B).
| Адаптер | Устройство |
|---|---|
| GND | -Vbat |
| +3.3V | +Vbat |
| TX | RX or RX1 |
| RX | TX or TX1 |
| RTS or DTR | RESET or REST_N |
Если на адаптере отсутствует RST или DTR пин, тогда следует замкнуть вывод RESET с GND(-Vbat) и быстро разомкнуть при старте скрипта (вомзожно потребуется несколько попыток)
Название контактов на устройстве смотреть в описании по ссылкам:
* [THB1](https://pvvx.github.io/THB1)
* [THB2](https://pvvx.github.io/THB2)
* [THB3](https://pvvx.github.io/THB3)
* [BTH01](https://pvvx.github.io/BTH01/)
* [TH05_V1.3](https://pvvx.github.io/TH05-v1.3)
* [TH05_V1.4](https://pvvx.github.io/TH-05)
* [TH05F](https://pvvx.github.io/TH05F)
2. Установить python3 и необходимые библиотеки
```
pip3 install -r requirements.txt
```
3. Скачать необходимый для конкретного устройства файл BOOT_xxx_vxx.hex из директории [bin](https://github.com/pvvx/THB2/tree/master/bin) (вариант файла описан в # [Прошивка](https://github.com/pvvx/THB2/blob/master/README-ru.md#%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%B8-fw-boot-%D0%B8-app)).
4. Запустить:
```
python3 rdwr_phy62x2.py -p COM11 -e -r wh BOOT_xxx_vxx.hex
```
5. Прошивка `FW Boot` завершена. Устройство работает. Адаптер можно отсоединить.
6. Загружаем полную версию прошивки `FW APP` по OTA. Для этого:
1. Подаем питание на устройство или вставляем батарею.
2. Переходим на [PHY62x2BTHome.html](https://pvvx.github.io/THB2/web/PHY62x2BTHome.html).
3. Жмем кнопку `Соединение`, ищем устройство, подключаемся.
4. После подключение переходим на вкладку `OTA`, выбираем необходимую прошивку и жмем `Старт`.
7. Устройство должно перезагрузиться и будет готово для использования.
Дополнительно:
* Для предварительного стирания всей Flash используйте опцию `-a`.
* Для предварительного стирания рабочей области Flash используйте опцию `-e`.
* С помощью USB-COM адаптера возможно сразу дописать основную прошивку (APP)
```
python3 rdwr_phy62x2.py -p COM11 -r we 0x10000 xxx_vxx.bin
```
## Сохранение оригинальной прошивки
1. Соединить GND, TX, RX, RTSRESET, VCC (+3.3B).
2. Запустить:
```
python3 rdwr_phy62x2.py -p COM11 -r rc 0x11000000 0x80000 ff_thb2.bin
```
3. Полученный файл ff_thb2.bin сохранить.
## Восстановление оригинальной прошивки
* Оригинальную Tuya прошивку на конкретный тип устройства можно взять по ссылкам в таблице, находящейся в самом начале README.
1. Взять сохраненный файл ff_thb2.bin оригинальной прошивки.
2. Соединить GND, TX, RX, RTSRESET, VCC (+3.3B).
3. Запустить:
```
python3 rdwr_phy62x2.py -p COM11 -b 1000000 -r we 0 ff_thb2.bin
```
Не все адаптеры USB-COM поддерживают 1Mbit. Тогда удалите опцию `-b 1000000` или выберите другой вариант Baud rate (115200, 250000, 500000, 1000000).
4. Прошивка зашита. Устройство работает.
## Распределение Flash 512 килобайт
| Адрес | Описание | Размер |
|---|---|---|
| 0x00000 | Используется ROM | 8 килобайт |
| 0x02000 | Boot Info для ROM | 4 килобайта |
| 0x03000 | FW Boot с функцией OTA | 52 килобайта |
| 0x10000 | FW APP | 128 килобайт |
| 0x30000 | Запись истории | 304 килобайт |
| 0x7C000 | Сохранение настроек (EEP) | 16 килобайт |
## FW Boot и OTA
* `FW Boot` имеет функцию OTA, но не имеет функции записи истории и прочих дополнений. Служит для обработки OTA при любых неудачных или неправильных обновлениях.
* `FW APP` не имеет функции OTA, для OTA перезагружается в `FW Boot`. Имеет дополнительные функции и расширения.
Действие кнопки при включении питания устройства:
Если кнопка при старте нажата - всегда запускается `FW Boot`.
Если кнопка не нажата, проверяется есть или нет запись `FW APP`. Если есть `FW APP` запускает `FW APP`. Если нет `FW APP`, запускается `FW Boot`.
На термометрах с экраном, если не включено отображение времени, при старте или рестарте на короткое время на дисплее выводится:
* "Bot 14" - стартует прошивка `FW Boot` версия 1.4
* "APP 15" - стартует прошивка `FW APP` версия 1.5
Принудительно перезагрузиться в `FW Boot` из `FW APP` возможно двумя способами:
1. Отключить питание и удерживая кнопку включить питание.
2. Подать команду `7233` в меню `Service` программы PHY62x2BTHome.html и отключить соединение.
Полная перезагрузка - Подать команду `7201` в меню `Service` программы PHY62x2BTHome.html и отключить соединение.
## Событие Open/Close и счет импульсов
С версии 1.2 поддерживается опрос вывода подключенного к геркону или контакту, замыкающемуся на GND.
Максимальная частота переключения - 100 раз в секунду.
Если контакт имеет дребезг, тогда желательно зашунтировать контакт конденсатором на 1..100 нФ в зависимости от частоты переключения.
При замыкании или размыкании контакта передается блок из 5 BLE реклам следующих друг за другом через период в 50 мс.
При каждом событии "Open" значение счетчика прибавляется на 1. Сброс счетчика возможен отключением питания устрйоства.
Значение счетчика передается совместно с каждым событием "Open/Close".
Входной контакт для подключения геркона или контакта на плате термометра:
* На [THB1](https://pvvx.github.io/THB1) - маркирован как `RX`
* На [THB2](https://pvvx.github.io/THB2) - маркирован как `RX`
* На [THB3](https://pvvx.github.io/THB3) - маркирован как `RX`
* На [BTH01](https://pvvx.github.io/BTH01/) - маркирован как `RX2`
* На [TH05_V1.3](https://pvvx.github.io/TH05-v1.3) - маркирован как `RX0`
* На [TH05_V1.4](https://pvvx.github.io/TH-05) - маркирован как `RX2`
![image](https://github.com/pvvx/THB2/assets/12629515/09f6f810-f2e2-4b61-9c84-f7c3770bb76a)
![image](https://github.com/pvvx/THB2/assets/12629515/40de4978-2d97-4f79-af9d-565236d0ba2a)
## Вывод управления внешним устройством по температуре и/или влажности
Контакт на печатной плате с маркировкой "TX" или "TX2" управляется с помощью уставок с гистерезисами по температуре и влажности.
Имеется возможность переключения на инверсное управление.
Настройка производится в [PHY62x2BTHome.html](https://pvvx.github.io/THB2/web/PHY62x2BTHome.html).
Работа выхода назначается с помощью установки значения гистерезиса:
* Если значение гистерезиса равно нулю - переключений не будет.
* Если значение гистерезиса больше нуля - переключение (включение) произойдет при значении ниже уставка + гистерезис.
* Если значение гистерезиса меньше нуля - переключение (включение) произойдет при значении выше уставка + гистерезис.
## Сброс основных настроек
Установки основных параметров в начальные значения возможно произвести на смартфоне с Android в программе "nRFConnect".
Соединитесь с устройством и в сервис `0xFCD2` c характеристикой `0xFFF4` запишите `56`.
![image](https://github.com/pvvx/THB2/assets/12629515/85cfaf06-e430-492e-930a-536afb163b5b)
* Нажатие/отпускание кнопки временно меняет интервал соединения для подключения. Коротко нажмите кнопку и подключитесь за 60 сек. Если не успеваете - нажимайте кнопку чаще...
* В прошивке проверяются все установки на соответствие стандартам Bluetooth SIG.
Если интервал более 10 сек, то поставит 10 сек - это максимум в стандарте. Так и другие параметры.
Но не все BT адаптеры могут работать с интервалом 10 сек для соединения.
* **При работе с BLE в Linux обязательно требуется изменение опций Bluez и/или патчи kernel!**
---
## Сборка прошивки
Для сборки прошивки используется GNU Arm Embedded Toolchain.
Для работы в Eclipce используете импорт проекта и установите toolchain.path.
Дополнительная информация по чипам [PHY62xx](https://github.com/pvvx/PHY62x2).