Термостат для радиатора на базе MOES BRT100
Backlog
- Перевести provisioning в режим без пина и ключа;
Как-то нужно получить значения температур: текущую, желаемую, минимальную и максимальную;
Установить время;
- Временная зона - определить смещение;
Создать хранилище во внутреннем flash'е, стобы зранить все значения, которые мы можем получить от модуля.
- Реализовать сервер для Generic Battery
- Разобраться, как перевести модуль в спящий режим;
- Проконтролировать, чтобы модуль не потреблял буольше 0.81мA (810мкА).
- сброс сети: удерживать кнопку '-' 3 секунды
Описание оригинальной ZigBee конструкции
ZigBee модули
На данный момент известно о двух типах ZigBee модулей, которыми комплектуются термостаты BRT100: TYZS3 и ZT5.
Протокол TUYA
ID | Type | Описание |
0x1 | ENUM | Режим: 0 - programming, 1 - manual, 2 - temporary manual, 3 - holiday |
0x2 | VALUE | Желаемая температура (32) T = Val |
0x3 | VALUE | Текущая температура (230) T = (Val / 10) |
0x4 | BOOL | Boost heating [Rapid heating] |
0x5 | VALUE | Boost heating countdow (min) |
0x7 | ENUM | Status: 0 - нагрев, 1 - пауза |
0x8 | BOOL | A2 Open Window Detection (bool: false - close, true - open) [Window check] |
0x9 | ENUM | Window state: 0 - открыто, 1 - закрыто |
0xE | VALUE | Заряд батареи - проценты (0 - 100) |
0xD | BOOL | Блокоровка (true - заблокировано, false - разблокировано) [Child lock] |
0x65 | RAW | Hасписание: 12 записей размером 3 байта |
0x67 | VALUE | A7 Forced heating countdown [BoostTime] |
0x68 | VALUE | Статус вентиля (степень открытия 0 - 100) [Valve_Ratio] |
0x69 | VALUE | A1 Temperature compensation (-9 ~ 9) [FillerTemp] |
0x6A | BOOL | AA Energy saving mode [Eco_Mode] |
0x6B | VALUE | AB Energy saving mode temperature [Eco_Temp] |
0x6C | VALUE | A6 Max. temp [Upper SetTemp Limit] |
0x6D | VALUE | A5 Min. temp [Lower SetTemp Limit] |
Примечание: оказывается, не все параметры, изменяемые в конфигурационном меню, можно изменить удаленно.
Опции в настройках, которые нельзя изменить удаленно:
- A3 - Open Window Detection threshold
- A4 - The value of the valve closing time when the window is open.
- A9 - Dead zone temperature (0.5 - 5.0)
- AC - Low temperature protection (0-10)
- AD - Standby screen brightness (0-9)
- AE - Factory reset
- AF - Version number (READ ONLY)
Формат расписания.
Расписание представляет собой массив, размером 36 байт и представляет собой набор из 12 элементов по 3 байта в каждом:
!Номер байта | Описание |
0 | Часы: 0-23 |
1 | Минуты: 0-59 |
2 | Желаемая температура: T = Val / 2 |
Эти записи, в свою очередь, разделены на 3 группы: будние дни (понедельник - пятница), суббота и воскресенье. В каждой группе можно определить 4 временных интервала с желаемой температурой, например: ранее утро, утро, полдень, после полудня.
Номер байта | Описание |
Понедельник-пятница |
0 - 2 | Временной интервал 1 (ранее утро) |
3 - 5 | Временной интервал 2 (утро) |
6 - 8 | Временной интервал 3 (полдень) |
9 - 11 | Временной интервал 4 (после полудня) |
Суббота |
12 - 14 | Временной интервал 1 (ранее утро) |
15 - 17 | Временной интервал 2 (утро) |
18 - 20 | Временной интервал 3 (полдень) |
21 - 23 | Временной интервал 4 (после полудня) |
Воскресенье |
24 - 26 | Временной интервал 1 (ранее утро) |
27 - 29 | Временной интервал 2 (утро) |
30 - 32 | Временной интервал 3 (полдень) |
33 - 35 | Временной интервал 4 (после полудня) |
Описание Bluetooth Mesh модификации
Найденные проблемы
- Невозможно вывести Pin-код для процедуры provisioning на переднюю панель устройства. Нет возможности даже мигать светодиодом. Очевидно, следует реализовать provisioning вообще без pin-кода, или генерировать его на основе какой-нибудь уникальной информации, вроде физического адреса Bluetooth модуля.
- Нет возможности надежно получить полный список и значения всех объектов устройства. Устройство не реагирует на команды 06h и 28h. В конце-концов, термостат сам выдаст значения всех объектов, и будет сообщать об их изменении, но быть уверенным, что это произойдет в нужный момент мы не можем. Поэтому, нужно сохранять значения в persistent хранилище, чтобы можно было их получить в любой момент времени.
- Странно реализована индикация подключения к сети. Устройство реагирует на команду 02h только в короткий момент после сброса (команда 01h от модуля). Вернее, отвечает оно на эту команду всегда, но значок соединения повляется только сразу после сброса. Потом значок гаснет и больше не загорается никогда.
Распиновка Bluetooth модуля
Вывод | Описание |
GPIO13 | UART RX |
GPIO24 | UART TX |
GPIO0 | MCU Wakeup |
GPIO3 | Module Wakeup |