Midea branded AC’s with ESPhome (without cloud)

Converter, like MAX485 sure makes the physical layer to the spec, but 485, and I guess MODBUS is whole protocol where timings are critical. I saw that MrCool sells “remote thermostats” which are on RS485 seeing “A” and “B” signs on the terminals. But… who knows. It does’t cost much to try I guess. You can buy “arduino friendly” UART to RS485 converters. But those require signals to switch from receiving and transmit, so it won’t be compatible with the midea component in ESPHome.

1 Like

Hello @nvschilleman how were you able to create a USB suitable for the Midea style usb ports (they have those small notches on side).

I am facing a similair issue on which type of dongle should I order from Sergey Dudanov since my AC has some logic module as well and thr USB port has notches as well.

I ordered the dongles unassembled, took apart the male USB-A connector and sanded off the edges. I posted a photo somewhere in this topic of the first dongles I used based on a ESP-01

edit, in this post I posted the photos:


A short note to thank you for sharing this project. I have a carrier without the usb cable connector. I just followed your example and connected to the board directly with DuPont cables.
Works perfect.

1 Like

I have a Midea mini split connected to HA via the wifi dongle that came with the unit itself. It works most of the time, but still has a ton of random disconnects. I’m planning to order one of the pre-flashed dongles and was wondering if with that, once integrated in to HA, can some how set it to use a remote sensor as the thermostat control. Right now my mini split is in my wife’s office and it’s mounted about 9’ up on a cathedral ceiling, and setting the temp is more based on comfort as opposed to an actual number.

After struggling for days trying to get my Midea AC working with the HACS cloud thing I thought let me just try the ESPHome module way, I was hesitant when I first looked at both options of integration and thought this way would be harder / take longer, ironically this way was actually much easier and I prefer having direct LAN access, total time spent probably 10 minutes and it is working perfectly.

I had spare nodemcu boards laying around so just used one of those and then cut a small hole in the plastic casing inside the AC with the module sticking out.

AC model: MSAG11B-12HRFN1QC2

Thanks to all of those involved…

Some images for those interested (sorry a little blurry)

EDIT: I will most likely make up a shorter cable so that the nodemcu board can be mounted inside the plastic compartment.


Hi guys, i might need to replace the PCB board on my midea since it’s not working.
Just wondering if anyone tried connecting to one of those universal pcb board for ac?

Just completed a succesfull ESPHome integration in my MaxiCool Split-type air conditioner.

I used an ESP01S and a ESP-01 Adapter like described in the first topic.

Type: Maxicool AMD-AUR-09HDI AURORA 2,5kW
Year: 2021
Original Wifi Dongle: NetHome Plus EU-OSK103 (so now not used anymore)

I connected RX from adapter to TX on the AC board.

UART settings for Midea dongle (required)
  tx_pin: 1   # hardware dependant
  rx_pin: 3   # hardware dependant
  baud_rate: 9600


Can confirm Simando SMND-PAC-12 from 2020/2021 works fine. As it comes without wifi you need to completly dissasamble the case to get to the Display-Board as there is one free 4 Pin JST Header for Wifi :slight_smile:
iot-uni-dongle example esphome Config. Just remove the heater part.

you may want to have a look @ IR Commands using TSOP IR · Issue #5 · dudanov/iot-uni-dongle · GitHub i posted a complete config for a nodemcu there.

1 Like

Did you manage the modbus integration? I also have such a heat pump and I would like to see more data.

I wonder if using something like this E180 DTU ZG120 485 ZigBee 3.0 Ad Hoc Networking RS485 IoT Wireless Transceiver Radio Modem|Fixed Wireless Terminals| - AliExpress it would be possible to just send rs485 to homeassistant and then decode it using homeassistant modbus integration.

1 Like

I am a little perplexed about Fahrenheit usage. My unit display F on the front panel. My midea ESP configuration is specified in C, but that should just relate to display in HA, right? I also indicate that I want precision of 0.5. When I issue a service call of set_temperature: 72, the temperature is set to 71.5 F (and the front panel indicates a setting of 72 F). But, if I set_temperature to 72.5, it gets set to 73.5 F (panel indicates 73 F).

What is it doing? How do I get it to set the temperature to the number I specify?

The temperature encoding in their internal uart protocol is based on Celsius, if I remember correctly 1 bit change is half degree (Celsius). Fahrenheit support is… a bit of Frankenstein’ed in :slight_smile: It’s normal to have that degree of a mismatch. Or at least this is what I tell myself :slight_smile:

I am new to ESPHOME and only have this midea component. I have been able to accomplish a lot using the simple things, like calling climate services. But, I am thoroughly confused about how to call an action like midea_ac.beeper_on

Any examples for home assistant?

Yes. Piece of cake. I use node red for this, but you can use a standard Home Assistant automation. Just evaluate the current state of the sensor, and then call a service in response. I basically have built a Nest/Ecobee type of script that has a schedule and parameters for too hot/cold, and how much tolerance I have for error (1 degree F). Works really well. FAR better than the built in Auto mode.

I cut the extra plastic notches off.

Hi guys,

I put together an ESP-01s dongle for my Midea Blanc AC but unfortunately, it doesn’t seem to work. At least it does not work in full. This is what I have done so far:

  1. Programmed the ESP-01s using ESPHome. The module connects to my wifi without issues it was also added to HA without issues.
  2. ESP-01s is plugged into the voltage stabilizer (5V - 3.3V).
  3. I found + and GND in the AC connector and connected + and GND of the stabilizer accordingly.
  4. I set the RX/TX pin in the yaml file to 3 and 4. I didn’t know which one is 1 so I tried 1 and 2 then 3 and 4. It seems that only 3 and 4 gives me some positive results.
  5. I can start the AC by pressing ‘Cooling’ button in HA but that’s all. I can’t turn the AC off. The AC shows ‘Off’ status even after it was started from HA. Also, as soon as I change the temperature in HA the AC turns off.

I am not sure about RX / TX pin numbers in the yaml file. Do they refer to the pin numbers on the stabilizer plate or the ESP-01s itself (which has 8 pins, while the stabilizer just 4 as you can see on the attached images)?

What did I do wrong? Is my AC incompatible with this project?

This is the connection:

Unfortunately, as a new user I can’t upload more images.

I saw your question also on Telegram?

Not sure what the issue is, bit since it looks like you’re using the same esp01 as I do, you should be able to copy my config from my first post

Note that TX and RX depends a bit on how the manufacturer named it.
If everything is OK, you should be able to see something like this in the ESP logger; if you only see TX but no RX, it indicates that TX and RX need to be swapped :wink:

[12:58:32][D][ApplianceBase:162]: TX: AA 21 AC 8D 00 00 00 00 03 03 41 81 00 FF 03 FF 00 02 00 00 00 00 00 00 00 00 00 00 00 00 03 C3 1F F6 
[12:58:33][D][ApplianceBase:063]: RX: AA 22 AC 00 00 00 00 00 03 03 C0 00 A4 3C 7F 7F 00 30 00 00 00 65 5E 00 00 00 00 00 00 00 00 00 1F A7 D5 

PS: I just updated the esphome yaml config with my lastest :wink:

They rever to the ESP01 internal pins, GPIO1 and GPIO3 end on TX and RX on converter board

1 Like

Yes, I did ask the same question yesterday on Telegram.

Silly question, where do I find ESP logger? I don’t have ESPHome in Home Assistant due to Docker version of HA. I use ESPHome from command line.

Thx! I will use yours as base version for mine.

So, definitely I have provided wrong pins in the yaml.

Thx for your input, I will change the yaml re-program and let you know if it helped.

Questions are never silly…answers can be though…

Erm…if you enable the web interface:

# Enable Web server.
  port: 80

you can check the logs on http://[ip-address-of-ac] :wink: