Предисловие
Бризеры компании Tion безусловно являются одними из самых популярных систем приточной вентиляции, но их интеграционные решения реализованы слабо. Сами устройства не оснащены модулем wi-fi, управление осуществляется по bluetooth. В этой статье попробуем решить вопрос с управлением бризеров в Sprut.Hub через MQTT и модуля ESP32. Есть варианты интеграций через модуль MagicAir от Tion в HomeAssistant c последующей проброской через обратный Homekit в Sprut.Hub и через модули Z-Wave в Sprut.hub. В первом случае потребуется поднимать отдельный сервер HomeAssistant и докупать MagicAir, во втором докупать модуль Z-Wave для Sprut.Hub и бризера.Предлагаемый вариант тоже "костыли", но "костыли" дешевые. К минусам решения можно отнести необходимость постоянно держать подключенную по питанию плату ESP32 в зоне действия Bluetooth бризера.
Для реализации потребуется плата ESP32, кабель USB ->microUSB с возможностью передачи данных, компьютер предпочтительно Mac или *nix. Все делаем на свой страх и риск.
Подготовка к настройке
1. Включаем и настраиваем брокер MQTT в Sprut.hub. Подробно останавливаться на этом не буду, все описано в wiki (не забываем в настройках поменять порт на 44444) При необходимости утанавливаем имя пользователя и пароль.
Теперь установим ESPHome
2. Устанавливаем Python c официального сайта
3. После установки открываем приложение Терминал и устанавливаем Esphome командой
pip3 install esphome
3.1. Если попросит обновить
pip3 install esphome --upgrade
4. Устанавливаем Xcode, он потребуется для компиляции прошивки. Xcode также возможно установить с офицального сайта Apple или магазина приложений, но если уж открыли терминал, то можно и командой
xcode-select --install
5. Далее устанавливаем Esp Dashboard для удобной работы через web интерфейс
pip3 install tornado esptool
6. Запускаем это великолепие
esphome dashboard config/
Теперь по адресу в вашем браузере localhost:6052 будет доступен интерфейс управления модулями ESP. Подключаем ESP32 по USB к компьютеру и создаем новый проект.
Прошивка ESP32
Выбираем "New device" задаем название нашего устройства и имя и пароль вашей wi-fi сети. После чего, устанавливаем прошивку на наше устройство.
После прошивки ваше устройство должно появиться в Dashboard со статусом online.
Открываем конфигурацию прошивки вашего устройства нажав кнопку EDIT, удаляем все содержимое.
Далее идем на страницу проекта esphome-tion и в разделе прошивка выбираем модель вашего бризера, копируем содержимое из примера конфигурации целиком и вставляем вместо удаленной конфигурации. В самом начале кода, в разделе substitutions, меняем MAC адрес на адрес вашего бризера. Его можно узнать в приложении Tion Remote.
Параметр node_name правим если у вас более 1 бризера. На каждый бризер у вас должно быть уникальное имя начинающееся на tion. Например: tion-bedroom, tion_livingroom, tion1980 и т.д. На каждый бризер отдельная плата ESP32.
substitutions:
# tion mac address.
tion_mac_address: 00:00:00:00:00:00
# name of the node.
node_name: tion-4s
Включаем в прошивке поддержку MQTT, для этого в самом конце прошивки добавляем код, в котором изменяем адрес брокера на адрес вашего Sprut.hub, а имя пользователя и пароль на ваши, которые вы установили когда настраивали MQTT в Sprut.hub. Если пароль не устанавливали, строчки username и password нужно удалить.
mqtt:
broker: 192.168.0.0
port: 44444
username: mqtt_username
password: mqtt_password
Устанавливаем прошивку (выбираем install), переводим бризер в режим сопряжения и включаем ESP32.
Шаблоны Sprut.hub
Для того, чтобы Sprut.hub обнаружил и добавил устройство ESP32 по MQTT необходим шаблон устройства.
Скачиваем шаблон и размещаем его в папке Templates/MQTT/Custome
{
"name": "Tion Breazer",
"manufacturer": "Tion",
"model": "4S",
"services": [
{
"name": "Бризер",
"type": "HeaterCooler",
"characteristics": [
{
"type": "Active",
"link": {
"type": "String",
"topicSearch": "(.*/climate/tion.*)/mode/state",
"topicGet": "(1)/mode/state",
"topicSet": "(1)/mode/command",
"map": {
"INACTIVE": "off",
"ACTIVE": "fan_only;heat"
}
}
},
{
"type": "CurrentTemperature",
"link": {
"type": "Double",
"topicGet": "(1)/current_temperature/state",
"checkValue": true
}
},
{
"type": "HeatingThresholdTemperature",
"link": {
"type": "Integer",
"topicGet": "(1)/target_temperature/state",
"topicSet": "(1)/target_temperature/command"
},
"minValue": 1,
"maxValue": 25,
"minStep": 1
},
{
"type": "CurrentHeaterCoolerState",
"link": {
"type": "String",
"topicGet": "(1)/mode/state",
"map": {
"INACTIVE": "off",
"HEATING": "heat",
"COOLING": "fan_only"
}
},
"validValues": "INACTIVE,HEATING,COOLING"
},
{
"type": "TargetHeaterCoolerState",
"link": {
"type": "String",
"topicGet": "(1)/mode/state",
"topicSet": "(1)/mode/command",
"map": {
"HEAT": "heat",
"COOL": "fan_only"
}
},
"validValues": "HEAT,COOL"
},
{
"type": "RotationSpeed",
"link": {
"type": "Integer",
"topicGet": "(1)/fan_mode/state",
"topicSet": "(1)/fan_mode/command"
},
"minValue": 1,
"maxValue": 6
}
]
}
]
}
Более подробно о том как и где размещать шаблоны описано в wiki Sprut.hub
Вместо эпилога
Важно еще раз отметить, что решение сырое и костыльное, но относительно простое и дешевое в реализации. На каждый бризер вам нужен будет свой шаблон и отдельная ESP32. В Алису бризер заходит как кондиционер, отдает туда статус и температуру, но работает только на вкл и выкл. Любые доработки шаблонов приветствуются.