ESP Haier: Haier Air Conditioner + ESP Home + Wemos D1 mini

I see HASSIO is now not on rpi, but n2+ Home Assistant Blue! - Home Assistant … still is there some way to do esphome to tuya bridge? BT, MQTT? … I dunno, for me tuya just works, so it would be easiest. Sorry for bit of offtopic here.

You are a little confused.

You can use HA in Raspberry (2, 3, 4…), N2, regular computer… Installation - Home Assistant

The problem is that you want use Tuya system, but Tuya can’t connect to others systems. Tuya only accept tuya devices.

Home Assistant can connect to “everything”, tuya devices, esphome, mqtt…

You can use a tuya device in Home Assistant, but not vice versa.

I have one console unit working with a WemosD1. The other 3 units have a standard ESP32. Maybe it’s possible to change this with a WemosD1?

I don’t know :frowning:

I’m gonna look for a JST connector and try it out.


This is the chip inside the Haier!

@Knol010, i have the same esp32 in my unit. I have tried to connect Wemos without success. I will try Albeta version today and let you know.

@MiguelAngelLV Is there any way to sniff communication between new ESP32 and AC unit and include suuport in your version?

1 Like

@snoffy from ESPHome Logs you can see the data received from AC.

The problem is that AC works by “poll”, so, if the Esp don’t sent the correct poll, the AC don’t send response.

The only way to get the correct poll is sniff the data from original Haier module

@MiguelAngelLV now it is working using your code. I make mistake by not using baud_rate in yaml. But there is another problem - using ESP there is always purify mode turned on. The same problem occurs in albeta version. Is there any way to permanently disable purify or fresh mode?

The code receives the status from AC, modify and send again to AC.

Maybe, the purifier mode is on in te received status and, when I return to AC, is enable.

You can see the log data from AC. Turn on from remote, copy the bytes to txt, enable purier and compare the bytes to localize the purifier mode and adapt the code.

Repeat again from ESP to see the diferences.

Maybe, you have a special byte or distinct modes codecs

Yes, codes are different:

From ESP:

[12:23:16][D][Haier:152]: Readed message: 255 255 42 64 0 0 0 0 0 2 109 1 7 8 37 0 2 3 0 6 0 12 49 0 88 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 177 246 22

The same settings from remote without purify turned on:

[12:23:26][D][Haier:152]: Readed message: 255 255 42 64 0 0 0 0 0 2 109 1 7 2 37 0 2 1 0 0 0 0 49 0 88 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 20 67

I thing this byte is purify mode:

255 255 42 64 0 0 0 0 0 2 109 1 7 8 37 0 2 3 0 6 0 12 49 0 88 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 177 246 22

The 12 in the 23 position (22 with 0 index) is the unknown mode.

In my code, the modes are 0, 1, 2, 3 or 4, but you get a 12… Are you sure that these frame is from ESP command?

Sorry, it was my mistake - i have make to many compliation, and this log was from albeta version. It looks like your version is still not working with my unit. If you need i can sniff my unit.

1 Like

I just got an Haier Tundra plus with the e32 module as well. Tried both the haier.h versions (original and fork) without any luck… Are there any updates on this? Sadly I’m not advanced enough to work on the code/parsing itself, but I might be able to provide some information.

thanks!

Show you USB - Esp connection and the ESPHome logs

hi @MiguelAngelLV .
Thanks for your reply!

I’ve connected the ESP according to your instructions & already tried switching TX & RX, that didn’t change anything.
Here are some logs you might be interested in:

[15:09:53][D][Haier:128]: POLL: 255 255 10 64 0 0 0 0 0 1 77 1 153 179 180
[15:09:58][D][Haier:128]: POLL: 255 255 10 64 0 0 0 0 0 1 77 1 153 179 180
[15:10:03][D][Haier:128]: POLL: 255 255 10 64 0 0 0 0 0 1 77 1 153 179 180
[15:10:08][D][Haier:128]: POLL: 255 255 10 64 0 0 0 0 0 1 77 1 153 179 180
[15:10:11][D][climate:009]: ‘airco-zolder’ - Setting
[15:10:11][D][climate:013]: Mode: COOL
[15:10:11][D][Control:202]: Control call
[15:10:11][D][Control:208]: *call.get_mode() = 2
[15:10:11][D][Haier:278]: Sended message: 255 255 12 64 0 0 0 0 0 1 93 1 0 1 172 189 251 - CRC: AC - CRC16: BDFB
[15:10:12][D][Haier:278]: Sended message: 255 255 20 64 0 0 0 0 0 1 96 1 0 8 37 0 2 3 0 6 0 12 250 36 160 - CRC: FA - CRC16: 24A0
[15:10:12][D][climate:369]: ‘airco-zolder’ - Sending state:
[15:10:12][D][climate:372]: Mode: COOL
[15:10:12][D][climate:392]: Current Temperature: nan°C
[15:10:12][D][climate:398]: Target Temperature: 22.00°C
[15:10:13][D][Haier:128]: POLL: 255 255 10 64 0 0 0 0 0 1 77 1 153 179 180
[15:10:18][D][Haier:128]: POLL: 255 255 10 64 0 0 0 0 0 1 77 1 153 179 180
[15:10:21][D][climate:009]: ‘airco-zolder’ - Setting
[15:10:21][D][climate:013]: Mode: OFF
[15:10:21][D][Control:202]: Control call
[15:10:21][D][Control:208]: *call.get_mode() = 0
[15:10:21][D][Haier:278]: Sended message: 255 255 12 64 0 0 0 0 0 1 93 1 0 0 171 125 58 - CRC: AB - CRC16: 7D3A
[15:10:21][D][climate:369]: ‘airco-zolder’ - Sending state:
[15:10:21][D][climate:372]: Mode: OFF
[15:10:21][D][climate:392]: Current Temperature: nan°C
[15:10:21][D][climate:398]: Target Temperature: 22.00°C
[15:10:23][D][Haier:128]: POLL: 255 255 10 64 0 0 0 0 0 1 77 1 153 179 180
[15:10:28][D][Haier:128]: POLL: 255 255 10 64 0 0 0 0 0 1 77 1 153 179 180

The POLL doesn’t seem to change when I give a command, I’m assuming the AC isn’t able to recognize it?

I think you don’t received response messages… Maybe the GPIO’s there aren’t valid for you ESP32 board or your AC use other protocol.

I have the same module. I assume the right course of action would be to try and sniff the communication between the original ESP32 module and the conditioner, force a poll and send a few commands through the HON app to see what happens?

With module? ESP board or Haier module?

I use a Wemos D1 board based in ESP8266 (not 32).

I have the original ESP32-for-Haier module on my AC, I haven’t yet tried connecting any other “homemade” versions. I can connect a logic analyzer and provide logs if it’ll help in finding out how the original module communicates with the AC.