Midea branded AC’s with ESPhome (no cloud)

thanks!

its midea-like electrolux

for midea-lan integration, what adapter needed for connect? :slight_smile:

Hmm, I don’t think the wired controller is using XYE. It’s connected via “HA/HB” pins (see this thread). Unfortunately I am not exactly sure about this interface but it also supplies power, so it’s not vanilla RS485 (I connected RS485 receiver to it and machine shut down immediately. Hopefully not broken). I believe the signaling might be the same as H1/H2 pins (i.e. RS485) but the physical layer is not.

image

The wired controller is KSACN1001AAA (which is identical to many others like KJR-120N.

Any idea how this works?

Even if we’d be using XYE only: Then it means our ESP would act as a secondary wired controller, right? How are we going to send the current temperature? Based on the reverse engineering, when using Set command, we can set Oper Mode, Fan, Set Temp, Mode Flags, Timer Start and Timer Stop. But since the algorithm works on the air handler unit, each remote would need to send its current temperature and whether “Follow Me” is enabled or not. Any suggestions?

@aceindy That one should definitively work, it’s the same model the component was developed on (same model as Dudanov). :rofl: :rofl:

Sorry, I’m not familiar enough what’s state of the art right now, so can’t help with a dongle. :slight_smile:

I probably could have got this to work with a little tinkering, but I ended up just ordering the dongle from smartlight. It worked perfect! Thanks for your help.

@exciton I also have Lennox units with the 4 pin XYE connector. I just found this thread, do you have any write up on the hardware/interface/wiring to get this working? I see the code on your git(thank you). If you can point me to what you used hardware wise that would be amazing!

I don’t have a proper write-up but I used these components:

Any ESP board:
https://www.aliexpress.us/item/2251832342786284.html?spm=a2g0o.order_detail.order_detail_item.7.3824f19caobIDI&gatewayAdapt=glo2usa

RS485 adapter with automatic flow control:
https://www.aliexpress.us/item/2251832667479780.html?spm=a2g0o.order_list.order_list_main.15.21ef1802CQbrE5&gatewayAdapt=glo2usa

JST cables to connect to the XYE header
https://www.aliexpress.us/item/2251832768103991.html?spm=a2g0o.order_list.order_list_main.5.21ef1802CQbrE5&gatewayAdapt=glo2usa

From the XYE header connect:

  • X to A+ on RS485 board
  • Y to B- on RS485 board
  • E to GND on RS485 and jumper to GND on ESP board
  • 5V to 5V0 on ESP board

From the RS485 board

  • VCC to 3V3 on ESP
  • TX to RX on ESP
  • RX to TX on ESP

Finished product looks like this:

3 Likes

Thank You! Parts ordered.

Hi guys. I have a Galactic GK07H-S1 air conditioner made by Hisense. Remote control DG11Zh1-91. Board PCB05-404-V02, 1553856, B. Support for the Galactic GKZ09HM-S air conditioner was announced here on the forum. Please tell me where on the board to connect your device to esphome. Thank you.

I have the same issue! Did you fixed it?

Can somebody help me, please? I have tried on Bosch Climate 5000i with both ESP32 and ESP8266 boards and i get the same TX error. Both boards are 3.3V. Do i need a level shifter since AC use 5V?

Datasheet: NodeMCU v3 high resolution pinout and specs – Renzo Mischianti



How to ask a good question

Hi. I am new to this. I am looking to get a Midea or Beko A/C.
I see the supported Midea A/C is on the list but I don’t understand something.

On HA is a intergration called “Midea CCM15 AC Controller”, that would works with the stock Midea Wi-Fi Module? Or I need the ESP-Home also?

I see to Beko it’s says “via TG” that mean only this need ESP-Home?

Thanks.

Hello! :slight_smile:

This integration works with the Midea Central Controller, this is very likely nothing you would buy without knowing. It’s normally used in large-scale equipment, nothing we as “normal” users would bother with.

For Midea A/Cs, the ones we “normal” users use, and what’s this topic is about, there are a few ways to work with your A/C:

  • An ESPHome flashed dongle, the ones we talk about here in this topic. This connects your A/C unit locally with HA. You wouldn’t use the provided dongle from Midea and won’t use the Midea cloud.
  • There is a second way, where you can flash the dongle with another firmware, but it needs the Midea cloud to work. It would connect your A/C unit via the Midea cloud to HA.
  • The provided dongle from Midea and an app on your phone connect the A/C unit via the Midea cloud to your phone. You wouldn’t be able to control your A/C unit with HA.

In a nutshell: if you want to control your Midea A/C unit with HA, you need an ESPHome flashed dongle. You can buy one or built it yourself.

In the list the entry “via TG” is meant to note, where that information is coming from, in this case Telegram. Meaning, I got the model from a Telegram user group user for the list. It has no technical meaning.

1 Like

@exciton
OK, so I got it wired up and the esp flashed and connected to home assistant. I however am getting this error on the esp log… Any ideas what might be off?

NOTE: I see the error even without the A/C connected(powering esp via usb)
and even if i switch RX and TX between ESP and RS485 board

[22:57:18][E][midea_xye:164]: Received incorrect message length from AC
[22:57:18][W][component:237]: Component midea_xye.climate took a long time for an operation (136 ms).
[22:57:18][W][component:238]: Components should block for at most 30 ms.
[22:57:18][D][uart_debug:114]: >>> AA:C0:00:00:80:00:00:00:00:00:00:00:00:3F:81:55

Very nice summary, but I want to point out that local control using certain Midea dongles are possible (a fourth option).

2 Likes

I added a level shifter, since the Bosch Climate 5000i AC use 4V+ and the ESP8266 3.3V. The AC still not recognize the ESP. Can somebody help me, please?






I have just purchased the new 8K BTU Midea U-shaped unit, model MAW08U1QWT. (incidentally, this unit is on sale at Home Depot in US and currently cheaper than Amazon, through the end of the month I think).

It took me a few days, but I read the whole thread (and many others besides). :slight_smile:

And yet I still have a couple questions:

  1. Is my understanding correct that this is the only way to integrate the unit into HA without creating an account or using the vendors app (even if only for initial setup / connection to Wi-Fi)? Many other projects seem to do auto discovery, etc. but only after the unit is initially connected to Wi-Fi. Which I can’t even seem to do, without creating a Midea account and using their app. Which I am not going to do (and frankly find obnoxious). But please, correct me if I am wrong about that.

  2. I think I would like to do what @aceindy (and others) have done and forego the USB connector altogether, but I am not sure what this connector is. It looks kind of like JST (but not exactly):

FWIW, it does appear to have a 2mm pin-to-pin pitch. I also note that it has 5 wires, unlike some others I have seen posted.

Apparently I have the new US-SK109 dongle, but interestingly it also says ‘(matter)’ on it:

My first Matter device, apparently! I wonder what that exposes…

Hi All, adding some additional info if anyone is able to assist. Using @exciton setup for older units using the XYE bus. I am using D1_mini + TTL-RS485 converter hooked up as shown above by exciton. Here is my YAML on the ESP.
esphome:

  name:  denheatpump
  friendly_name: DEN AC

esp8266:  #also works with esp32
  board: d1_mini

# Enable logging (but not via UART)
logger:
  baud_rate: 0

external_components:
  - source: 
      type: git
      url: https://github.com/exciton/esphome
      ref: dev
    components: [midea_xye]
  
# UART settings for RS485 converter dongle (required)
uart:
  tx_pin: TX
  rx_pin: RX
  baud_rate: 4800
  debug: #If you want to help reverse engineer
    direction: BOTH


# Main settings
climate:
  - platform: midea_xye
    name: Heatpump
    period: 1s                  # Optional. Defaults to 1s
    timeout: 2s              # Optional. Defaults to 100ms
    beeper: true               # Optional. Beep on commands.
    visual:                     # Optional. Example of visual settings override.
      min_temperature: 17 °C    # min: 17
      max_temperature: 30 °C    # max: 30
      temperature_step: 1.0 °C  # min: 0.5
    supported_modes:            # Optional. 
      - FAN_ONLY
      - HEAT_COOL              
      - COOL
      - HEAT
      - DRY
    supported_swing_modes:      # Optional
      - VERTICAL
    outdoor_temperature:        # Optional. Outdoor temperature sensor
      name: Outside Temp
    temperature_2a:             # Optional. Inside coil temperature
      name: Inside Coil Temp
    temperature_2b:             # Optional. Outside coil temperature
      name: Outside Coil Temp
    current:                    # Optional. Current measurement
      name: Current
    timer_start:                # Optional. On timer duration
      name: Timer Start
    timer_stop:                 # Optional. Off timer duration
      name: Timer Stop
    error_flags:                # Optional.
      name: Error Flags
    protect_flags:              # Optional. 
      name: Protect Flags

No matter how its connected, or even with the ESP without the RS485 board I get the following errors just repeating… Any idea what is going wrong here?

[23:30:14][D][uart_debug:114]: >>> AA:C0:00:00:80:00:00:00:00:00:00:00:00:3F:81:55
[23:30:17][E][midea_xye:164]: Received incorrect message length from AC
[23:30:17][W][component:237]: Component midea_xye.climate took a long time for an operation (2036 ms).
[23:30:17][W][component:238]: Components should block for at most 30 ms.
[23:30:17][D][uart_debug:114]: >>> AA:C0:00:00:80:00:00:00:00:00:00:00:00:3F:81:55
[23:30:19][E][midea_xye:164]: Received incorrect message length from AC
[23:30:19][W][component:237]: Component midea_xye.climate took a long time for an operation (2037 ms).
[23:30:19][W][component:238]: Components should block for at most 30 ms.
[23:30:19][D][uart_debug:114]: >>> AA:C0:00:00:80:00:00:00:00:00:00:00:00:3F:81:55
[23:30:21][E][midea_xye:164]: Received incorrect message length from AC
[23:30:21][W][component:237]: Component midea_xye.climate took a long time for an operation (2037 ms).
[23:30:21][W][component:238]: Components should block for at most 30 ms.
[23:30:21][D][uart_debug:114]: >>> AA:C0:00:00:80:00:00:00:00:00:00:00:00:3F:81:55
[23:30:23][E][midea_xye:164]: Received incorrect message length from AC
[23:30:23][W][component:237]: Component midea_xye.climate took a long time for an operation (2037 ms).
[23:30:23][W][component:238]: Components should block for at most 30 ms.
[23:30:23][D][uart_debug:114]: >>> AA:C0:00:00:80:00:00:00:00:00:00:00:00:3F:81:55
[23:30:25][E][midea_xye:164]: Received incorrect message length from AC
[23:30:25][W][component:237]: Component midea_xye.climate took a long time for an operation (2036 ms).
[23:30:25][W][component:238]: Components should block for at most 30 ms.
[23:30:25][D][uart_debug:114]: >>> AA:C0:00:00:80:00:00:00:00:00:00:00:00:3F:81:55
[23:30:27][E][midea_xye:164]: Received incorrect message length from AC
[23:30:27][W][component:237]: Component midea_xye.climate took a long time for an operation (2036 ms).
[23:30:27][W][component:238]: Components should block for at most 30 ms.
[23:30:27][D][uart_debug:114]: >>> AA:C0:00:00:80:00:00:00:00:00:00:00:00:3F:81:55
[23:30:29][E][midea_xye:164]: Received incorrect message length from AC
[23:30:29][W][component:237]: Component midea_xye.climate took a long time for an operation (2036 ms).
[23:30:29][W][component:238]: Components should block for at most 30 ms.
[23:30:29][D][uart_debug:114]: >>> AA:C0:00:00:80:00:00:00:00:00:00:00:00:3F:81:55

I’m certainly no expert (I don’t connect via XYE, and only know a little about it from what I absorbed during my own research, trying to connect via Wi-Fi) but my understanding is that the XYE ports are not really RS485 but rather some proprietary protocol on top of that. Maybe exciton implementation accounts for that already (or not), I have no idea.

Some other people have had to connect to some control board (where ‘A’ and ‘B’ (IIRC?) connections are exposed), rather than directly to the XYE; apparently this is closer to actual RS485 protocol (or something?).

Other than that, just make sure all your grounds are tied together, just basic signalling stuff, check connections, etc. As it appears to me you are not communicating.

Do you have same rs485 converter with automatic direction?
What esp pins you use for rx and tx?
All GNDs connected? maybe you could show your wiring
Baud rate 4800 is correct?