Статья

Подключение кондиционеров Mitsubishi Heavy к Home Assistant с помощью MHI-AC-Ctrl модуля

Предисловие

Долгое время, мой кондиционер Mitsubishi Heavy SRK25ZS-S / SRC25ZS-S был интегрирован в Home Assistant с помощью квадратного шлюза Aqara Air Conditioning Companion, он же шлюз 3-й версии KTBL01LM "lumi.acpartner.v1" и пользовательского компонента Xiaomi Mi and Aqara Air Conditioning Companion.

Нельзя сказать, что я полностью был доволен их совместной работой. Когда кондиционер управлялся из Home Assistant, реакция была моментальная, но при управлении родным пультом ДУ кондиционера, была задержка обратной связи с Home Assistant. Дело в том, что в компоненте есть настраиваемый параметр - интервал сканирования статуса кондиционера scan_interval, по умолчанию он выставлен на 60 секунд, но сколько бы ты не выставил, это все равно задержка по времени.

В HA у меня настроены автоматизации с уведомлениями в Telegram и Google Home mini о включении, выключении и смене режимов работы кондиционера. Очень странно, когда ты выключаешь кондиционер с пульта ДУ, а из-за задержки обратной связи, Умная Колонка тебе сообщает об этом спустя минуту, когда ты уже занимаешься чем-то другим и совсем забыл про тот кондиционер. Я бы не сказал, что это прямо катастрофа, но это основной момент, который мне не нравился.

Способ управления

Я знал, что для управления по Wi-Fi кондиционерами Mitsubishi Heavy Industries (MHI), серий SRK/SRF/SRR, существует родной Wi-Fi адаптер, который подключается к разъёму CNS, платы управления внутреннего блока и имеет свое приложение Airconwithme. Управление, естественно, происходит через сервера самого приложения. Данный способ для меня не подходит.

Мне было интересно, существует ли подобный DIY модуль для этих кондиционеров, который можно завести в HA? И тут, случайно, в одном из Telegram каналов Sprut.ai, в обсуждениях, я наткнулся на проект MHI-AC-Ctrl на GitHub, где автор, основываясь на другой проект, который уже больше не активен, разработал свой DIY модуль MHI-AC-Ctrl, со своей прошивкой.

В собранном виде модуль MHI-AC-Ctrl выглядит так, как представлено на фото.

Он также подключается к разъёму CNS на плате управления внутреннего блока, обменивается данными с кондиционером по протоколу SPI, а управлять кондиционером можно по протоколу MQTT. Автор не привязывается к какой-то конкретной системе автоматизации, но для Home Assistant его проект отлично подходит. Есть конечно свои особенности, но обо всем по порядку.

Поддерживаются следующие модели кондиционеров Mitsubishi Heavy Industries:

SRF xx ZJX-S1SRK xx ZJ-SSRK xx ZM-SSRK xx ZS-SSRK xx ZJX-S

SRK xx ZJX-S1SRK xx ZSA-WSRK xx ZSX-SSRK xx ZSX-WSRK xx ZS-W

Компоненты и подключение

На странице Hardware проекта MHI-AC-Ctrl, есть вся необходимая информация для изготовления и подключения платы модуля MHI-AC-Ctrl. Скачиваем архив с Gerber файлами печатных плат и отправляем их на изготовление китайцам на pcbway.com.

Основную часть компонентов заказывал на aliexpress, такие, как WeMos D1 Mini, Level Shifter 4ch, кабели и разъемы, а мелочовку докупал у себя в городе, в магазине радиодеталей.

С подключением проблем не возникло. Необходимо добраться к плате управления внутреннего блока кондиционера, ничего при этом не отломать и не потерять, и подключиться к разъёму CNS. Тут только надо обратить внимание, что модуль MHI-AC-Ctrl подсоединяется к кондиционеру пятью контактами, два из которых SCL и MOSI имеют перекрестное расположение на разъемах. Важно не пропустить этот момент.

Прошивка

В основе MHI-AC-Ctrl лежит плата WeMos D1 mini, на основе Wi-Fi модуля ESP-12F, на чипе ESP8266, у нее на плате есть micro USB разъем, через который ее можно прошить. Кто не знает, прошивается она с помощью программы Arduino IDE. Для подключения платы WEMOS D1 mini к компьютеру, нужно установить драйвер для чипа СH340G. Последнюю версию прошивки MHI-AC-Ctrl можно скачать со страницы проекта. В разделе Software указано, какие необходимо установить библиотеки перед прошивкой. В описании указано, что WeMos D1 mini можно также прошить и по Wi-Fi (без подключения к USB порту компьютера), но существует общая проблема OTA, не связанная с MHI-AC-Ctrl, которая не дает этого сделать.

Конфигурация прошивки

На странице SW-Configuration подробно изложены настройки параметров конфигурации прошивки.

В файле прошивки support.h необходимо будет прописать свои настройки Wi-Fi, MQTT, OTA и раскомментировать следующую строку для корректной работы изменения режимов работы on/off кондиционера с Home Assistant:

//#define POWERON_WHEN_CHANGING_MODE true // uncomment it to switch on the AC when the mode (heat, cool, dry etc.) is changed

А вот то, с чем я столкнулся и без чего Home Assistant не хотел взаимодействовать с MHI-AC-Ctrl, несмотря на то, что все топики отображались в MQTT Explorer, команды из HA не отрабатывались. Дело в том, что топики чувствительны к регистру. Для MQTT в Home Assistant важно, чтобы все управляющие команды в топиках были в нижнем регистре, для этого в файле MHI-AC-Ctrl.h

необходимо изменить команды, прописать все в нижнем регистре:

// MQTT payload text #define PAYLOAD_CONNECTED_TRUE "1" #define PAYLOAD_CONNECTED_FALSE "0" #define PAYLOAD_CMD_OK "o.k." #define PAYLOAD_CMD_UNKNOWN "unknown command" #define PAYLOAD_CMD_INVALID_PARAMETER "invalid parameter" #define PAYLOAD_POWER_ON "On" #define PAYLOAD_POWER_OFF "Off" #define PAYLOAD_MODE_OFF PAYLOAD_POWER_OFF #define PAYLOAD_MODE_AUTO "Auto" #define PAYLOAD_MODE_STOP "Stop" #define PAYLOAD_MODE_DRY "Dry" #define PAYLOAD_MODE_COOL "Cool" #define PAYLOAD_MODE_FAN "Fan" #define PAYLOAD_MODE_HEAT "Heat" #define PAYLOAD_VANES_UNKNOWN "?" #define PAYLOAD_VANES_SWING "Swing" #define PAYLOAD_OP_DEFROST_ON "On" #define PAYLOAD_OP_DEFROST_OFF "Off" #define PAYLOAD_REQUEST_RESET "reset"

меняем на:

// MQTT payload text #define PAYLOAD_CONNECTED_TRUE "1" #define PAYLOAD_CONNECTED_FALSE "0" #define PAYLOAD_CMD_OK "o.k." #define PAYLOAD_CMD_UNKNOWN "unknown command" #define PAYLOAD_CMD_INVALID_PARAMETER "invalid parameter" #define PAYLOAD_POWER_ON "on" #define PAYLOAD_POWER_OFF "off" #define PAYLOAD_MODE_OFF PAYLOAD_POWER_OFF #define PAYLOAD_MODE_AUTO "auto" #define PAYLOAD_MODE_STOP "stop" #define PAYLOAD_MODE_DRY "dry" #define PAYLOAD_MODE_COOL "cool" #define PAYLOAD_MODE_FAN "fan_only" #define PAYLOAD_MODE_HEAT "heat" #define PAYLOAD_VANES_UNKNOWN "?" #define PAYLOAD_VANES_SWING "swing" #define PAYLOAD_OP_DEFROST_ON "on" #define PAYLOAD_OP_DEFROST_OFF "off" #define PAYLOAD_REQUEST_RESET "reset"

Там же необходимо заменить команду "Fan" -> "fan_only", без этого не отрабатывается команда режима вентиляции.

Настройка Home Assistant

Подключив модуль MHI-AC-Ctrl к кондиционеру, для проверки его работоспособности запускаем программу MQTT Explorer и подключаемся к своему MQTT брокеру. Если мы все правильно сделали, то должны увидеть топики. В моем случае, модуль отдает топики и их значения, просматриваемые на картинке слева:

В своей интеграции я использовал не все перечисленные статусы и операционные данные, а только те, которые я посчитал для себя наиболее интересными. Полный список с описанием можно посмотреть на странице проекта. Некоторые из них очень полезные, так как позволяют выявлять неисправности кондиционера, если они имеются.

Для интеграции MHI-AC-Ctrl модуля в Home Assistant, необходимо в файле configuration.yaml добавить климатическую платформу MQTT HVAC. Я вынес ее в отдельный файл climate.yaml. При этом в основном конфиге указываем следующее:

climate: !include includes/climate.yaml

А в созданном файле climate.yaml указываем следующее:

- platform: mqtt unique_id: mhi0001 name: "Mitsubishi Heavy" initial: 22 min_temp: 18 max_temp: 30 modes: - "auto" - "dry" - "cool" - "fan_only" - "heat" - "off" swing_modes: - "1" - "2" - "3" - "4" - "swing" fan_modes: - "1" - "2" - "3" - "4" mode_command_topic: "MHI-AC-Ctrl/set/Mode" mode_state_topic: "MHI-AC-Ctrl/Mode" temperature_command_topic: "MHI-AC-Ctrl/set/Tsetpoint" temperature_state_topic: "MHI-AC-Ctrl/Tsetpoint" fan_mode_command_topic: "MHI-AC-Ctrl/set/Fan" fan_mode_state_topic: "MHI-AC-Ctrl/Fan" swing_mode_command_topic: "MHI-AC-Ctrl/set/Vanes" swing_mode_state_topic: "MHI-AC-Ctrl/Vanes" current_temperature_topic: "MHI-AC-Ctrl/Troom"

В разделе сенсоров, я создал сенсоры со своими именами и вынес их так же в отдельный файл mhi_data.yaml в папке sensors:

sensor: !include_dir_merge_list includes/sensors

- platform: mqtt state_topic: "MHI-AC-Ctrl/Power" name: "mhi power" icon: mdi:power - platform: mqtt state_topic: "MHI-AC-Ctrl/Mode" name: "mhi mode" icon: mdi:air-conditioner - platform: mqtt state_topic: "MHI-AC-Ctrl/OpData/OUTDOOR" name: "mhi outdoor temperature" unit_of_measurement: '°C' - platform: mqtt state_topic: "MHI-AC-Ctrl/OpData/CT" name: "mhi current" unit_of_measurement: 'А' icon: mdi:current-ac - platform: mqtt state_topic: "MHI-AC-Ctrl/OpData/IU-FANSPEED" name: "mhi indoor fan speed" icon: mdi:fan-speed-1 - platform: mqtt state_topic: "MHI-AC-Ctrl/OpData/OU-FANSPEED" name: "mhi outdoor fan speed" icon: mdi:fan-speed-2 - platform: mqtt state_topic: "MHI-AC-Ctrl/OpData/TOTAL-IU-RUN" name: "mhi hours indoor unit" unit_of_measurement: 'ч' icon: mdi:clock-time-four - platform: mqtt state_topic: "MHI-AC-Ctrl/OpData/TOTAL-COMP-RUN" name: "mhi hours compressor" unit_of_measurement: 'ч' icon: mdi:clock-time-four - platform: mqtt state_topic: "MHI-AC-Ctrl/OpData/COMP" name: "mhi compressor frequency" unit_of_measurement: 'Гц' icon: mdi:current-ac - platform: mqtt state_topic: "MHI-AC-Ctrl/Errorcode" name: "mhi errorcode" icon: mdi:alert-circle - platform: mqtt state_topic: "MHI-AC-Ctrl/OpData/PROTECTION-NO" name: "mhi protection number compressor" icon: mdi:alert-circle - platform: mqtt state_topic: "MHI-AC-Ctrl/OpData/DEFROST" name: "mhi defrost control" icon: mdi:car-defrost-front

Прошивка MHI-AC-Ctrl позволяет из HA перезагрузить при необходимости плату WeMos D1 mini, а также Вкл/Выкл функцию разморозки кондиционера. Хоть данная опция полностью автоматизирована сплит-системой, если она имеется, я все-таки ее добавил и оформил в виде скриптов в отдельном файле mhi_operating_data.yaml в папке scripts.


Функция разморозки кондиционера включается самостоятельно, когда в холодное время года кондиционер включается в режиме Отопления, а количество льда и снега, намерзшее на внешнем блоке, превышает допустимый максимум. В этом случае кондиционер самостоятельно включает подогрев, который и растапливает замерзшие образования на поверхности наружного блока. По мере освобождения ото льда и снега, функция разморозки также самостоятельно отключается.

script: !include_dir_merge_named includes/scripts

# Перезагрузка WeMos D1 mini mhi_reebot: sequence: - service: mqtt.publish data: topic: MHI-AC-Ctrl/reset payload: "reset" # Включение Разморозки Кондиционера mhi_defrost_on: sequence: - service: mqtt.publish data: topic: MHI-AC-Ctrl/OpData/DEFROST payload: "on" # Выключение Разморозки Кондиционера mhi_defrost_off: sequence: - service: mqtt.publish data: topic: MHI-AC-Ctrl/OpData/DEFROST payload: "off"

В файле customize.yaml дал названия скриптам.

script.mhi_reebot: friendly_name: Перезагрузка WeMos D1 mini icon: mdi:chip script.mhi_defrost_on: friendly_name: Включение Разморозки Кондиционера icon: mdi:car-defrost-front script.mhi_defrost_off: friendly_name: Выключение Разморозки Кондиционера icon: mdi:car-defrost-front

Интерфейс Lovelace

Для управления кондиционером в Home Assistant с интерфейсом Lovelace, я использовал стандартную карточку Thermostat Card, а для отображения интересующих меня данных о статусе кондиционера - Entities Card. Вот что у меня получилось:

Раскрыв карточку, мы получаем возможность выбора:

Режима работы:

АвтоОбогревОхлаждениеОсушениеВентиляцияВыключено

Режима скорости вентилятора:

1234

Положение шторок по вертикали:

1234swing (Колебание)

Стоит отметить, что когда последняя команда была получена с пульта ДУ кондиционера, тогда статус шторок в HA неизвестен и отображается как "?".

В папке lovelace создал файл air_conditioner.yaml:

title: Климат icon: mdi:home-thermometer cards: - type: vertical-stack cards: - type: markdown content: > **Гостиная** - type: thermostat entity: climate.mitsubishi_heavy name: Кондиционер Mitsubishi Heavy SRK25ZS-S - type: vertical-stack cards: - type: markdown content: > **Эксплуатационные Данные Кондиционера** - type: entities show_header_toggle: false state_color: true entities: - entity: sensor.mhi_power name: Состояние - entity: sensor.mhi_mode name: Текущий Режим работы - entity: sensor.mhi_outdoor_temperature name: Температура за Окном - entity: sensor.mold_indicator name: Индикатор Плесени - entity: sensor.mhi_current name: Сила Тока - entity: sensor.mhi_indoor_fan_speed name: Скорость Вентилятора Внутреннего блока - entity: sensor.mhi_outdoor_fan_speed name: Скорость Вентилятора Наружного блока - entity: sensor.mhi_hours_indoor_unit name: Общее Время работы Внутреннего блока - entity: sensor.mhi_hours_compressor name: Общее Время работы Компрессора - entity: sensor.mhi_compressor_frequency name: Частота Компрессора - type: divider - entity: sensor.mhi_errorcode name: Код Ошибки - entity: sensor.mhi_protection_number_compressor name: Номер состояние Защиты Компрессора - type: divider - entity: script.mhi_reebot - entity: script.mhi_defrost_on - entity: script.mhi_defrost_off - entity: sensor.mhi_defrost_control name: Разморозка Кондиционера

В качестве Бонуса, я настроил Интегрированный в HA датчик Индикатора плесени, в случае плохой вентиляции и повышенной влажности в помещении, он может указать на возможный рост плесени в доме. Температуры воздуха за окном теперь забирается с датчика наружного блока кондиционера. Это лучше, чем основываться на данные температуры воздуха всяких погодных интеграций в HA.

Заключение

Я рад был поделиться с вами своим опытом по сборке модуля MHI-AC-Ctrl и его настройке. Результатом проделанной работы я оказался более, чем доволен. Я получил качественно новое управление своим кондиционером из Home Assistant, полностью избавился от задержки обратной связи с HA при управлении пультом ДУ кондиционера и теперь уведомления Google Home mini сообщает сразу после смены режима работы кондиционера, как это и положено. Получил информативный список операционных данных от кондиционера, благодаря которым легко будет выявлять его неисправности, если они появятся. Расшифровку кодов можно посмотреть в этом файле.

Дорогие Друзья! Обязательно оставляйте свои комментарии и пишите свои предложения по автоматизации климатической техники в Home Assistant.


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

Да, возможность управления горизонтальными шторками не поддерживается, только вертикальными.


Очень познавательный проект!  Надеюсь получится сделать поддержку всего
функционала.


Вот бы esp прикрутить
к управлению бризером тион, а то приходится
по IR – и это конечно боль.


Из опыта по климату в
УД: у меня подключен Samsung Smart Air с встроенным
wifi модулем – у него ужасный родной софт,
да и умный дом работает с перебоями –
теряет сеть иногда. Есть плагин для
Hass, который умеет почти всё. Есть curl команды в node-red, включающие на нём
противовирусную штуку и ещё некоторые
опции, недоступные из плагина Hass.


И Aeronic (производитель
– Gree и вифи модуль их же) с опциональным
wifi модулем – родной софт вполне (для
китайского, в облако не заставляет),
плагин для HASS – шикарный, работает как
часы. Если кому интересно могу описать
эти системы. Например, чтобы Gree работал в сегменте сети без интернета - ему надо разрешить пинги на шлюз )

> прикрутить к управлению бризером тион, а то приходится по IR – и это конечно боль

о какой модели речь? там, вроде как, не IR а BLE. и с автоматизацией уже начали разбираться. скажем, тут https://github.com/TionAPI">описание. 

О2 у меня, старенький. Вроде к нему был пакет "адоптации" под CO2 управлялку их, но у меня видимо не установлен.

Большое спасибо за статью! После ее прочтения решился на замену своих ик-шайб броадлинк на "нормальную" интеграцию с вемосом. Кстати, так случилось, что у меня в квартире оказались сразу и кондиционеры Mitsubishi Heavy Industries и Mitsubishi Electric (которые, как ни странно, абсолютно разные и полностью не совместимы). Впечатления от эксплуатации пока сильно не в пользу Heavy (во всяком случае от серии SRKxxZMP). Низкое качество сборки и пластика, менее удачные сетки для пыли, более шумные внутренние блоки, а некоторые внешние блоки мне попались с низкочастной вибрацией, которая преодолевает любую шумоизоляцию. Ну, и напоследок, субъективная вещь, но для энтузиаста умного дома важная - у Heavy гораздо более заморочный завод в хоум-ассистэнт и другие системы автоматизации. Для Mitsubishi electric надо просто шнурок с разъемом к Wemos припаять, причём прошить его можно и ESPHome и прошивкой с MQTT. В общем, благодаря вашей статье я надеюсь, что Heavy допинаю, но впредь только Electric )))

А возможно где-то купить готовый комплект устройств для кондиционера Mitsubishi Heavy SRK25ZS-S / SRC25ZS-S?

Вернуться назад

Устройства


Espressif Systems

wemos D1 mini

(6 отзывов)

Вернуться назад