LmCast :: Stay tuned in

I Made a Non-Wi-Fi Mitsubishi AC Smart with an ESP32

Recorded: Sept. 13, 2026, 4 a.m.

Original Summarized

MediumHow I Added a Non-Wi-Fi Mitsubishi AC to Home Assistant | by Iván Gómez Arnedo | Sep, 2026 | MediumSitemapOpen in appSign upSign inMedium LogoGet appWriteSearchSign upSign inMy current setup:What I wantedOptions discardedThe solutionHardware usedHow I did itHow to configure the ESP32CN105 pinoutHow to install itHome Assistant integrationTLDRIván Gómez ArnedoPragmatic and curious Data Engineer. Twitter:@data_cyborg Linkedin:https://www.linkedin.com/in/ivan-gomez-arnedo/ElectronicsHome AssistantMitsubishiEsp32EsphomeHow I Added a Non-Wi-Fi Mitsubishi AC to Home AssistantIván Gómez Arnedo6 min read·2 days ago--ListenShareWithout using proprietary hardware or proprietary apps (MelCloud)Recently I moved into a house with ducted ACs. It has on official wall thermostat like this:Press enter or click to view image in full sizeMy wifi-less wall thermostatI can control it’s mode (heath, dry, cool) and the fan mode (high, medium, low) but the problem is that I have to click those buttons physically…I’m lazy enough to want some refreshing (or warm during winters) air in my face directly when I’m on the sofa or in the bed without having to get up and click the button.My current setup:NAS SynologyHome Assistant installed in a VM of that NAS.Mitsubishi’s Ducted unit ( SEZ-M60DA2, ~2022) controlled only by an official wired wall thermostat without wifi.Mitsubishi’s official wall thermostat.What I wantedTo be able to turn it off/on using my mobile phoneTo do not lose any kind of the options that I already have in the wall thermostat.To be able to check the temperature of my house.To be able to set automations when a certain temperature is reached or when no one is at home.Options discardedAn IR receiver. Mitsubishi does sell optional IR receiver kits for parts of the M-series, but nothing of the sort is fitted here. Furthermore it doesn’t solve the problem of setting it up from outside home.A relay for on/off is worse on an inverter unit. Chopping mains or a dry-contact enable defeats the whole point of modulation, and you lose mode, fan speed and setpoint entirely. You end up with an expensive on/off switch on a machine designed to modulate.Replacing the wall controller with a generic thermostat means losing the manufacturer’s protocol, the unit’s own sensors and its diagnostics… (it’s like on-off relay).The official Kumo/Mel Cloud adapters. Those are the best alternative but are very expensive (up to 200$) and is classed as Cloud Polling in Home Assistant’s so: 1. Every commands does a round-trip to Mitsubishi’s servers (my data leaving my house); 2. It needs a MELCloud account and credentials (it’s now free but who knows the future…).The solutionGitHub - echavet/MitsubishiCN105ESPHome: ESPHome firmware inspired by GeoffDavis's…ESPHome firmware inspired by GeoffDavis's esphome-mitsubishiheatpump, directly integrating the SwiCago library within…github.comIt’s the reverse-engineered Mitsubishi protocol, now maintained as an ESPHome external component.Or the native ESPHome component:Mitsubishi CN105 ClimateInstructions for setting up the Mitsubishi CN105 climate component.esphome.ioPress enter or click to view image in full sizehttps://github.com/echavet/MitsubishiCN105Esphome#when-to-use-whichSame core but a bit less features (but way easier to install).Both of them allows us to have:Bidirectional communication between Home Assistant and my wall thermostat. If something is turned on/off it will appear in both places.Totally local solution. My data does not go to private servers.Really cheap. For less than 10 euros.Open source. The firmware is mantained by the community. It could improve over time.Mitsubishi cannot update the units remotely, so our configuration should remain valid (the units don’t have Wi-Fi connectivity) .What CN105 gives instead: it is the same service port the manufacturer’s own Wi-Fi adapter uses, so you get the native protocol: setpoint, mode, fan, room temperature as the unit measures it…. And it works alongside the wall controller rather than replacing it.Hardware usedESP32 boardJST PA 2.0 mm 5-pin pigtail: JST PA connector on the CN105 end, standard 2.54 mm DuPont female jumper ends on the ESP32 end.A USB-C to USB-C cable to connect my Macbook with the ESP32.How I did itHow to configure the ESP32A blank ESP32 has no firmware and no Wi-Fi configured so the board plugs into the machine running the browser, not the machine running Home Assistant.If you have properly installed Home Assistant (HA OS or Supervised as Core or Docker installations do not have add-on store) then it’s easy as you can install the ESPHome add-on then:Connect the ESP32 to your laptop via USB.In the add-on, Create device → Espressif ESP32-C6-DevKitM-1(if you have bought the same board as myself)Give it a name → Configure the Wi-Fi credentials (ssid and password) once and it automatically writes them to /config/esphome/secrets.yamlNow you can use the native ESPHome versionPress enter or click to view image in full sizeScreenshot from my ESPHome Builder add-onThen you only have to add it and leave everything as default (it’s pre-configured if you are using the same board as myself).Save and Install :)Or do a custom install of the ESPHome external componentIf you have chosen the same board as myself, it’s as easy as copy-pasting this pre-configured YAML, into the editor of the device in ESPHome Builder:Press enter or click to view image in full sizeEditor of the device in ESPHome builderSave and Install :)After the first USB flash the board is on Wi-Fi and Home Assistant (HA) auto-discovers it . Every later update is over the air (done from HA if the YAML lives in the add-on).CN105 pinoutFrom the official docs: https://esphome.io/components/climate/mitsubishi_cn105/#cn105-pinoutIn my specific case with the colors of the cable that I bought: ──────────┬───────────┬─────────────┬────────────────────┐│ Cable │ Pin CN105 │ Signal │ ESP32 (board) │├──────────┼───────────┼─────────────┼────────────────────┤│ blue │ 1 │ 12 V │ ⛔ NEVER CONNECT │├──────────┼───────────┼─────────────┼────────────────────┤│ green │ 2 │ GND │ GND │├──────────┼───────────┼─────────────┼────────────────────┤│ yellow │ 3 │ 5 V │ VIN │├──────────┼───────────┼─────────────┼────────────────────┤│ black │ 4 │ TX │ RX2 = GPIO16 │├──────────┼───────────┼─────────────┼────────────────────┤│ red │ 5 │ RX │ TX2 = GPIO17 │└──────────┴───────────┴─────────────┴────────────────────┘No need for an external power source, as it already has a 5V line (yellow).Never connect the first cable (blue), as it provides 12V and the ESP32 board can’t handle it.How to install itFirst, search where your unit is installed and dismantle the tape then locate the CN-105 port:Press enter or click to view image in full sizePress enter or click to view image in full sizeDucted AC plate + CN105 portIt’s a bit tricky to fit the CN-105 cable in, but once you have it in place, you just need to press it down. You have to do it with confidence.Press enter or click to view image in full sizeMy ESP32 connected to my AC board in the CN105 portMount the ESP32 OUTSIDE the metal control box (it is a Faraday cage).Home Assistant integrationYou can control your AC from your mobile phone using Home Assistant, giving you access to the same features that are available on the physical wall thermostat and much more.Thermostat: on/off, mode (off, cool, heat, dry, fan_only, auto, heat_cool) and 6 fan speeds.Room temperature: matches the wall controller exactly, while also exposing the temperature as a new sensor in Home Assistant.You can also create your own Home Assistant automations, such as turning the AC on at specific times or when the room reaches a certain temperature.If you use the repository directly, you also get new features that aren’t available on the official thermostat (some examples of the most useful ones):Outside air temperature: a real outdoor-temperature sensor. Reports only while the unit runsEnergy (kWh): Really useful if you want to monitor your consumption or the energy being used at a given timeError code — human-readable (No Error), not a raw numberTLDRA step-by-step guide to using an ESP32 board to connect your Mitsubishi AC to Home Assistant, keeping your data local instead of sending it to external servers, while also gaining access to useful sensors such as energy consumption (kWh) and temperature.I have written this article as a tutorial for my future self and as a guide if it could be helpful for someone.ElectronicsHome AssistantMitsubishiEsp32Esphome----Written by Iván Gómez Arnedo217 followers·11 followingPragmatic and curious Data Engineer. Twitter:@data_cyborg Linkedin:https://www.linkedin.com/in/ivan-gomez-arnedo/HelpStatusAboutCareersPressBlogStorePrivacyRulesTermsText to speech

The challenge presented is integrating a non-Wi-Fi Mitsubishi ducted air conditioning unit, controlled by a wired wall thermostat, into a Home Assistant environment to enable remote control, temperature monitoring, and automation capabilities without discarding the existing functionality of the physical thermostat. The author explored several potential solutions, including using an IR receiver, simple relays, and official manufacturer cloud adapters, ultimately dismissing these options due to complexity, loss of control granularity, or reliance on external, costly cloud services.

The proposed solution centers on utilizing reverse-engineered Mitsubishi protocols implemented through the ESPHome firmware. This approach allows for a completely local communication system between the Home Assistant instance and the AC unit, ensuring data privacy and avoiding dependence on proprietary or expensive cloud polling methods. The core of the implementation involves interfacing an ESP32 board with the Mitsubishi Climate unit, specifically targeting the CN105 communication port. This method is presented via two primary firmware options: utilizing the ESPHome component inspired by Geoff Davis, which incorporates the SwiCago library, or the native Mitsubishi CN105 Climate instructions. Both methods facilitate bidirectional communication, allowing Home Assistant to send commands such as turning the unit on or off, setting modes (heat, dry, cool), and controlling fan speeds, while simultaneously reading the current room temperature sensor data.

The hardware setup requires an ESP32 board and appropriate wiring, utilizing a specific pinout configuration for the CN105 interface, where data lines correspond to voltages and signals necessary for communication. The setup involves physically interfacing the ESP32 to the AC unit's control box by connecting the appropriate wires to the CN105 port, ensuring that the voltage requirements of the system are respected, particularly avoiding connections that would overload the ESP32. The ESP32 should be mounted externally, away from the metal control box, to act as a local controller.

The configuration process within Home Assistant involves installing the relevant ESPHome add-on, connecting the ESP32 via USB, and configuring the Wi-Fi credentials to enable network connectivity. The setup can be streamlined by using pre-configured YAML files or directly editing the configuration within the ESPHome builder tool. Once flashed, the device connects to Wi-Fi, allowing Home Assistant to automatically discover it. This integration provides full remote management of the AC unit, access to real-time room temperature which mirrors the wall controller's reading, and the ability to create complex automations based on temperature thresholds or occupancy states. Furthermore, the reverse-engineered protocol enables access to advanced data not present on the official thermostat, such as outdoor air temperature and energy consumption in kilowatt-hours, offering a comprehensive, localized monitoring solution.