WiFi термостаты Beok вполне заслуженно ценятся "умнодомостроителями" и давно зарекомендовали себя как функциональные, отработанные и надежные устройства. Они имеют неплохой внешний вид и несколько дизайнов на любой вкус, удобный интерфейс и гибкую систему работы по расписанию в автоматическом режиме.
Штатное приложение умеет управлять термостатами в локальной сети (без выхода наружу) либо через пропиретарные облачные скревера. Но, к сожалению, к самому приложению Beok Home как раз есть претензии.
Кроме того рано или поздно возникает задача интегрировать термостат в локальную систему управления типа MajorDoMo или HomeAssistant. А поскольку WiFi часть этих термостатов построена на базе стандартного модуля Broadlink - эта задача решается с помощью установки соответствующей интеграции, например модуля Broadlink для MajorDoMo + SBeokThermostat). К сожалению, эти модули периодически опрашивают состояние всех зарегистрированных устройств, что создает дополнительную нагрузку на сервер и приводит к сушественным задержкам при отрабатывании сценариев "по событию". Особенно это заметно если часть термостатов по какой-то причине находится в офлайне.
Хотелось бы упростить интеграцию в локальные системы умного дома, обеспечив им прямой доступ к термостату по протоколу MQTT. Это позволит не только разгрузить сервер умного дома, отказавшись от модуля интеграции, но и реализовать независимые от сервера сценарии управления на уровне протокола MQTT.
Как было отмечено выше, удаленное управление термостаом реализовано на базе пропиретарного WiFi модуля Broadlink BL3335-P (описание можно найти в Docs), который взаимодействует с контроллером термостатоа через последовательный интерфейс (9600/None/1). К сожалению, BL335-P имеет закрытую прошивку и инструменты разработки. Однако анализ данных, передаваемых по uart показал, что для управления MCU используется тот же протокол, что уже реализован в модуле Broadlink для MajorDoMo. Поэтому оказалось достаточно просто заменить модуль BL335 на ESP8266 и превратить термостат в полноценное клиентское MQTT устройство. Еще одним бонусом при этом является и возможность встраивания в термостат дополнительных сенсоров (датчик влажности, освещенности или движения).
- Термостат:
- Beok BOT-313 WiFi с любым суффиксом (от $25) (проверено)
- Beok TGP-51 WiFi с любым суффиксом ($35) (проверено)
- Все термостаты, совместимые с модулем Broadlink для MajorDoMo в режиме "PHP only".
- С большой вероятностью любой WiFi термостат Beok. Но здесь, понятно, никаких гарантий дать нельзя.
- ESP-01S или любой другой ESP8266 модуль (от $10/10шт)
- Дополнительный датчик влажности GY-213V-HTU21D ($11/10шт)
В каталоге BOT313Firmware находятся исходники вполне рабочей прошивки, которая тем не менее все еще находится в разработке. В основе прошивки лежит IoT Framework и поэтому (соответственно) поддерживает все основные команды управления устройством, реализованные в фреймворке.
-
Power: Состояние термостата. 1 - включен, 0 - выключен
- SetPower: Включить (1) или выключить (0)
-
RoomTemp: Текущая температура воздуха (точность 0.5°)
-
FloorTemp: Текущая температура внешнего датчика, если поддерживается и установлен
-
FloorTempMax: Максимальная температура разаргрева пола (при наличии датчика температуры пола)
- SetFloorTempMax: Установка максимальной температуры разогрева пола
-
TargetTemp: Текущая целевая температура
- SetTargetTemp: Установка целевой температуры
-
TargetTempMax..TargetTempMin: Диапазон допустимых значений целевой температуры
-
AutoMode: Включен автоматический (1) либо ручной (0) режим управления
- SetAutoMode: Выбор автоматического (1) либо ручного (0) режима управления
-
Sensor: Конфигурация датчиков температуры (зависит от модели термостата, см. документацию)
- SetSensor: Выбор конфигурации датчиков температуры
-
Heating: Состояние реле управления обогревателем. 1 - обогреватель включен, 0 - выключен
-
Locked: Блокировка кнопок: 1 - включена, 0 - выключена
- SetLocked: Включить (1) или выключить (0) блокировку кнопок
-
TargetSetManually: В режиме автоматического управления целевая температура была изменена кнопками (1/0)
-
LoopMode: Текущий способ выбора первого или второго расписания в автоматическом режиме: 0: 5+2 дня, 1: 6+1 день, 2: 7 дней (см. документацию к термостату)
- SetLoopMode: Установка способа выбора расписания, 0, 1 или 2
-
Schedule, Schedule2: Первое и второе расписания в режиме автоматической работы. Указывает с какого времени требуется установить заданную температуру. В первом расписании определяется 5 временных интервалов, во втором расписании только 2 (см. документацию к термостату)
- SetSchedule, SetSchedule2: Установка расписаний работы. Формат соответствует значению топиков Schedule и Schedule2
-
Hysteresis: Точность, с которой будет выдерживаться заданная температура
-
AdjTemp: Поправка к значению датчика температуры RoomTemp/FloorTemp уже учитывают эту поправку.
- SetAdjTemp: Задание поправки значения датчика температуры
-
AutoAdjMode: Режим автоматического управления коррекцией датчика температуры AdjTemp. Доступен только при использовании дополнительного встроенного цифрового датчика температуры и влажности и управляет температурой воздуха (Sensor=0).
Доступные режимы:
0: AdjTemp задается только вручную либо топиком SetAdjTemp в настройках термостата;
1: RoomTemp подгоняется под температуру цифрового датчика (топик Sensor/Temperature)
2: RoomTemp подгоняется под субъективно ощущаемую температуру ("индекс тепла", топик Sensor/HeatIndex)- SetAutoAdjMode: Установка режима автоматического управления коррекцией датчика температуры.
-
AntiFroze: Режим защиты от замерзания включен (1) либо выключен (0)
- SetAntiFroze: Управление режимом защиты от замерзания (0/1)
-
PowerOnMemory: Восстанавливать (1) или не восстанавливать (0) состояние термостата после пропадения питания
-
Time, Weekday: Время (ЧЧ:ММ) и текущий день недели (1..7)
- SetTime, SetWeekday: Задание текущего веремени и дня недели. Допустимый формат времени "ЧЧ:ММ" или "ЧЧ:ММ:СС". В случае если в Config.h определена константа TIMEZONE - время будет автоматически синхронизироваться по первому доступному NTP серверу в следующем порядке: "адрес MQTT брокера", "time.google.com" и "time.nist.gov".
-
HAction: Home Assistant: Композитное состояние термостата. Параметр action_topic (см. ниже). Может принимать значения "off", "idle", "heating"
-
HAMode: Home Assistant: Композитный режим работы термостата. Параметр mode_state_topic. Допустимые значения "off","heat" (нормальный режим работы) и "auto" (режим работы по расписанию)
- SetHAMode: Home Assistant: Задание режима работы. Параметр mode_command_topic
climate 'bedroom_thermostat':
unique_id: 'bedroom_thermostat'
name: 'bedroom_thermostat'
platform: mqtt
availability:
topic: 'Bedroom/Thermostat/Online'
payload_available: '1'
payload_not_available: '0'
temperature_unit: C
temp_step: 0.5
max_temp: 25
min_temp: 15
precision: 0.5
modes: ["off", "heat","auto"]
current_temperature_topic: 'Bedroom/Thermostat/RoomTemp'
temperature_state_topic: 'Bedroom/Thermostat/TargetTemp'
temperature_command_topic: 'Bedroom/Thermostat/SetTargetTemp'
action_topic: 'Bedroom/Thermostat/HAction'
mode_state_topic: 'Bedroom/Thermostat/HAMode'
mode_command_topic: 'Bedroom/Thermostat/SetHAMode'