Skip to content
Sammy1Am edited this page Feb 7, 2024 · 8 revisions

Hardware Setup

Caveat Utilitor: I have only personally tested this on a MSZ-GL06NA, and even then not very thoroughly. Proceed with caution so you don't mess up your HVAC. (Though I think this should all be relatively safe)

There are some decent instructions here and here to help figure out wiring. Eventually hopefully we can add a more comprehensive setup here. Essentially though, you'll want to make the following connections:

  • Heatpump 5v -> microcontroller or voltage regulator
  • HP ground -> MC ground
  • HP RX -> MC TX
  • HP TX -> MC RX

If you're going to also connect a thermostat or Kumo, you can bridge 5v, 12v, and ground straight across, and you'll just connect the TX/RX lines from the thermostat to the microcontroller on a second set of pins.

It's preferable to use hardware UART pins if available, but I had a fair amount of success using two software UART instances on an esp8266 so it's not a hard requirement.

ESPHome Basic Config

external_components:
  - source:
      type: git
      url: https://github.com/Sammy1Am/mitsubishi-uart
      ref: release

This will pull the code necessary for this integration from GitHub. You can use ref: main if you'd like the latest changes.

uart:
  - id: hp_uart
    baud_rate: 2400 #9600 for some systems
    parity: EVEN
    rx_pin:
      number: GPIO3
    tx_pin:
      number: GPIO1

First you'll need to define the UART component for interfacing with your heat pump. Parity must be even, 2400 or 9600 baud (depending on the system), and if you have hardware UART pins available they're recommended.

logger:
  baud_rate: 0

If you're using the primary UART (for example GPIO1/3 on the ESP8266), you'll need to disable serial logging.

mitsubishi_uart:
  heatpump_uart: hp_uart

This is the basic configuration section that defines the mUART component. heatpump_uart: should be set to the ID of the UART you configured above.

Other Configuration Options

mitsubishi_uart:
  ...
  update_interval: 6s
  name: Climate

update_interval: Specifies how often the microcontroller will request the current status from the heat pump. Recommend something between 5-120 seconds. The heat pump's communication is slow so anything too fast will likely result in issues, anything too slow will result in longer lag times between heat pump status changes, and those changes being reflected in ESPHome/Home Assistant. name: This is the name (not id) given to the Climate component of the heat pump and will be displayed in Home Assistant. Default is "Climate" because Home Assistant (or ESPHome?) prepends the name of the configuration.

mitsubishi_uart:
  ...
  temperature_sources:
    - basement_temp
    - hallway_temp

It's possible to add additional sensors (returning values as degrees Celsius!) as temperature sources. The temperature_sources: list contains IDs of sensors defined in the ESPHome config file that you'd like to use for this purpose. Important: If an update from the sensor is not received after 7 min, the component will switch back to using the internal temperature sensor on the heat pump; make sure your sensors are sending data at least that often. (The heat pump itself will revert back to the internal sensor after ~10min, I've shortened that time for some predictability in the code)

mitsubishi_uart:
  ...
  supported_modes:
    - 'OFF'
    - HEAT
    - DRY
    - COOL
    - FAN_ONLY
    - HEAT_COOL
  supported_fan_modes:
    - AUTO
    - QUIET
    - LOW
    - MEDIUM
    - HIGH
  custom_fan_modes:
    - VERYHIGH

Each of these lists can be shortened to remove support for one or more of the modes (e.g. if your device doesn't support it). Adding new modes here in the configuration won't have any effect because the code won't know what to do with them.

mitsubishi_uart:
  ...
  sensors:
    current_temperature:
      ...
  selects:
    temperature_source_select:
      ...

These sections contain the configuration for the built-in sensor and select components provided by the Mitsubishi UART component. Generally the defaults here should be fine, but just in case you need to modify or access these, here they are.

Thermostat Setup

It's possible to connect a thermostat like an MHK2 to the microcontroller to allow a second point of control (or use it as a temperature sensor). Using the same CN105 connection, the thermostat should be connected to a second pair of UART pins (instructions at mhk1_mqtt might be helpful).

A second UART Component should be defined:

uart:
  ...
  - id: ts_uart
    baud_rate: 2400 #9600 for some systems
    parity: EVEN
    rx_pin:
      number: GPIO16
    tx_pin:
      number: GPIO14

And added to the main Mitsubishi UART component:

mitsubishi_uart:
  heatpump_uart: hp_uart
  thermostat_uart: tstat_uart
  ...

The microcontroller will forward most packets transparently, so the thermostat should work exactly as it normally would. The only exception is that unless "Thermostat" is chosen as the temperature source, the packets containing temperature data from the thermostat will be intercepted and not sent to the heat pump.

In general the thermostat and microcontroller should play nice; i.e. if you make a change on one, it should be reflected on the other. The biggest source of conflict is that if the thermostat has a schedule it will still send commands to make the unit follow its schedule even if the microcontroller / Home Assistant has sent other commands.