Midea branded AC’s with ESPhome (no cloud)

@Shovelhead same as @ChasakisD my MKG-300C also has an unsoldered PQE connector. No matter what I try, I can’t get any response from the XYE port using an RS-485 → USB adapter on my Windows laptop.
I’ve tested with CoolTerm, RealTerm, several Python MODBUS address scanners, basically every possible combination of port settings – but the line stays completely silent. I really need to read my fan-coils status to automate water pump control, but I’m losing hope – no signs of life at all. Please let me know if you ever managed to get it working, and if so, I’d really appreciate any details you can share.

Hi everyone. I signed up specifically for this project, because I’d like to implement it on my A/C split as well (although my end goal is to somehow turn this into a wired Ethernet connection to the ESP, rather than a purely wi-fi one, but one thing at a time for now). My A/C ia a “Heinner Obsidian” and came with the OSK102 dongle, which is what it’s running now no problem.

I took a look inside the front panel and sure enough, there’s the board, very similar to others shown here, with the corresponding pseudo-USB connector for the dongle.

Rather than diving straight in (because I do not have all the parts and TIME yet), I thought I’d be clever and just have a look at what the unit and dongle are sending on those TX/RX pins. Since I’m a bit of a tech-hoarder, I found a 4 pin JST connector (or whatever it’s called) which matched the one on the A/C’s board, so I wouldn’t have to mess with the original USB connector. I didn’t have a serial adapter on hand at that time (such as a CH341 maybe ?), but I DID have an Arduino clone just lying around, so I thought I could use ITS serial adapter, which SHOULD be possible from what I gather - the board by itself DOES work when I do this: I create a “loopback” by directly connecting its TX/RX pins together and spam characters in something like PUTTY. When I pull the jumper, the characters stop coming in, so we can assume that part works. I then threw together all THIS nonsense:

Sadly, that’s as far as I ever got: no matter how much I tried, the A/C never sent anything in my terminal - not even some random garbage characters - NOTHING ! I tried swapping the data pins around, but no - not even a hint of data. The A/C was working just fine, responding to the remote control, with no side effects to that mess of wires you see in the picture, but it did not send anything either. I then tried the dongle by itself: I brought it down on the table with the USB connector, stuck some dupont wires in the other end and ran those to the Arduino’s TX/RX, GND and 5v, following along with the labels on the A/C board, to make sure I don’t fry the dongle by messing up the polarity.


Thankfully I didn’t, but it did not show any data in the monitor either. It did not register to my WiFi either (couldn’t see its MAC in my Ubiquiti), so simply powering the dongle by itself is not enough - it first has to do some sort of handshaking with the A/C to go any further. It was THIS handshake I was expecting to capture at the very least, but no - nothing ever came through… Granted, I’m not entirely sure what I was planning to achieve with said data and IF it’s even of any use at all. I think my idea was to try to figure out what the dongle and A/C expect to send/receive and TRY to “manually” send that data to see if the unit responds.

Thankfully, everything went straight back to normal once I plugged the dongle back into the A/C, so no - I didn’t kill anything during my experiment to explain this COMPLETE lack of any output.

Has anyone tried this before ? Is it even necessary to bother to do this, or should I go straight to the ESP+level shifter ? I do not have a running install of HA yet, so I won’t dive straight in. I couldn’t find this project done with a Heinner unit, soooo unless I’m really lucky for some of the “default” commands to match, I figured I HAVE to get “in there” to sniff them out to know what data to send for stuff like On/off, fan speed, temp, mode, etc…

did you figure this out as i am trying to make the same change rather than solder to the ac unit

esphome:
name: ac1
friendly_name: AC Despacho

esp32:
board: esp32-c3-devkitm-1
framework:
type: arduino

I just had the same issue, you can see the code that I just leave before

What an epic thread!

I am installing a multizone heatpump with 4 wall mounted heads and a concealed ducted handler. The wall mounted heads will be simply handled with SLWF-01 modules.

For the ducted handler I have an ESP32 with a RS-485 adapter to connect with the XYE interface. As I understand one of the only limitations of XYE is the lack of follow me which can be overcome using the IR interface.

Has anyone tried directly connecting a GPIO pin from an ESP to the TSOP using the remote_transmitter function similar to how to achieve this with the SLWF-01 module for IR control? If that is not possible can the IR LED on the board be accessed via the 5-pin connector?


I’m sure it’s possible to directly interface to the IR signals, but I found it just as easy to have an IR LED near the board that sends commands from the ESP. After all, that’s exactly how the ‘dumb’ thermostats work. I was also able to pick up the thermostat’s commands from the IR LED on the board, so in theory, one could use the thermostat as a controller for the HA/ESPHome integration.

It didn’t seem worth it, considering you’d be out of sync with the thermostat’s ‘state’ as soon as you send a command that didn’t originate from the thermostat.

This repo appears to go an extra step by decoding the protocol used for this board to ‘read’ the status 7-seg displays: homie_heatPump/src/SenvilleAURADisp.hpp at e9abbaad83cb7865b2cb663581197b32a78e2b07 · kpishere/homie_heatPump · GitHub

Thanks for the reply @brianHa

I also found the other dedicated Midea XYE thread where it looks like follow me was figured out via RS-485. Right now the handler is sitting in a box in the garage so I am just trying to get ahead of the integration a bit.

Looking forward to contributing once I get it installed.