Midea branded AC’s with ESPhome (no cloud)

Hello all,
I have successfully installed this on an ESP01 and plugged it into a Dimstal AC SMND12. Unfortunately the wifi does not seem to be active. There is no communication between the AC and ESP. Can someone tell me how to activate wifi without buying an original wifi usb stick?

Is it a midea branded AC?

Tried swapping tx/rx?

Yes, I think the AC is identical in construction to Midea. I have read in various places.
I think now I know where the problem lies. I had thought with the adapter, with which I have flashed the ESP01, I could also operate it on the AC. But in the meantime I had read your text again and found that I need a different adapter for operation.

I think you can (as any ESP module will work, as long as they can run ESPHome), but you will need to check your configuration of GPIO’s; they might be on another pin :wink:

i only have an 4 ch level converter. how do i wire that?

I’ve started setting this up and have setup my configuration as the example shown above, my model is listed here, however I’m not getting any communication. All values show n/a and no commands are successfully sent. SET_STATUS(0x40) request failed…

we need some more info than that…
esp type
yaml
logs
??

@aceindy my apologies, I’m using esp8266, specifically this

here is my yaml

# Configuration entry
substitutions:
  node_name: lennoxhvac # Use a unique name.
  node_id: lennox_ac    # Use a unique id.
  friendly_node_name: "Lennox AC"


esphome:
  name: ${node_name}
  comment: ${friendly_node_name}

esp8266:
  board: esp01_1m

# Disable logging over UART (required)
logger:
  baud_rate: 0

# Define UART pinout 
uart:
  tx_pin: 1
  rx_pin: 3
  baud_rate: 9600

climate:
  - platform: midea
    id: ${node_id}_my_climate   # Use a unique id
    name: ${node_name}          # Use a unique name

# Optional settings overrides.
    period:  2s                        # Optional
    timeout: 4s                       # Optional
    num_attempts: 3              # Optional
    visual:                              # Optional
      min_temperature: 60 °F    # min: 60
      max_temperature: 95 °F    # max: 95
      temperature_step: 0.5 °F  # min: 0.5
    autoconf: true                # Optional

# All capabilities in the section below are detected when autoconf = true:
    supported_modes:    
      - FAN_ONLY
      - HEAT_COOL
      - COOL
      - HEAT
      - DRY
    custom_fan_modes:
      - SILENT
      - TURBO
    supported_presets:  # All capabilities in this section detected by autoconf.
      - ECO
      - BOOST
      - SLEEP
    custom_presets:     # All capabilities in this section detected by autoconf.
      - FREEZE_PROTECTION
    supported_swing_modes:
      - VERTICAL
      - HORIZONTAL
      - BOTH
    outdoor_temperature:  # Optional. Create outdoor unit temperature sensor (may display incorrect values after long inactivity).
      name: "Temp"
    power_usage:          # Optional. Create power usage sensor (only for devices that support this feature).
      name: "Power"
    humidity_setpoint:    # Optional. Create indoor humidity sensor.
      name: "Humidity"
|17:03:43|[D]|[ApplianceBase:139]|Response timeout...|
| --- | --- | --- | --- |
|17:03:43|[D]|[ApplianceBase:146]|Sending request again. Attempts left: 2...|
|17:03:43|[D]|[ApplianceBase:162]|TX: AA 21 AC 8D 00 00 00 00 00 03 41 81 00 FF 03 FF 00 02 00 00 00 00 00 00 00 00 00 00 00 00 03 22 A8 11|
|17:03:44|[D]|[ApplianceBase:139]|Response timeout...|
|17:03:44|[D]|[ApplianceBase:146]|Sending request again. Attempts left: 1...|
|17:03:44|[D]|[ApplianceBase:162]|TX: AA 21 AC 8D 00 00 00 00 00 03 41 81 00 FF 03 FF 00 02 00 00 00 00 00 00 00 00 00 00 00 00 03 22 A8 11|
|17:03:46|[D]|[ApplianceBase:139]|Response timeout...|
|17:03:46|[D]|[ApplianceBase:154]|Destroying the request...|
|17:03:46|[D]|[AirConditioner:178]|Enqueuing a GET_STATUS(0x41) request...|
|17:03:46|[D]|[ApplianceBase:173]|Enqueuing the request...|
|17:03:46|[D]|[ApplianceBase:075]|Getting and sending a request from the queue...|
|17:03:46|[D]|[ApplianceBase:162]|TX: AA 21 AC 8D 00 00 00 00 00 03 41 81 00 FF 03 FF 00 02 00 00 00 00 00 00 00 00 00 00 00 00 03 23 F6 C2|

Did you try changing the TX and RX pins? That is normally the first step, if somethings not working. :slight_smile:

Just do it in your code:

uart:
  tx_pin: 3
  rx_pin: 1
  baud_rate: 9600

@paddy0174 i did start trying that but the configuration failed to save over wireless, will try again connected directly to it.

Yeah, that’s a known problem with these “small” chips, they don’t have enough memory to get the running and the new firmware on the device at the same time.

There is kind of a workaround, but it’s messy and you have to be aware, what you’re doing.

  • Copy the YAML you have into an editor and just to be sure, make a backup of the file also.
  • Turn off the A/C
  • Delete all the file content but the bare minimum you need to work with the device, eg. WIFI and OTA must stay enabled.
  • Flash this mini image via OTA to the device.
  • Go back to the dashboard and coyp back the safed content from the editor.
  • Make changes or whatever is needed, eg. change the pins.
  • Flash the image back to the ESP over OTA.

This way you’re circumventing, that you use a lot of space on the device before you flash the real firmware. :slight_smile: But as I said, do it at your own risk and don’t complain, if you won’t have any backups. :laughing:

Or better just connect it to your computer, in the end it saves a lot of trouble. It is more of a workaround for people who can’t reach the device very good inside the A/C.

same issue with tx_pin: 3 and rx_pin 1

@shimonenator perhaps you could share your yaml file for Model: MWMC009S4-1P / MWMC012S4-1P

Well, at least we know you do have transmit…, but apparently the AC doesn’t receive it (as it doesn’t reply). This could be because tx/rx are swapped (which you tried), but could also be a faulty board or just a bad connection (or even wrong gpio config??)
You happen to have another board you can try??

I don’t have another, just the one.

Hello everyone, hello Mosibi

First of all, sorry for the Google translation into English.

After several days of trying to establish a connection to my Midea Klone Kaisai heat pump, I am asking for your help. I’m a total novice when it comes to programming. The connection between the Pi3B+ and the boardBoard is successful. Likewise the integration to HA. But then the problems start. My first attempt with USB to RS485 converter from Mosibi failed after various attempts. Then I tried again with this one. Converter2

The TX LED shows me that the program is queried at 10-second intervals. The RX LED for receiving remains dark. I’ve tried all possible solutions. These were: All 16 addresses 0x0 to 0xF in the program changed, with some addresses the error ”Duplicate Modbus found” appears. Pin 16/17 changed to pin 1/3. 120 ohm resistor soldered in, here only error messages like "CRC Check failed”. Then the same mass / earth on the board as well as on the display of the pump. Tried 3 out of 5 boards. Flow control pin 5 removed from the program, boards have automatic flow control. Cable type changed. Now I’ve given up because I don’t have a new approach anymore. Maybe something else in the program that I don’t see? I added the personalized YAML. Does somebody has any idea?

Thanks in advance, Volker

substitutions:
  devicename: heatpump
  description: Heatpump Controller
  entity_prefix: Heatpump

globals:
  - id: unmasked_value_water_temperature_t1s
    type: int
    restore_value: no
    initial_value: '0'
  - id: unmasked_curve_selection
    type: int
    restore_value: no
    initial_value: '0'

esphome:
  name: "${devicename}"
  comment: "${description}"
  friendly_name: "${description}"

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:
  level: INFO
  baud_rate: 0

# Enable Home Assistant API
api:
  encryption:
   key: "U6usp04Lr2zFM6KOn044EyMSp5+UxLPjHSqrTza3TJo="
    
web_server:
  port: 80

ota:
  password: "4838b17608a38073aa52fabd0888f579"
  
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "${devicename}"
    password: "zHZ2Ur5uDMVz"

captive_portal:

uart:
  id: mod_bus
  tx_pin: 1
  rx_pin: 3
  baud_rate: 9600
  stop_bits: 1

modbus:
   id: heatpump_modbus

modbus_controller:
  - id: "${devicename}"
    ## the Modbus device addr
    address: 0xF
    modbus_id: heatpump_modbus
    setup_priority: -10
    update_interval: 10s

sensor:

As a last chance, I would like to access Mosibi’s board

Hi @volkerni ,

I have no idea what’s exactly wrong with your setup, also because I don’t see how you exactly are using the boards you mentioned. The board we (son and I) created is ready, we are creating documentation that we want to sent with it, but I can send it without that documentation if you want. Just send me a message, so we can talk about the possibilities.

For other readers, I have a stock of 4 boards now.

Hello Mosibi,
first of all thanks for the answer. I would also like to take a board without documentation. Unfortunately I can’t send you a private message as a new member. You are welcome to send me an email (volkerni1atgmailcom) in which we can clarify everything else. Thank you, Volker

@exciton sorry but that did not happen to me. I have a duct unit and an wired remote. I can not reproduce the scenario on my setup. Everything is in Celsius on my side.

@bwiggins I am using the ready-made SLWF-01pro (v1.1) with default config (they come pre-flashed):

esphome:
  name: air-conditioner
  platform: ESP8266
  board: esp12e
  name_add_mac_suffix: true

wifi:

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "AC-wifi"
    password: "slwf01pro"

captive_portal:

# Enable logging
logger:
  baud_rate: 0

# Enable Home Assistant API
api:

ota:

uart:
  tx_pin: 1
  rx_pin: 3
  baud_rate: 9600
  
  
climate:
  - platform: midea
    name: Midea Climate         # Use a unique name.
    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 °C    # min: 17
      max_temperature: 30 °C    # max: 30
      temperature_step: 0.5 °C  # 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
    custom_fan_modes:
      - 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.
      - FREEZE_PROTECTION
    supported_swing_modes:
      - VERTICAL                # This capability is always used.
      - HORIZONTAL
      - BOTH
    outdoor_temperature:        # Optional. Outdoor temperature sensor (may display incorrect values after long inactivity).
      name: Temp
    power_usage:                # Optional. Power usage sensor (only for devices that support this feature).
      name: Power
    humidity_setpoint:          # Optional. Indoor humidity sensor (only for devices that support this feature).
      name: Humidity

web_server:
  port: 80
1 Like