First let me mention that while I have put Hisense in the title of this post, I make no guarantees that this will work with any Hisense unit without modifying the code. In fact, I strongly suspect that the reply message structure would need to be modified to work with a Hisense unit. Luckily there are several examples of the Hisense compatible message structure in the references included in the readme file.
Backstory:
I purchased a AirCon International 18000BTU mini split for my garage in July of 2022. When I purchased it on amazon it said it was Wi-Fi compatible. After receiving the unit I found out that the only officially supported method of interfacing with the unit was a glorified IR blaster (yuck!) I had a lot of projects come up so I didn’t try and hack this thing until just a few weeks ago.
I’ve been successful at interfacing with the AC (mostly) and I’ve got it integrated in my HA setup now through ESPHome. This integration is still a little rough around the edges, but it works fully for controlling the AC and displays status info with only the occasional error. Most of those errors are related to less important things like outdoor unit temps, compressor speed, etc. It seems like some of the display errors may come from the unit itself reporting bad info.
As I mentioned, my unit is branded and distributed by Air-Con International I found when integrating with this AC that the protocol differs slightly from what others have posted about Hisense units. Notably there are extra bytes in the header of received messages, and the bit endianness is different for status items in the messages.
Hardware:
I’m using an ESP-12F (8266) with a serial to 485 adapter board and a generic adjustable DC-DC converter. I’ll assume that if you’re even thinking of replicating my results you’re well capable of finding the necessary components on Amazon. Given how cheap PCBs are these days I may just spin a ESP-12F carrier board that can plug directly into the AC connector.
The pinout of the connector is:
-
(Black wire) GND
-
B-
-
A+
-
(Red wire) +5V
YAML config to-do / needs improvement:
-
The way I’ve integrated several of the extraneous parameters as sensors is probably not the preferred method (though it does work).
-
The filtering I’ve put on several of the sensor values is a hack to try and get rid of erroneous values. It doesn’t work. A bgetter solution would be to get rid of the erroneous values in the first place.
C++ code to-do / needs improvement:
-
Generate command messages rather than storing each command as an array.
-
Improve reply handling to process all types of messages. The header tells what kind of reply message has been sent, and how long it is (supposedly).
-
Make reply processing asynchronous? A lot of time is spent spin waiting. Replies come a long time after the request is sent (~150ms ) right now the code waits before even checking for a reply.
-
Handle power usage message. It would be interesting to see the power draw from the unit in real time. That said, I’m not sure the Hisense unit even supports that feature. Every time I requested the message I got the same reply back.
-
Add configuration item to support switching between Hisense packet mode and “AirCon” packet mode.
I probably forgot some details, so if there are any questions feel free to reply here and I’ll respond when I’m able to.