Midea branded AC’s with ESPhome (no cloud)

Im trying to find which pins correspond to potential ground, vcc,tx and rx and making sure if its 3.3v or 5v. But none of those pins (EYX or the S485) give me a ground to the ground screw right besides the board… Im confused…

Tho this is what I found (from top to bottom)

E(suppossedly ground?) Is linked to 485 pin 1(if + polarity) and 2 (if - polarity on the probes)

Y is linked to 485 pin 3

X is linked to 485 pin 4.

Neither pin 1 ,2 or E give me ground on the ground
How is that possible ?

I would like to read those pins with Rasp.Pi eventually and figure out if there might be a kernel behind all this… Any thought on the pins multimeter reading ?

Yours looks like exactly my board! (Carrier 40MBABQ36XA3). I have just tried measuring this myself yesterday and accidentally shorted my test leads. The good news: It seems to have short protection. I heard a relays switching quickly and the whole machine turned off. I flipped the breaker, then turned it back on and the system still seems to work as normal. Didn’t continue because it was late and cold.
My intention was to get +12V for supplying ESP32.

What did you measure exactly? Resistance measurement when unit turned off?

Question: Are you suggesting the blue and cyan pins are shorted/connected? Did you confirm? I was wondering already if the “S-485” connector is a different interface than EYX but it seems you assume it’s just the same with a different connector?

PS: There is no RX or TX in RS485. It’s a differential interface that carries data both ways. So technically not even ground would be needed.

I found this solution:

    on_state:
      - logger.log: "State updated!"
      - lambda: |-
          if (x.mode != CLIMATE_MODE_OFF)
            id(tempo_acceso).publish_state(true); 

But it doesn’t work properly, how do I make the counter scroll when it’s on in any mode and stay at 0 when it’s off?

I am pretty sure that the manual for my Pioneer said that there was a built-in interface for an old-school bang-bang thermostat. I don’t think that it supplied 24V to power a smart thermostat, and there are cheaper options out there if that’s all that the linked Pioneer interface does.

I ruled out using a bang-bang thermostat before even starting my ducted 18K RYB install, because it defeated the main benefit of an inverter AC/heat pump…

I measured the continuity to try and find the ground pin first to not short anything. The machine was off I didnt wanna risk the brand new 5K $ machine lol. I was trying to figure out , ultimately the voltage on those pins… and if there was a Kernel behind those ports … and If I could play with a Raspberry Pi directly on it. But I guess that this 485 port is the same one as the other mini units up this tread and with the TTL and ESP32 I could do the same thing? And if I need a voltage step level shfiter before I hook it up…

Ok, that works, but the timer doesn’t reset to 0 when the air conditioner is turned off.
Does anyone have a solution?

    on_state:
      - logger.log: "State updated!"
      - lambda: |-
          if (x.mode != CLIMATE_MODE_OFF)
            id(tempo_acceso).publish_state(true);
      - lambda: |-
          if (x.mode != CLIMATE_MODE_FAN_ONLY)
          if (x.mode != CLIMATE_MODE_HEAT_COOL)
          if (x.mode != CLIMATE_MODE_COOL)
          if (x.mode != CLIMATE_MODE_HEAT)
          if (x.mode != CLIMATE_MODE_DRY)
            id(tempo_acceso).publish_state(false);

Edit: Resolved with:

  - platform: template
    name: "Power"
    id: tempo_acceso
    internal: True
    on_state:
      then:
        - sensor.duty_time.reset: runtime

Hello,

I have a Vaillant VA 2-035 CN fan coil, which is identical to the Midea MKH2-V350-R3 type. I am currently using it with a Vaillant VA 2-WC C wired controller, which is identical to the Midea KJRP-75A/BK-E wired controller.

Unfortunately, this controller is not suitable for the control I want (no WiFi, weekly programming, reduced temperature programming, etc.). Unfortunately, Midea does not sell a WiFi controller for this fan coil and I was wondering if it could be solved with the help of HA if I could create a WiFi controller for fan coils.

This solution is designed for indoor air conditioning, does it work with the above parapet fan coils? Has anyone tried something like this?

Thank you for your help.

My Carrier Performance system is identical to the Midea Ductless system. Even the part numbers are the same. From my service manual:

From this text it’s really suggested that using the 24V interface (SCENARIO #2) does not result in any performance degradation. My installer installed the Ecobee with that interface and insists that’s the right thing (he has no f** clue though). Online I found many claims that in that configuration, T1 would be used for control (as opposed to just the on/off from the thermostat) and as such, the operation would be very similar to using the included thermostat and in particular, it would still operate as a variable speed system.

However, based on the power draw, this just doesn’t seem to be the case:

The pink one is the EcoBee. It can be seen that with the EcoBee (24V interface) it’s basically on at ~5kW or off.

I also measured noise level: ~33dB on low speed, ~39dB when running a bit more when the included thermostat. And 47dB (!) with the EcoBee.

1 Like

Sorry I really have a hard time following you. What’s a kernel behind the ports? I am pretty sure the S-485 connector is actual RS485 with 12V. No TTL. I haven’t tried connecting anything yet but given that XYE is actually also RS485 and that connector is right next to it, I am wondering if it’s just the same interface. I’ll try as well once I get the chance.

I just tried using modbus on the XYE terminals (9600 baud, 1 stop bit, address 0x1), and I got no response trying to read registers 0x3 (air temp), 0x66 (fanspeed). I saw those settings used in other Midea modbus configs hooked to the HA/HB terminals, and I assumed I’d see something.

It’s too much of a pain to lug the oscilloscope up to the attic to really dig into it, but I assumed that XYE didn’t talk modbus anyway, considering there are add-on devices sold by Midea and others to adapt XYE to modbus.

Thanks for confirming, that’s what I thought as well.

For @th4h4x and my board, we have HA/HB, XYE and S-485 on the board in our air handler (see Midea branded AC’s with ESPhome (no cloud) - #1240 by th4h4x).

I am curious is the S-485 port is modbus or maybe just another connector for XYE.

Would you mind sharing the ESPhome yaml (I assume that’s what you used) to test? I haven’t used modbus before. I’d like to see what I can get out of the S-485 port…

Sure. There’s nothing interesting in my common.yaml, it’s just Wifi signal sensors and such.

substitutions:
    location: attic
    locationName: Attic
    device: esp8266
    deviceName: Esp8266
    deviceDescription: Attic Esp8266 192.168.50.80
    static_ip: 192.168.50.80

packages:
    common: !include common/common-mqtt.yaml

esp8266:
  board: nodemcuv2

# Disable serial logging (we're using that UART channel)
logger:
  baud_rate: 0
  level: VERBOSE

uart:
  id: mod_bus
  baud_rate: 9600
  stop_bits: 1
  tx_pin: GPIO1
  rx_pin: GPIO3

modbus:
  id: heatpump_modbus
  uart_id: mod_bus

modbus_controller:
  - id: heatpump_modbus_ctrl
    ## the Modbus device addr
    address: 0x1
    modbus_id: heatpump_modbus
    setup_priority: -10
    update_interval: 10s


# Individual sensors
sensor:

  - platform: modbus_controller
    modbus_controller_id: heatpump_modbus_ctrl
    name: "Air Temperature Ts"
    id: "test_air_temperature_ts"
    icon: mdi:temperature-celsius
    register_type: holding
    address: 0x3
    value_type: U_WORD
    unit_of_measurement: "°C"
    filters:
      - multiply: 0.5

  - platform: modbus_controller
    modbus_controller_id: heatpump_modbus_ctrl
    name: "Test Fanspeed"
    id: "test_fanspeed"
    register_type: read
    address: 0x66
    value_type: U_WORD
  

I don’t think so. The pins are indicated as HA/HB, same as my wired controller (KSACN1001AAA). It is similar as RS485 but it also carries power. This likely corresponds to the proprietary protocol we don’t know much about yet (@fabius found the patent)

Note that I connected RS485 receiver to HA/HB, but the unit shuts off (probably due to some protection mechanism).

Why is XYE better than modbus (=H1/H2 pins)?
I thought modbus provides direct access to all registers whereas XYE is a predefined protocol with limited function set.

And I thought follow-me can be set via modus … is that not true?

Fair enough. I know many of the thermostats designed for HA/HB (2-pipe as it’s translated in Midea manuals) have terminals inside the shell for modbus hookups. The only modbus info I’ve seen for Midea stuff is mostly for their air:water units popular in Europe. You should see if your thermostat has them.

It’s not, at least with what’s been documented so far. It’s not clear how the 4-wire thermostats set the internal reference temp (what follow-me sets). Modbus would be easier to explore (many registers are listed in those air:water HP manuals), instead of the XYE protocol with the unknown command byte.

After getting frustrated with fan settings on mine today, I’m about to ESPHome lambda my way to one of those bang on/bang off controllers. “If I set the fan to ‘High’, that’s what speed I want - [Midea smugly sets it to Low] - stop trying to outsmart me!”

Thanks for the pointer!

My controller (KSACN1001AAA) is identical with @dbaq (see here and pictures here) and also @th4h4x looks identical (both from picture and board). There is indeed a COM485 connector. I’ll also check there on the weekend if I can get anything out there. You say, this would be modbus? (and would be “bridged” to the HA/HB interface)?

Actually, @dbaq , in your pictures there is something connected but I’m not able to see what. What exactly do you have connected here?

PS: Where did you actually get this picture from?

Hello,
i flashed my esp32 with this configuration Midea-heat-pump-ESPHome/heatpump.yaml at 89898f167d5cb4528f034b340d9715f4c68ef730 · Mosibi/Midea-heat-pump-ESPHome · GitHub and the board is now inaccessible. When i try to flash new version espools it throws error “A fatal error occurred: Packet content transfer stopped (received 8 bytes)”
i was trying to use TTL to RS485 module but even without it i cant reflash the ESP anymore.
Any ideas?

Edit: i found the issue comes from the power supply. Its chinese Tenstar 220v to 5v/3W connected to the 5V pin of the ESP board which fails even if i power from an USB but the tenstar is still connected to the board.


Im not sure what’s the issue with this PS, do i need more than 5W if i use the 5V pin?

Hi folks. I have a Midea aircon with the soldered-on comms module. This appears to be based on a Realtek RTL8720CMF chip, which is potentially compatible with ESPHome. I’m a little hesitant about trying to flash what is a relatively untested firmware onto a soldered-on module, though.

Which is why I’m mentioning it here, as people who have the USB module and have replaced it with an ESP32 or ESP8266 might be in a good position to see if the USB module is running the same microcontroller, and can be successfully converted to ESPHome.

For details of how to do it, please see the relevant LibreTiny issue #44

I presume that the goal would be to build an equivalent LibreTiny-ESPHome firmware as is currently running on the ESP32/8266s.

Just to note that the RTL8720C support is very new, so there may be some complications getting it to work on this dongle at first.

Yet I dont have any ESP yaml as its not even installed. Before buying the ESP32 or similar I really wanted to try what I can get out of the 485 port or XYE with my RBPI and figure out what type of ports they are, voltage, when the pins are, if its different thant the others ect before hooking up any wires to it and causing a short somewhere. Thats why. With a TTL to RS485 (Xy-017) I would be 100% sure of which pins are which ones and it seems it can take 3.3, 5v or 12v.
See this:

https://community.home-assistant.io/t/midea-branded-ac-s-with-esphome-no-cloud/265236/706

This setup seems to have made it work with those : https://community.home-assistant.io/t/midea-branded-ac-s-with-esphome-no-cloud/265236/1161

This one as well:
https://community.home-assistant.io/t/midea-branded-ac-s-with-esphome-no-cloud/265236/1079

Did you get a chance to do any sniffing of XYE messages yet?

I’ve randomly tried a couple different command bytes (2nd byte in TX), and I didn’t get any response. I also poured through the UART/M-Net code that someone obtained (from an Midea engineer email?) looking for clues of the XYE protocol, but I’ve come up empty.

One (unrelated) thing I did notice when messing with IR was the ‘Engineering Mode’ (fan+power for 7 seconds) supported by the newer remotes sends IR codes that are different than any currently documented in the Midea IR component. They start with a 0xB* code instead of the 0xA1, 0xA2, 0xA4 codes currently documented/implemented. I can’t get my unit to respond to ‘parameter checking’ from the remote in Engineering Mode, so I gave up digging into this.

I also tested putting an IR receiver near the ‘Display Board’, and sure enough, the KJR-12B controller is just a wired IR remote controller. It sends the typical IR commands implemented in the ESP Midea IR component. I need to try the only advanced feature that controller supports: air flow/static pressure adjustment to see what those IR packets look like.

1 Like

Hello @brianHa

i hope that i can do a bit research after the holidays.

Is the code you mentioned publicly available?

Regarding modbus: i think if a unit has a direct modbus interface (== RS485 + known standard protocol on top) it is the best way to interface the units.
XYE or uart(usb-port) are just alternatives if there is no modbus.