Reads and writes data (e.g. power, mode, fan status etc.) from/to a Mitsubishi Heavy Industries (MHI) air conditioner (AC) via SPI controlled by MQTT. The AC is the SPI master and the ESP8266 is the SPI slave.
For use of the program you have to connect your ESP8266 (I use a LOLIN(WEMOS) D1 R2 & mini with 80 MHz) via a cable connector to your air conditioner. This has to be a split device (separated indoor and outdoor unit). I assume that all AC units of the type "SRK xx ZS-S" / "SRC xx ZS-S" are supported. I use the indoor unit SRK 35 ZS-S and the outdoor unit SRC 35 ZS-S. Users reported that additionally the following models are supported:
- SRF xx ZJX-S1
- SRF xx ZMX-S
- SRF xx ZMXA-S
- SRF xx ZF-W
- SRK xx ZJ-S
- SRK xx ZM-S
- SRK xx ZJX-S
- SRK xx ZJX-S1
- SRK xx ZRA-W / DXK xx ZRA-W
- SRK xx ZSA-W / DXK xx ZSA-W
- SRK xx ZSPR-S
- SRK xx ZSX-S
- SRK xx ZSX-W
- SRK xx ZS-W
- SRK xx ZS-WF
- [SRC 35Z SA-W]
Unsupported models:
If you find out that also other models are supported that are not listed here, please give feedback so that I can expand the list. In general, please recheck if your AC has a CNS connector before you spend time and money to build the hardware.
The ESP8266 is powered from the AC via DC-DC (12V -> 5V) converter. The ESP8266 SPI signals SCL (SPI clock), MOSI (Master Out Slave In) and MISO (Master In Slave Out) are connected via a voltage level shifter 5V <-> 3.3V with the AC. Direct connection of the signals without a level shifter could damage your ESP8266! More details are described in Hardware.md.
The program uses the following libraries
⚠️ MQTT client library - please don't use v2.8.0! (because of this issue). Better use v2.7.0:warning:- ArduinoOTA (might be removed in future)
and optionally you need for the use of an external temperature sensor DS18x20 the libraries
Please check the GitHub pages to see how to install them (usually via tools -> libraries).
Create a sub-directory "MHI-AC-Ctrl" and copy the files from the latest release src directory in your MHI-AC-Ctrl sub-directory. You could also use the recently updated version in the src folder but with the risk that it is more unstable. The stability of the program is better when you compile it for a CPU frequency of 160MHz. The configuration options are described in SW-Configuration.md.
In a previous version (see here) I used the Hardware-SPI of the ESP8266. But since the SPI documentation of ESP8266 is poor, I decided to switch to a Software based SPI. This Software based SPI is reliable and the performance of the ESP8266 is sufficient for this use case. In case of problems please check the Troubleshooting guide.
If you are interested to have a deeper look on the SPI protocol or want to trace the SPI signals, please check MHI-AC-Trace. But this is not needed for the standard user of MHI-AC-Ctrl.
This project is licensed under the MIT License - see the LICENSE.md file for details
The coding of the SPI protocol of the AC is a nightmare. Without rjdekker's MHI2MQTT I had no chance to understand the protocol! Unfortunately rjdekker is no longer active on GitHub. He used an Arduino plus an ESP8266 for his project. Also thank you very much on the authors and contributors of MQTT client, ArduinoOTA, OneWire and DallasTemperature libraries.
Last but not least thank you for the implementation of MHI-AC-Ctrl in different environments (FHEM, Tasmota, Home Assistant etc.)