В результате эксплуатации двух моделей термостатов из моих предыдущих заметок (да и блужданий по интернету и наблюдений за мытарствами со всего мира людей) было встречено такое огромное количество проблем, часть из которых носиЛО фатальный характер что было принято решение заняться их исправлением в силу того что найти какие либо обновления на них, либо (что несомненно лучше) сконтактировать как либо с авторами - не удалось.
Как известно - наша планета и так сильно засорена digital junk из-за отсутствия поддержки какой либо устройств после факта их продажи поэтому расчитывать можно только на себя :)

Стоит отметить что перешивать данными прошивками можно строго модели которые внешне выглядят как ниже на фотографиях. Модели где иконки выглядят по-другому, или перенесены в другие места - совершенно гарантированно не поддерживаются и приведут к окирпичиванию всего устройства. Ну и логично что если внешний вид совсем отличается - это совсем не ваш вариант!

Точно протестированные идентификаторы (они могут быть совершенно любыми и лавное смотреть на сами устройства)

TS0601 _TZE204_aoclfnxz
TS0601 _TZE200_aoclfnxz
TS0601 _TZE204_jrtvxwvy


Итак 2 довольно популярные:

Первый производится компанией из Китая Xiamen Beca Energysaving Technology Co., Ltd. Внешне - они молочно белые либо черные как обелиск. Построены на огромной светодиодной матрице (свыше 100 микросветодиодов). Экономичны. Есть модели с Wifi чипом, есть с Zigbee. Здесь прошивка только от устройств работающих в режиме "термостатов". Знаю, что еще существуют прошивки от фанкойл вариантов и rs-485. Там активированы дополнительные иконки и изменена логика работы. 
В целом Beca это огроменный ОЕМ производящий для огромного числа брендов "брендированные" версии устройств. Среди тех что точно видел - Fujihome, Electsmart, Moes, Wengart, Shtein, Teok ну и конечно же сама Beca.

Отдельно хочу выразить огромную благодарность и респекты настоящим авторам прошивки (прошивок этих) оригинальных, очевидно некоторые из которых работают в Beca! Все авторство принадлежит им. Моя роль только в исправлении встреченных ньюансов по итогу использования. Big shout to China engineers who developed such a great devices with corresponding firmwares! Thank you very much for your work and inspiration!

undefined

 Что по сравнению с оригиналом изменено?

1. Прекращен полностью спам сети zigbee пакетами (до 8 пакетов в секунду было в оригинале). Да вы не ослышались - теперь вам точно не удасться положить на лопатки все ваши Zigbee сети добавив к ним всего пару этих термостатов!
2. Общение с Tuya RF-мостом организовано согласно спецификациям Tuya MCU Serial Communication
3. Вернулся назад скрытый и дизабленый (в моей модели как минимум) эко-режим. По сути это просто преднастроенная жестко температура и всё. Для активации достаточно кнопочку верхнюю с 4мя квадратиками нажимать. Оно циклично между тремя режимами переключит (ручной режим, режим расписания, режим эко).
4. Массированная чистка и рефакторинг лишнего неиспользуемого
5. Все важные глобальные настройки работы термостата полностью обрабатываются из сети zigbee (Tuya DP чуток расширены)
6. Добавлена функция полного исключения записи каждого изменения получаемого из сети Zigbee. (это остановит циклы записи Flash и ее затирание до дыр). Сидит это на булевой DP 0x03
7. Теперь запись во флеш происходит в конце редактирования параметров а не при каждом(!) изменении любого.
8. Пишем во флеш только если действительно есть изменения. Например потеребонькать вкл выкл настройкой теперь не приведет к многократной перезаписи.
9. Экран установки температуры моргает когда она меняется в ручном режиме. Не знаю почему в оригинале этого не было.
10. Устранен спам регулярный ежеминутный температуры в сеть Zigbee даже если она не изменялась. Квант отсылки температуры всегда минута, но только если есть изменение.
11. Из сети можно устанавливать температуру с точностью 0.5 градуса. Теперь это ограничение вызвано чисто правилами проектирования UX/UI когда нельзя нарушать опыт пользовательский разными вариантами регулировки одного и того-же параметра. Поскольку термостат не способен отображать десятые доли градуса кроме 0.5 то увы только так.
12. Предотвращено бесконтрольное изменение НА ЛЮБОЕ ЗНАЧЕНИЕ полученное из сети Zigbee настроек. Они всегда проверяются на корректность.
13. Исправлены бесконечные проблемы с обработкой времени (високосный год, выходные и сдвиг в некоторых моментах дня недели). Время, кстати, термостат всегда использует локального часового пояса системы обслуживающей сеть.
14. Поскольку это умный термостат то введен механизм отправки до системы обслуживающей сеть ошибок (их всего 3 в этом) с помощью использования отдельного Datapoint DP 0x0D. Теперь как только термодатчик замкнет или оборвется, или температура превысит порог, или понизится ниже порога то максимум через минуту улетит в сеть соответствующего Tuya типа - DP BITMAP FAILURE report с битовой маской события. Это по настоящему важная функция по какой-то причине отсутствует почти во всех термостатах что я видел.
15. Добавлена отсутствующая проверка на замыкание в коде оценки аварийности показаний термодатчиков. Очень плохо потому что в случае ошибки реле будет "дуть в максимум не выключая нагрев".
16. Синхронизация времени приведена в порядок. Теперь вместо спама и часовой синхронизации происходит простой алгоритм: при появлени сети синкаемся каждые 1-3 минуты до успешной. Далее раз в 4 часа. Для небольшого распределения лавинной нагрузки на сеть делаем это с произвольно добавленными минутами. Это уберет заторы на больших сетях Zigbee с большим числом термостатов
17. Правильный и единый алгоритм (UX) нажатия на кнопки если включен режим не показывать экран в idle. Первое нажатие на любую кнопку не сразу перейдет к действию а вначале включит экран и только второе нажатие будет уже менять параметр. При включении режима childlock естессно игнор нажатий.
18. Версии... У данного термостата в одном месте 4.0.8 в другом 1.0.0. Если читать спецификации Tuya то максимально возможная версия устройств на экосистеме Tuya 3.3.15 в силу протокола (под версию выделен жестко 1 байт). Поэтому в целом версию назначил 1.1.0. Идентификатор прошивки aoclfnxz не изменял и остался тот что был (он генерируется Tuya платформой в момент оплаты и создания нового устройства). В целом если есть принципиальный момент - поменяйте в конце файла прошивки эти байты не нарушая размеров до заливки на свои.
19. В момент включения в сеть посылаем все наши DP аккуратно не спамя сеть а постепенно и все все без исключения и частей (раньше там был мрак из части значений).


Как выглядит термостат с перешивкой только одного MCU центрального не трогая RF-мост в Home Assistant (ZHA режим) ? (тривиальный tuya zha quirk v2 в архиве с прошивкой)

undefined

 

Номер два. Редкий но прикольный зверь. Мне не удалось найти кто его на самом деле производит. Никакой информации на коробке, документации и самом устройстве. В интернетах этих ваших встречаются под именем Avatto, Watch PNI, MVAVA, Fujihome.

 undefined

 

Что по сравнению с оригиналом изменено?

1. Не спамим в сетку Zigbee частыми пакетами.
2. Убрана синхронизация времени каждые 6 секунд(!). Теперь делаем это каждые 10 часов после успешной синхронизации. До этого каждые 10 секунд спрашиваем про время
3. Видимо, 6 секунд это специальная сакральная константа была чтобы понимать по наличию ответа "есть ли жизнь на марсе" есть ли сетевая коннекция живая. Потому что статус определения мы в сети или нет зажигал иконку в оригинале если приходил ВАЛИДНЫЙ пакет входящий Tuya протокола с синхронизацией времени либо DP пейлоадом. На этом вся обработка статуса в сети или нет заканчивалась.
4. Не высылаем больше в сеть Zigbee Tuya значение настройки подсветки экрана DP. Зачем так было в оригинале на такой супер неважный параметр - я не знаю но такое видение было авторов.
5. Добавлена отсылка параметра текущего выбранного термосенсора (внутренний либо внешний). Почему вот этого параметра не было в оригинале (в моем экземпляре как минимум) - загадка покрытая тайной.
6. Таймаут сохранения во флеш настроек измененных теперь не по каждому изменению а спустя примерно 10 секунд после последнего.
7. Изменение статуса блокировки кнопок теперь без обязательного наличия включенного состояния всего устройства.
8. Не меняем статус блокировки в ходе внутренних событий одно из которых банальное отключение устройства (да, при этом сразу же терялся статус блокировки кнопок). Волшебство хоггвардса.
9. Сохраняем статусы блокировки кнопок, работы устройства (вкл или выкл) в flash памяти и корректно возвращаем после включения в розетку. Да, раньше термостат всегда после подачи питания был в состоянии ВКЛ! Магия Хоггвардса
10. В меню настроек выбора термосенсора показываем не числа 00 или 01 а показываем буковки In либо Ou позволяющие повысить до невообразимых высот UX/UI.
11. Убран софтовый вотчдог иконки соединения если нет в течении 6ти секунд пакетов входящих (см пункт 2).
12. Сначала проверяем на корректность любые принятые из сети Zigbee Tuya настройки DP а уже потом их применяем.
13. Караул но почему-то при наличии ошибок любых в каналах термосенсоров - реле никаким образом НЕ блокировалось а оставалось включенным (в последнем состоянии)! Зато иконка на дисплее светилась Er постоянно и неважно какой был сенсор но иконка домика.
14. Унифицирован цикл отправки всех датапоинтов. Теперь они не частично посылаются а всегда все при установке соединения с сетью zigbee и при запросе со стороны Tuya.
15. У канала второго (внешнего) термодатчика отсутвовал фильтр третьей стадии который позволял сглаживать прыжки значения температуры в момент её переходов. У внутреннего этот фильтр - был. А у внешнего, где самые длинные провода и больше наводок - нет. Загадочный факт.
16. Исправлены проблемы обработки синхронизированного штампа времени из сети Tuya которые приводили к отсутствию воскресения и другим проблемам (в частности високосным годам). Тут по сути код первой прошивки copy-paste в другую кто-то сделал в оригинале как я понял.
17. Надпись ошибки Er теперь мигает на дисплее вместе с иконкой канала где случилась ошибка (иконка дома для внутреннего и иконка пола для внешнего). Почему этого не было в оригинале повышающем UX/UI - загадочно.
18. Поскольку это умный термостат - введен механизм доставки до системы обслуживающей сеть ошибок термостата (их всего 4) с помощью использования отдельного Datapoint DP 0x0D. Теперь как только термодатчик замкнет, или наоборот оборвется , неважно внутренний или внешний то в сеть уйдет сигнал соответствующего Tuya типа - DP BITMAP FAILURE report с битовой маской события. Это по настоящему важная функция по какой-то причине отсутствует почти во всех термостатах что я видел!
19. Добавлена функция позволяющая отключить сохранение любых настроек пришедших из сети zigbee. Это сохранит жизнь флеш памяти термостата если вдруг вздумается порулить серьезно меняя настройки setpoint каждый час. В оригинале от такой рулежки "в тыкву" быстро выйдет флешка. Сидит это на булевой DP 0x03

 Как выглядит термостат с перешивкой только одного MCU центрального не трогая RF-мост в Home Assistant (ZHA режим) ? (тривиальный tuya zha quirk v2 в архиве с прошивкой) 

undefined

Та самая часть посвященная обработке ошибок
undefinedundefined
undefined

 


Напоминаю что абсолютно любые манипуляции вы делаете на свой страх и риск. Не имея в руках вашего термостата помочь я могу максимум - советом если что-то не так.

Прошивки предоставляются как есть (AS-IS) в виде zip-архивов с двумя файлами внутри. Самим бинарным файлом прошивки и ZHA tuya quirk v2 для Home Assistant. При использовании с другим софтом обслуживающим вашу Zigbee сеть - дополняйте самостоятельно. Прошивки не меняют в корне всю концепцию, существующие формулы расчетов , фильтрации , кондиционирования сигналов и методов работы с реле и термопетлями. Они аутетично представляют оригиналы максимально но содержат исправления обозначенных списком проблем выше и только.

Хочется отметить важный момент - НЕ нарушена совместимость базовая с экосистемой Tuya Smart Life. т.е. исправленный термостат должен работать штатным образом в этой экосистеме (конечно исключая добавленные DP 0x03, 0x0D), просто без перечисленных выше недостатков ;) Теоретически, насколько я понимаю экосистему - RF чип второй это простой радиомост между главным микроконтроллером и разными беспроводными сетями. Т.е. если скажем у вас Wifi вариант то просто поменяв прошивку вроде бы должно работать так-же и дальше. Но это совсем не тестировал т.к. под рукой нету варианта с Wifi для эксперимента.


Итак для перешивки следует:
1. взять с Github Python флешер и внимательно прочесть инструкцию по использованию
2. сделать бэкап текущей прошивки в файл
3. прошить бинарник новой прошивки
4. убедиться что всё работает ожидаемым образом. Если нет - вернуть оригинал прошивки и спать спокойно.


Но существует и второй путь. Если вы Brave enough совсем и хотите чистого совершенно от всего кастома. Тогда можно перешить вообще всё что есть! на всю котлету!
Для этого в случае первого термостата идем в этот Github репозиторий и там делаем всё следуя инструкции.
Для второго термостата идем в этот Github репозиторий и там делаем всё тоже по инструкции.
По второму пути у вас появится еще и функция отсутствующая (несмотря на поддержку такого в спецификациях Tuya!) - перешивки обеих микроконтроллеров через OTA Zigbee.