ESPHome Features

The ESPHome build makes the heat pump a native Home Assistant device. The unit arrives as a climate entity, its vanes as selects, and every reading you turn on as its own sensor. Nothing leaves your network and no account is involved.

At a glance

  • The unit appears in Home Assistant as a standard climate entity, with no bridge and no cloud service in the path
  • Every Home Assistant automation applies: schedules, presence, templates, dashboards, and history
  • Built on echavet's open-source MitsubishiCN105ESPHome component

Good to know

  • This build needs Home Assistant with the ESPHome add-on. Without one, the Apple Home and Google Home builds pair directly instead
  • The build you flash from the browser is one fixed configuration. The rest is added by pushing your own config over Wi-Fi, which needs no USB cable

Anything tagged YAML generator is not in the flashed build. Adopt the device first, then build a config that includes it and push that over Wi-Fi. Everything else is there the moment Home Assistant finds the device.


What lands in Home Assistant

Adopting the device creates one Home Assistant device with these entities under it. Entity IDs take the name you adopt it under, so a unit adopted as living-room gives you climate.living_room.

EntityDomainWhat it gives you
The unit itselfclimateMode, target temperature, fan speed, and the current room reading in one thermostat card
Vertical VaneselectUp and down airflow direction
Horizontal VaneselectLeft and right airflow direction
LedlightThe board's onboard RGB LED, yours to drive from Home Assistant. The ESPHome build gives it no status meaning of its own
Buttonbinary_sensorThe button on the board
Signal dBsensorWi-Fi signal strength, filed under diagnostics
IP and SSIDsensorThe address it took and the network it joined
ESPHome VersionsensorThe ESPHome version it was built against

Climate control

Modes

Off, Heat, Cool, Auto, Dry, and Fan

Temperature

15 to 31°C in 0.5° steps, with the room reading to 0.1°

Fan speed

Auto, Quiet, Low, Medium, Middle, and High

Polling

The unit is read about every three and a half seconds, so a change made on the infrared remote shows up in Home Assistant

Auto mode drives a single target by default. Dual setpoint YAML generator splits it into separate heating and cooling thresholds, the way a conventional thermostat handles a deadband.


Vane control

Plenty of units have no horizontal vane. Leave it out of your config and Home Assistant stops showing a control that does nothing.


Room temperature sensor YAML generator

A wall unit measures the air at ceiling height, right by its own return intake, which usually reads warmer than the part of the room you live in. Feeding it a reading from a thermometer at seating height is the single cheapest comfort improvement available here.

On this build the reading comes from Home Assistant. Any temperature entity it already knows about will do, whichever way that sensor got there: Zigbee, Z-Wave, Bluetooth, or another ESPHome device. Name the entity in the generator and the config wires it to the heat pump.


Heat pump diagnostics YAML generator

The unit reports far more about itself than a thermostat card has room for. Turning on diagnostics adds nine sensors, all of them recorded by Home Assistant like any other, so you get history graphs of what the heat pump is actually doing:

The generator turns these on rather than merely adding them, so they arrive live in Home Assistant instead of sitting in the disabled list waiting to be enabled one at a time.

i-See sensor YAML generator is a separate option, for units fitted with Mitsubishi's infrared occupancy sensor. It reports as a binary sensor you can automate against.


Extra controls YAML generator

Features that only some units have, each added as its own switch so it can go in a scene or an automation:

There is also an ISU functions option, which exposes the installer settings stored inside the unit. Those are the same codes a technician sets from the service menu, so it is worth being deliberate about what you change.


Serin Dial YAML generator

The ESPHome build can pair with a Serin Link, a rotary knob display that sits on a desk or nightstand and sets temperature and mode without a phone. The dial reaches the controller directly over encrypted ESP-NOW, so neither your Wi-Fi nor Home Assistant sits in the path, and the dial keeps working while either is down.

The Serin Link is still in development. The firmware ships with support for it today.


Built-in web server

The flashed build includes ESPHome's own web server, so the controller answers in a browser at its address on your network. Mode, temperature, fan and vanes are all there, along with every entity the config defines.

That matters at two moments. Before you adopt the device, it is proof the controller is talking to the heat pump. After you adopt it, it is a way in when Home Assistant is down, restarting, or being upgraded.


Updates and recovery


Building your own config

Everything tagged above comes from the same place. The YAML generator assembles a complete config from the options you pick and hands it back in the browser, with nothing uploaded anywhere.

Open the YAML generator


Supported boards

BoardStatus
M5Stack NanoC6 (ESP32-C6)Supported, flashable from the browser
M5Stack Atom S3 Lite (ESP32-S3)Supported, flashable from the browser
Other ESP32 boardsCompile it yourself

The two boards above are the ones the browser flasher and the generator cover. The component underneath is ordinary ESPHome, so another ESP32 can run it, but you would write that board's own section yourself, starting with the two UART pins the CN105 cable lands on.


Source code

Everything in this build is open source. The heat pump component is echavet's MitsubishiCN105ESPHome, and the configuration that packages it for these boards is in Serin-Labs/serin-cn105, alongside the fragments this site's generator assembles. The Serin Dial component lives in serin-link-core. What each build is made of is listed on the licenses page.


The Serin Controller, a small Wi-Fi board with the CN105-to-Grove cable attached

5.0 · 16 reviews on Etsy

Get the Serin Controller

The pre-assembled board with the CN105 cable already attached. Nothing to solder or crimp, and free shipping in the US.

Buy Now from $35

Already have a board?

The firmware is free. Install the ESPHome build from your browser in about two minutes, then follow the setup guide to join it to Wi-Fi and adopt it in Home Assistant.

Building your own? The parts list covers the boards this runs on and the CN105 cable, including the connector part numbers if you want to crimp it yourself.