Midea branded AC’s with ESPhome (no cloud)

I have a Mitsui mtxi12hp24. What’s currently the best solution for local control via Home Assistant? In particular regarding the dongle.

One concern is that I don’t want a random user to be able to easily tamper with the module. If there’s no case, it just looks horrible.

Someone created a 3d printed case, but I’d like to just buy a complete package. I can do 30 minutes of assembly, but I really prefer not to, because such projects can suck up time for all kinds of reasons including supply chain risk.

There’s a guy in Ukraine which developed a module that can be inserted in the USB port. Is that different? I don’t think the Ukrainian product has a case either.

A solution where a random user can see a PCB generally would lead to questions, so I want to avoid that.

Thanks a lot everyone for the non-trivial effort you have done so far.

1 Like

maybe someone has already tried it. How to replace the current temperature? So the AC (midea / rotenso) is reading temperature from the unit integrated sensor - but readings sometimes are so bad that I need a way to override them.

Please, help

You could use the ‘follow-me’ function for that?

Yes and no.
After power cycle I would need to click this on remote every single time. I would rather have some permanent solution.

So I ordered the Midea dongle from Tindie. My AC doesn’t have the USB port so does anyone know if the dongle comes with the cable (4pin to USB)?

If not, can I buy it from somewhere?

@mouth4war according Midea A/C and ESPHome component - list of all known working models and manufacturers - #67 by tedted22 the USB wifi adapter - SLWF-01pro also seems to work.

Yeah it looks the same as what I got. My AC doesn’t have that USB to PCB cable/connector. Do these dongles ship with the cable or assume you already have it in your AC?

Edit: is it called usb2header cable?

Edit2: re/read this thread. It’s called female usb to jst apparently.

@mouth4war Just use a dupont cable kit :wink:
i used that for my 2nd a/c as well as my pellet stove :wink:

Fits on (almost) everything :smiley:

1 Like

Will this wifi dongle work?

The one that is linked to in the first post is no longer available and dudanov seems to be missing.

that’s what i said right??
it is literally 3 posts above :thinking:

1 Like

Oh snap. I read the entire thread and missed like the 10 last posts…sorry! :joy:

And it is even cheaper in the link posted by @tedted22 :wink:

Thanks for the tip but I already got the female usb to jst cable

Hi again guys, for anyone in need, I managed to make the “midea-AC” dongle work. I was having the same problem as meatljay.

What I did was:

  • create a node in ESPHOME
  • paste all the code metaljay had from the seller ( here )
  • made some changes and updated via OTA and it solved my problem
  node_name: midea-ac
  node_id: midea_ac
  friendly_node_name: "Midea AC"

  name: room-ac
  comment: room-ac
  platform: ESP8266
  board: esp12e
  #name_add_mac_suffix: true
   # name: "lizardsystems.midea_mini_dongle"
    #version: "1.4.0"

  ssid: "yournetworkname"
  password: "yourpassword"
    ssid: "AC-wifi"
    password: "slwf01pro"



#disabled the ones below
  #package_import_url: github://lizardsystems/midea-mini-dongle/edit/main/midea_ac.yaml

  baud_rate: 0
#  level: ERROR
  esp8266_store_log_strings_in_flash: false


  port: 80
  css_url: ""
  js_url: "www.js"
  local: true
  version: 2


  tx_pin: 1
  rx_pin: 3
  baud_rate: 9600
  - platform: midea
    name: room-ac Climate         # Use a unique name.
    id: roomac_climate
    period: 1s                  # Optional
    timeout: 2s                 # Optional
    num_attempts: 3             # Optional
    autoconf: true              # Autoconfigure most options.
    beeper: true                # Beep on commands.
    visual:                     # Optional. Example of visual settings override.
      min_temperature: 17    # min: 17
      max_temperature: 30    # max: 30
      temperature_step: 0.5  # min: 0.5
    supported_modes:            # All capabilities in this section detected by autoconf.
      - FAN_ONLY                # This capability is always used.
      - HEAT_COOL
      - COOL
      - HEAT
      - DRY
      - SILENT
      - TURBO
    supported_presets:          # All capabilities in this section detected by autoconf.
      - ECO
      - BOOST
      - SLEEP                   # This capability is always used.
    custom_presets:             # All capabilities in this section detected by autoconf.
      - VERTICAL                # This capability is always used.
      - BOTH
    power_usage:                # Optional. Outdoor temperature sensor (may display incorrect values after long inactivity).
      name: "${friendly_node_name} Power Usage" 
      id: ${node_id}_power_usage
    outdoor_temperature:        # Optional. Power usage sensor (only for devices that support this feature).
      name: "${friendly_node_name} Outdoor Temperature"
      id: ${node_id}_outdoor_temperature
    humidity_setpoint:          # Optional. Indoor humidity sensor (only for devices that support this feature).
      name: "${friendly_node_name} Humidity"
  - platform: template
    name: ${friendly_node_name} Beeper
    icon: mdi:volume-source
    restore_state: true
    optimistic: true
  - platform: status
    name: ${friendly_node_name} Connection Status
    id: ${node_id}_connection_status

  - platform: template
    name: Uptime Human Readable
    id: uptime_human
    icon: mdi:clock-start

  - platform: version
    name: ${friendly_node_name} ESPHome Version
    id: ${node_id}_esphome_version    

  - platform: wifi_info
      name: ${friendly_node_name} IP Address
      id: ${node_id}_ip_address
      icon: mdi:ip-network

  - platform: uptime
    name: Uptime Sensor
    id: uptime_sensor
    update_interval: 60s
        - text_sensor.template.publish:
            id: uptime_human
            state: !lambda |-
              int seconds = round(id(uptime_sensor).raw_state);
              int days = seconds / (24 * 3600);
              seconds = seconds % (24 * 3600);
              int hours = seconds / 3600;
              seconds = seconds % 3600;
              int minutes = seconds /  60;
              seconds = seconds % 60;
              return (
                (days ? to_string(days) + "d " : "") +
                (hours ? to_string(hours) + "h " : "") +
                (minutes ? to_string(minutes) + "m " : "") +
                (to_string(seconds) + "s")
  - platform: wifi_signal
    name: ${friendly_node_name} WiFi Signal
    id: ${node_id}_wifi_signal
    update_interval: 60s

  - platform: restart
    name: ${friendly_node_name} Restart
    id: ${node_id}_restart
    icon: "mdi:restart"
  - platform: shutdown
    name: ${friendly_node_name} Shutdown
    id: ${node_id}_shutdown
  - platform: safe_mode
    name: ${friendly_node_name} Restart (Safe Mode)"
    id: ${node_id}_safe_mode
type or paste code here

Hope it helps

Hope it helps!

followed by

As mentioned in previous posts, you either specify the supported modes OR you use autoconf=true :thinking:

And i recently updated the yaml in the 1st post, you can use that one ( the above still applies regarding autoconf) :wink:


thanks aceindy, i was following the thread did not check the first posts.

Now im going try to recover the other dongle who got lost in space (wrong network info and AP mode off)

Hi Jakob,
it seems I have a similir heat pump branded hyundai but based on Midea. I’m struggeling to connect to the Modbus interface. For debugging I’m using a RS458 → ETH converter.
If I conect this to the H1, H2 and ground terminals on the external controller I can’t read any modbus registers. If I connect to H1/H2 in the Heat Pump I receive some garbage but no Modbus communication. Do you know if this Modbus feature needs to be enabled somehow in the controller?


I purchased a SLWF-01pro from smartlight.me and connected it to my Home Assistant as documented by them. It shows up in my Integrations under ESPHome and properly identifies itself as a climate entity and outdoor thermometer. All good so far.

However, it doesn’t show up on the actual ESPHome panel as something I can update or modify.

What’s the process for getting ESPHome to “adopt” it so it can manage it? Or should I, even?

1 Like

the esphome panel is only for programming, it doesn’t have any other purpose…
so, up to you….

You can always use the example config from the 1st post :wink:

I’ve also bought an SLWF-01pro from smartlight.me.
I want to reflash the esp12f chip but I don’t know how to do.

I have connected to ESPHome in home assistant but it’s undetected. Same things on windows. On the board there is two button (RES and FLH).
I’ve tried a lot of time but nothing happen