mosave / Beok2MQTT

Upgrade Beok BOT 313 WiFi thermostat to MQTT client
GNU General Public License v3.0
4 stars 2 forks source link

MQTT controller for Beok BOT-313 thermostat

Замена WiFi модуля Broadlink в термостате Beok BOT-313 WiFi на ESP8266

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 устройство. Еще одним бонусом при этом является и возможность встраивания в термостат дополнительных сенсоров (датчик влажности, освещенности или движения).

Использованное железо

Прошивка WiFi контроллера

В каталоге BOT313Firmware находятся исходники вполне рабочей прошивки, которая тем не менее все еще находится в разработке. В основе прошивки лежит IoT Framework и поэтому (соответственно) поддерживает все основные команды управления устройством, реализованные в фреймворке.

Список MQTT топиков и соответствующих им команд для взаимодействия с термостатом

Пример описания термостата в файле конфигурации Home Assistant

  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'

Фотографии

Несколько фотографий можно найти здесь