Midea branded AC’s with ESPhome (no cloud)

The ducted minisplits from Midea usually come with a small (maybe 1" x 5") display board that has 3 LEDs and 2 - 7 segment display LEDs (like on old alarm clocks). That board connects to the 10-pin connection (CN10) - you can see it on your diagram as ‘DISPLAY BOARD’ (https://hvacdirect.com/17223000000003-display-box-assembly.html)

That board has the IR receiver on it, and it also has a 5-wire connector for the older, crappy thermostat that can only talk one-way to the unit. The display board wire is short, and it is usually clipped on to the outside of the cover for the electrical connection section of the unit. I have my IR transmitter aimed at that board, which I have near the unit in the attic (it would typically be useless in the attic like that.)

Some of the better themos that use the CN40 port have built in IR receivers, but there are like a dozen different thermostats for these units, with varying capabilities.

2 Likes

Hi all, I recently installed an ESP32-C3 on my Bosch 3000i easily and without any problems.
Now I want to add an IR led to control the other functions, but I noticed that the midea_ac.follow_me function cannot be activated/deactivated when this is inserted in the yaml file.
The follow me always works.
How can I add a switch to activate/deactivate the follow me when needed?

@fabius here at the detailed pictures of the wired controller. I hope it helps, let me know if you want more photos.




So the wired controller has an IR receiver so I can technically use one of my minisplit remote (picture below) to control it at a distance and it works. But it appears that the wired controller won’t read/receive the follow me temperature from the remote even with the mode enabled. Not sure if I am missing something here but I found that interesting. Part of me was thinking that I could put an IR blaster near the wired controller and transmit the follow me temperature but it looks like the wired controller is ignoring the following temp for the remote so I am not sure if it is a viable plan. Please let me know if anyone has succeeded.

@brianHa, I think we have a similar setup and your answer might be what I am missing but I would love your confirmation before spending another $100.

Here is my setup:

The WF-60A1 has a IR receiver (discussed a few replies above) but it appears that it is not working/receiving anything from my IR tx. Do you think adding the display board you mentioned would work if I have the wired controller also connected or are they mutually exclusive? The last problem that i am trying to solve is that my airhandler services 2 rooms, I want to put the temp sensor a bit further away from the wired controller so the temperature readings are more accurate. I don’t mind adding a display to my airhandler, I am just curious how they are going to interoperate.

Thanks all for your help!

1 Like

Hi, great! @dbaq Thank you very much for the pictures. (A wish for some details below**)

This controller looks like a Midea “KJR-120X2”. (12V Version) using the XYE Bus (and probably 12V supply voltage)

In the Manual of the controller is written, that it used the follow me function to itself report the temperature at its installation location to the connected ac. (There is an additional feature to set a compensation temperature for the sensor)
It can enabled/disabled via the func button (it is activated when a “person” as symbol is shown in the display on the right.

I think that midea just has the ability to either use the internal sensor or some external “thing” that reports a follow-me temperature. To now, i did not find any indication that midea can have 3 sensors that can be given priorities (like internal, display-sensor, follow-me)

The documentation does not state, whether the wired controller repeats IR signals that were sent by a wireless remote control.

** Can you determine the written values of the components on the rigth (backside) of your pcb?
IC700; TVS201 and D203 - those components seem to be the difference (+ the buzzer) to a KJR-120X1 (5V supply) version.

Unfortunately, i still cannot post pictures here :frowning:

1 Like

Have u gusy tried the dudanov usb dongle? That was the only way for me to get follow me working

@dbaq just another thought - if you get the follow me mode from your remote (standard wireless) working then your controller should be able to claim follow-me function with the microcontroller-board too! This may a way to test it.

How do you know the ‘follow me’ is not working through that thermostat? Usually the little person icon (show on the thermo in your pic) means follow-me is active.

The magic ‘current room temp’ value isn’t available to be set via the XYE or UART communication mechanisms, which is why the IR blaster is needed. Those upgraded thermos that use the 4-wire CN40 (Modbus protocol) I believe can set that value if they have their follow-me mode turned on. Perhaps it won’t relay that value sent via a remote, but I always assumed it did.

The ‘DISPLAY BOARD’ display – it’s surprising yours didn’t come with it – is meant to exist with other controllers. It’s basically the ‘technician control’ that can display the unit’s status and any error codes. It also has the IR receiver for basic control with a remote for installs where the unit is line-of-sight to a remote.

I don’t think anyone ever figured out how the 4-wire/modbus themo sends the unit the room temp (follow me), so I don’t know how it would interact with the other DISPLAY BOARD sending the follow me IR signal. If you can sniff your thermo’s communication with ‘follow me’ on, you can probably figure out how to do everything through that and not need IR.

Hi @brianHa,

according to the documentation of the XYE bus wall mount remote controllers, they can transmit the local temperature using the follow me function. (The new wall mount controllers since KJR-120* generation all have a temperature sensor and the ability for activating the follow me mode for measuring at the mounting location) This function can be switched on/off on the controller.
The previous generation of wall mount controllers KJR-29* and KJR-90* do not have this function but some work on the same bus.

Is is currently nowhere documented which command sequence is transmitted and if the commands even can be send by the uart (“usb”-like) interface on display modules.

In a highwall model (All easy blue R290 == Xtreme save blue) the system is built like that:

Mainboard → 4 wires (2x power, 2x data)

  • display board
    • 4 wires “usb”(uart) → wifi dongle
    • 3 wires (5v, gnd, i/o) → adapter and relais-board
      • adapter and relays-board
        • 4 wires (xy rs485, 12v, gnd) to wall controller

→ the follow me command is either comming to the display board via IR (from wireless remote) or from the XYE bus

@brianHa, alright, I did a bit more testing and you are correct.

The wireless remote does send the follow me temp to the wired controller and the wired controller does receive it (and send that temp to the airhandler as expected) but the wired controller does not display it. That’s why I got it wrong yesterday.

If both the wireless remote and the wired controller have the follow me enabled, the temperature from wireless remote has the priority and overrides the one from the wired controller from what I can observe (but the wired controller does not display it).

So technically speaking, I should be able to have an IR blaster pointing at my wired controller and use this IR transmitter component.

The IR receiver on the WF-60A1 does nothing still for me though. Even after turning off the follow me mode on the wired controller in the other room. So I would need that extra display near my unit to have it work.

@fabius, here is my controller model btw:

I agree with you that the follow me temp value is transmitted over the wire with my wired controller so there must be a way to transmit it without IR but I don’t think anyone has found a way yet. The fact that my wired controller is daisy chained with the WF-60A1 to the CN40 port and the follow me from the wired controller still works mean we should be able to transmit it without IR somehow.

1 Like

I think the 4-wire (CN40) hookup the better thermostats use is actually modbus. The 4 wires are A, B, Vcc (5/12V), and ground. Some thermostats add terminals to access modbus from (HA/HB), and some units have PQE terminals which I think is also the same thing.

XYE is a Midea-proprietary protocol (CCM/central controller) that sends longer packets than Modbus register query/set. There are devices that can convert the XYE/CCM protocol to modbus (also BACNET and others), so I don’t think they’re the same thing, though some thermostats can do either.

After reading everything available on the web regrading XYE, I’ve never seen anything that is capable of setting the room/follow me temp value. However, it appears possible to do so with the 4-wire modbus, since the newer thermostats do just that.

Looking at the CCM/XYE controllers and CCM → modbus bridge devices, it does appear that the protocol is limited to setting modes and fan speeds and querying basic temp data and problem codes. The advanced config parameters and follow-me room temp don’t appear to be settable. In fact, one of the CCM->modbus devices implements its own control logic to simulate setting this value: it tweaks the setpoint to force the unit to run/stop.

There’s also the USB/UART on some models (you mentioned), which appears to have the same limitations and similar data queried as XYE. Oh, and also the 5-wire (Vcc, Gnd, Unit On, IR Led + and IR LED -) used by the old thermostats. It communicates with a wired version of IR (one way only), but it can do ‘follow me’, though mine never worked correctly.

There’s also ‘special’ stuff that can be set via the IR protocol. Newer remotes support ‘engineering mode’ where internal settings (temp compensation, etc.) and static pressure can be set. Queried values can be read directly on the 7-segment display.

1 Like

Please read that what @dbaq and i wrote. XYE Bus is simply something midea proprietary over RS485 electric interface. Most commands are already extracted but seemingly from older wall mount remotes, which did not have local sensing while using the “follow me” function.
There are some projects on GitHub and in the web, which document the frames that were known up to then.

Modbus requires always a converter (some displays and some units have dedicated modbus ports but this is not XYE)
@dbaq wrote before: his controller is indeed sending follow me commands over XYE which is connected to port 40.
Currently nobody figured out if “follow me” is transmittable over the uart (usb port) for the wifi dongle too.

Midea is somehow confusing, because they have multiple bus-systems side by side.
I agree that HAHB uses probably same commands as XYE signalling does.

1 Like

Maybe we’re saying the same thing, but have you confirmed that the CN40 port (4-wire, RS485) is actually using the XYE (RS485, Midea-specific CCM) protocol? I suspected CN40 and XYE are not the same (ignoring the power wire), since my ducted unit has both ports as well as solder pads for HA/HB (modbus RTU).

If all the RS485 ports (XYE and CN40) use that Midea CCM protocol, then it would be great if you could sniff the thermo’s comms. The Codeberg XYE repo only has command/queries that the CCM (central management) controllers use, and those don’t send follow-me temp or advanced sensor queries.

The fact that the XYE/CCM protocol documents the command byte as starting at 0xc0 leads me to believe that there are other valid commands/queries that haven’t been documented. @exciton found another set command (0xC4) which can change the unit (US models) to Celsius mode from Fahrenheit, but it’s not clear to me how/where he figured that out.

1 Like

I looked onto the diagram of my unit - it is written there that it is Port XYE 12V5V with in my case 12V. It is stated that it is RS485 (not Modbus) and uses CCM protocol.

Setup as described here: Midea branded AC’s with ESPhome (no cloud) - #1207 by fabius

On my adapter board the HAHB Terminal and the required transformer for that is not populated (this would be another version of that board)

Hello,

just startet a small project for better analysis of the XYE interface:

https://github.com/fabianschwamborn/HVAC-shark

Usage: arduino with wifi and rs485 compatible board. Data is then streamed to network broadcasts, which then can be dumped and decoded with wireshark.

Currently i have disassembled some parts of my air conditioner, so i it will take some time for me to do more debugging.

One advance of wireshark is, that it is rather easy to add marks and notes on packets! (e.g. temperature setting and so on)

I ran a bit out of time tonight and needs some sleep, so the dissector is not finished yet with all commands already known.

2 Likes

@brianHa

I just got my 17223000000003 but I didn’t realize that both my board has a 10pin connector and the display has a 10pin assembly. Do you have a male/male adaptor on yours or am I missing something? the 17223000000003 display is listed as compatible with my airhandler (40MBDQ18) so I might be missing something still.

EDIT: I think I found what I need: General Metals

Thank you

1 Like

Yeah, that looks like the correct part. I didn’t even realize that was separate - my Pioneer unit came with the Yellow->Black adapter already connected to the CN10A port on the motherboard. The display board could plug directly into the ‘black’ end, which was dangling off. The wires are about an inch long on my pre-connected Y->B adapter, so with the display wire length, it could just make it to the slots on the electrical panel cover (though it doesn’t mount securely.)

Pioneer actually included an extension cable for the 10-wire display board (after the adapter) of IIRC 6-7 feet long. I assume this is to allow that board to be relocated somewhere (return duct box, perhaps) where the remote could actually control it if installed in the ceiling. It would have been better if they included the nice controller (KJR-120N) instead of the trash one (KJR-12B) instead.

2 Likes

Awesome! Looking forward to seeing if you discover some additional query/set commands besides 0xC0, 0xC3, 0xC4, 0xCC and 0xCD.

Assuming XYE and CN40/4-wire are the same thing, documenting this protocol might allow fine-grained control of the unit. The ‘Dr Smart’ tool Midea sells (https://youtu.be/UgYZLTLlXqM?t=392) for technicians can use 485 to set internal values like the compressor speed, so it’s theoretically possible to rewrite the tempature control loop to not allow insane temp swings.

1 Like

I was not aware of this tool, due there is the engineering mode which seems to have the same parameters on the wall mounted units. With the remote control you can step into it and set parameters. The documents for that are in the internet :wink: But that means, when you have those parameters in the outdoor unit, and you can either query it there with the diagnostic tool OR on the display unit of a wall mounted ac, the system would have an interconnected bus.
I still wait for material and have to print a box for my adapter pcb, then i can make multiple test runs (and see if the special wireless remote control parameters are passed to my ac along the xye bus)

I’m new to the party. So XYE is the ultimate way to control midea devices right? As i understood its better than UART and IR.

CONNECTOR PROTOCOL
CN3 UART
CN2 One way IR?
CN18 I2C or UART?
CN40 ??
CN42/CN41 RS485 CCM
CN44 ??

I’ve got ar12txhqasineu - ar3500. https://master-volt.pl/wp-content/uploads/2023/08/TDB_RAC_AR35.pdf
https://mideauk.co.uk/wp-content/uploads/2020/12/Quick-Guide-RAC-version-2.0.pdf

CN44 should be Modbus.

XYE is the best option if your unit has the terminals, however, at least for now, you can’t do a ‘follow me’ temp through XYE. You either have to use an IR LED aimed at the display board or I think there were previous posts about tapping into the IR logic line directly with a non-modulated (IR) signal.