Автор не несет никакой отвественности, если вы, воспользовавшись этим проектом, превратите свой умный термостат в полоумный.
Проверялись только термостаты перечисленные выше. Если у вас другая сигнатура, лучше не заливать, не проверив на совпадение датапоинтов.
Теоретически прошивку можно адаптировать для любого термостата у которого IEEE начинается на
A4 C1 38
Если начало IEEE отличается от указанного, то в термостате применен другой чип в Zigbee модуле, и про обновление можно забыть.
Проверялся только в zigbee2mqtt.
Чтобы не спамил в сеть. Первый экземпляр (см. выше) посылал 25 пакетов каждые 8 секунд.
About
Exposes
Reporting
Сначала подключаем к z2m два внешних конвертора tuya_thermostat_orig.js
и tuya_thermostat.js
. Первый активирует OTA в z2m для термостата с прошивкой от Tuya. Второй нужен для термостата с уже обновленной (кастомной) прошивкой. В конверторах менять ничего не надо, все должно подхватиться автоматом.
Далее нужно добавить локальное хранилище обновлений.
Создаем директорию images
в директории z2m и кладем туда файл 1141-d3a3-1111114b-tuya_thermostat_zrd.zigbee.
Копируем в директорию z2m файл local_ota_index.json
Если у вас версия z2m ниже 2.0, то добавляем это все в конфиг z2m (configuration.yaml). Должно получиться что-то в этом роде.
external_converters:
- tuya_thermostat_orig.js
- tuya_thermostat.js
ota:
zigbee_ota_override_index_location: local_ota_index.json
Если же версия 2.0 и выше, то в конфиг z2m (configuration.yaml) добавляем только локальное хранилище
ota:
zigbee_ota_override_index_location: local_ota_index.json
А два конвертора кладем в директорию external_converters
, которую нужно создать в корне z2m.
Далее перегружаем z2m. И видим у нас новое устройство (если термостат уже был в сети и виден в z2m).
Далее идем в раздел OTA. И видим там свое устройство. Жмем проверить обновления.
Жмем на красную кнопку. И обновляемся.
Если все не так, как описано, значит вы что-то сделали не по инструкции (не положили файл куда нужно, не перегрузили z2m) или сигнатуры вашего термостата нет в списке поддерживаемых устройств.
[!WARNING] Внимание!!! Если в процессе вы обнаружите на каких-то устройствах Туя, которые возможно у вас есть еще в системе, новое обновление, то обновлять ничего не нужно!!! Иначе вы зальете в это устройство прошивку от термостата и получите кирпич!!! Если же процесс обновления по ошибке уже начался, то просто обесточьте это устройство!!!
Далее ждем окончания. После этого мы в OTA видим наш термостат со старым именем, но уже с новыми Firmware build date
и Firmware version
.
Вот так выглядит лог при первом старте после обновления с прошивки Tuya на кастомную.
OTA mode enabled. MCU boot from address: 0x8000
Firmware version: v1.0.04
Tuya bootloader
Bootloader is overwritten. Reset
OTA mode enabled. MCU boot from address: 0x8000
Firmware version: v1.0.04
SDK bootloader
out_pkt <== 0x55AA02000101000003
inp_pkt ==> 0x55AA02000101001C7B2270223A2265646C38707A316B222C2276223A22312E302E30227D8D
Tuya signature found: "edl8pz1k"
Use modelId: Tuya_Thermostat_r02
Далее идем в радел Devices
и жмем на нашем термостате справа символ “i” и подтверждаем. Таким образом мы заставляем устройство пройти интервью заново.
Далее опять справа жмем символ . Тем самым заставляя устройство пройти конфигурирование заново.
Все, термостат готов к работе.
[!WARNING] Внимание!!! Если после успешного обновления и всех выполненных указаний выше термостат остается со старым именем, то удалите его принудительно из сети, перегрузите z2m и сделайте сопряжение по-новой. Если в процессе сопряжения термостат моргает значком сети, но ничего не происходит, нужно снять питание с термостата (обесточить) и подать питание заново.
В Home Assistant это выглядит так
Берем последний файл local_ota_index.json
, кладем его в директорию z2m, перегружаем z2m. Далее берем последний файл прошивки OTA с именем 6565-0391-xxxxxxxx-tuya_thermostat_zrd.zigbee
и копируем его в директорию images
, которая у вас должна уже быть в корне zigbee2mqtt
. Проверяем обновление на нужном термостате и обновляемся.
Все.
P.S. В реальной работе не проверялось, требует всестороннего тестирования.
Более развернутое описание для самого первого термостата тут
Связаться со мной можно в Telegram.
Спасибы :))
@ruslikx3m за первый предоставленный термостат _TZE204_u9bfwha0
на растерзание.
@immortal_serg за предоставленный термостат _TZE204_edl8pz1k
.
@chernyshevruslan за предоставленные термостаты _TZE204_tagezcph
в двух разных исполнениях и _TZE204_xyugziqv
.
@Alleol за предоставленный термостат _TZE204_lzriup1j
.
@terekhins за предоставленный термостат _TZE204_aoclfnxz
производства MOES
.
@dbunevich за предоставленный термостат _TZE204_mpbki2zm
.
https://github.com/doctor64 @doctor_64 - за желание всегда помочь и направить в правильное русло.
https://github.com/devbis @Belokobylskiy - за идеи и написание скриптов на Питоне и для конвертора z2m.
@goofyk - за терпение и за хорошее знание z2m.
https://github.com/pvvx - за замечательный программматор для чипов Telink.
_TZE204_aoclfnxz
. Устранена проблема с обновлением OTA._TZE204_edl8pz1k
.watchdog
.Теперь при обновление на кастомную прошивку, термостаты с разными сигнатурами, но по сути являющиеся одинковыми устройствами, будут получать одинаковое групповое имя, не зависимо от сигнатуры.
Один для термостата с оригинальной прошивкой, второй для уже термостата с кастомной прошивкой. Что-то менять в них не нужно.
_TZE204_tagezcph
Проверяли два термостата, один с поворотной ручкой внизу посередине, второй внизу справа.
Раньше счет шел от 0. Сейчас от 1. Сделано просто для удобства, чтобы самому не запустаться. Например, раньше было type0, теперь это type1 и т.д.
_TZE204_xyugziqv
local_ota_index.js
- явно указаны устройства, которые подлежат обновлению.watchdog
в работу uart. Могла произойти такая ситуация - при продолжительном неответе MCU ZTU перегружался.zigbee2mqtt
2.0.0_TZE204_5toc8efa
производства BSEED (GL86HTEZ1B)._TZE204_lzriup1j
производства Avatto (ZWT10016A).UART
. По стандарту Tuya Zigbee Serial protocol скорость может быть 9600
или 115200
._TZE204_aoclfnxz
производства MOES
. По результатам модифицирован код обработки входящих и исходящих пакетов в uart
._TZE200_edl8pz1k
.System Mode
. При сбросе модуля этот параметр выставлялся в 0, что удаленными системами воспринималось, как-будто термостат выключен._TZE204_mpbki2zm
.