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

13 сентября 2020, 17:52

Предисловие

Долгое время, мой кондиционер 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. Управление, естественно, происходит через сервера самого приложения. Данный способ для меня не подходит.

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

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

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

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

  • SRF xx ZJX-S1
  • SRK xx ZJ-S
  • SRK xx ZM-S
  • SRK xx ZS-S
  • SRK xx ZJX-S

  • SRK xx ZJX-S1
  • SRK xx ZSA-W
  • SRK xx ZSX-S
  • SRK xx ZSX-W
  • SRK xx ZS-W

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

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

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

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

1600x_image.png?1599164923

Прошивка

В основе 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-FiMQTTOTA и раскомментировать следующую строку для корректной работы изменения режимов работы 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

1600x_image.png?1599296505

Подключив модуль 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. Вот что у меня получилось:

1600x_image.png?1599300955
Раскрыв карточку, мы получаем возможность выбора:

Режима работы:
  • Авто
  • Обогрев
  • Охлаждение
  • Осушение
  • Вентиляция
  • Выключено
Режима скорости вентилятора:
  • 1
  • 2
  • 3
  • 4
Положение шторок по вертикали:
  • 1
  • 2
  • 3
  • 4
  • swing (Колебание)

1600x_image.png?1599333217
Стоит отметить, что когда последняя команда была получена с пульта ДУ кондиционера, тогда статус шторок в 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.


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Максим Сапожник (Sapik)
    Максим Сапожник (Sapik) 13 дней назад

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

    • Александр Брайко (artbrayko)

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

  2. (madbob)
    (madbob) 9 дней назад

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

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

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

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

К списку статей

Устройства в материале

Aqara Air Conditioning Companion (Upgrade)

Производитель: Aqara
Заказать на:
JD

wemos D1 mini

Производитель: Espressif Systems
Заказать на:
JD

Скидки для сообщества

Z-Wave Ukraine

+380 68 641 9670
Промокод:
Sprut-UA
Размер скидки:
15%

Тематические чаты

Похожие статьи

17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
15 октября 2018, 09:05
Прошивка для Sonoff c нативным HomeKit
02 ноября 2018, 12:14
Кнопка звонка с уведомлениями в HomeKit
15 ноября 2018, 09:42
Способы автоматизации механических ворот
27 октября 2018, 12:20
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
01 октября 2018, 07:43
Нативный HomeKit на ESP8266
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
02 июля 2020, 07:24
Я хочу поделиться своей разработкой: "умным открывателем пластикового окна". В статье вы найдете все необходимое, чтобы повторить проект и изготовить собственный привод для открывания окна с использованием штатной фурнитуры окна.