2020-03-11 16:36:56 +00:00
# esphome-mitsubishiheatpump
ESPHome Climate Component for Mitsubishi Heatpumps using direct serial connection
2020-03-11 17:22:35 +00:00
Wirelessly control your Mitsubishi Comfort HeatPump with an ESP8266 or ESP32 using the [ESPHome ](https://esphome.io ) framework.
## Features
* Instant feedback of command changes via RF Remote to HomeAssistant or MQTT.
* Direct control without the remote.
* Uses the [SwiCago/HeatPump ](https://github.com/SwiCago/HeatPump ) Arduino libary to talk to the unit directly via the internal J105 header.
* NOTE: REQUIRES SEVERAL FIXES - SEE https://github.com/SwiCago/HeatPump/pull/155
2020-03-11 22:32:49 +00:00
## Supported Microcontrollers
This library should work on most ESP8266 or ESP32 platforms. It has been tested with the following:
* Generic ESP-01S board (ESP8266)
* WeMos D1 Mini (ESP8266)
* Generic ESP32 Dev Kit (ESP32)
## Supported Mitsubishi Climate Units
The underlying HeatPump library works with a number of Mitsubishi HeatPump units. Basically, if the unit has a J105 header on the main board, it should work with this library.
The whole integration with this libary and the underlying HeatPump has been
tested by the author on the following units:
* MSZ-GL06NA
* MFZ-KA09NA
2020-03-11 17:22:35 +00:00
## Usage
### Build a control circuit as detailed in the SwiCago/HeatPump README.
2020-03-11 22:32:49 +00:00
You can use either an ESP8266 or an ESP32 for this.
2020-03-11 17:22:35 +00:00
2020-03-11 22:05:47 +00:00
### Clone this repository into your ESPHome configuration directory
This repository needs to live in your ESPHome configuration directory, as it doesn't work correctly when used as a Platform.IO library, and there doesn't seem to be an analog for that functionality for esphome code.
On Hass.IO, you'll want to do something like:
* Change directories to your esphome configuration directory.
* `mkdir -p src`
* `cd src`
* `git clone https://github.com/geoffdavis/esphome-mitsubishiheatpump.git`
2020-03-11 17:22:35 +00:00
### Configure your ESPHome device with YAML
Note: this component DOES NOT use the ESPHome `uart` component, as it requires
direct access to a hardware UART via the Arduino `HardwareSerial` class. The
Mitsubishi Heatpump uses an untypical serial port setting, which are not
implemented in any of the existing software serial libraries.
There's currently no way to guarantee access to a hardware UART nor retrieve
the `HardwareSerial` handle within the ESPHome framework.
Create an ESPHome YAML configuration with the following sections:
* `esphome: libraries:`
* `climate:` - set up a custom climate, change the Serial port as needed.
2020-03-11 22:05:47 +00:00
* ESP8266 only: `logger: baud\_rate: 0` - disables serial port logging on the
sole ESP8266 hardware UART
2020-03-11 17:22:35 +00:00
```yaml
esphome:
2020-03-11 22:32:49 +00:00
name: denheatpump
platform: ESP8266
board: esp01_1m
# Boards tested: ESP-01S (ESP8266), Wemos D1 Mini (ESP8266); ESP32 Wifi-DevKit2
2020-03-11 17:22:35 +00:00
libraries:
2020-03-11 22:32:49 +00:00
#- SwiCago/HeatPump
- https://github.com/geoffdavis/HeatPump#init_fix
2020-03-11 22:05:47 +00:00
includes:
2020-03-11 22:32:49 +00:00
- src/esphome-mitsubishiheatpump
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Denheatpump Fallback Hotspot"
password: !secret fallback_password
captive_portal:
2020-03-11 17:22:35 +00:00
# Enable logging
logger:
2020-03-11 22:05:47 +00:00
# ESP8266 only - disable serial port logging, as the HeatPump component
# needs the sole hardware UART on the ESP8266
baud_rate: 0
2020-03-11 17:22:35 +00:00
2020-03-11 22:32:49 +00:00
# Enable Home Assistant API
api:
ota:
# Enable Web server.
web_server:
port: 80
# Sync time with Home Assistant.
time:
- platform: homeassistant
id: homeassistant_time
# Text sensors with general information.
text_sensor:
# Expose ESPHome version as sensor.
- platform: version
name: denheatpump ESPHome Version
# Expose WiFi information as sensors.
- platform: wifi_info
ip_address:
name: denheatpump IP
ssid:
name: denheatpump SSID
bssid:
name: denheatpump BSSID
# Sensors with general information.
sensor:
# Uptime sensor.
- platform: uptime
name: denheatpump Uptime
# WiFi Signal sensor.
- platform: wifi_signal
name: denheatpump WiFi Signal
update_interval: 60s
2020-03-11 17:22:35 +00:00
climate:
- platform: custom
2020-03-11 22:05:47 +00:00
# ESP32 only - change & Serial to & Serial1 or & Serial2 and remove the
# logging:baud_rate above to allow the built-in UART0 to function for
# logging.
2020-03-11 17:22:35 +00:00
lambda: |-
auto my_heatpump = new MitsubishiHeatPump(&Serial);
App.register_component(my_heatpump);
return {my_heatpump};
climates:
2020-03-11 22:32:49 +00:00
- name: "Den Heat Pump"
2020-03-11 17:22:35 +00:00
```
2020-03-11 22:32:49 +00:00
# See Also
The [gysmo38/mitsubishi2MQTT ](https://github.com/gysmo38/mitsubishi2MQTT )
Arduino sketch also uses the `SwiCago/HeatPump`
library, and works with MQTT directly. I found it's WiFi stack to not be
particularly robust, but the controls worked fine. Like this ESPHome
repository, it will automatically register the device in your HomeAssistant
instance if you have HA configured to do so.
There's also the built-in to ESPHome [Mitsubishi]
(https://github.com/esphome/esphome/blob/dev/esphome/components/mitsubishi/mitsubishi.h)
climate component. It's only in the `dev` branch at the moment (2020-03-11).
The big drawback with the built-in component is that it uses Infrared Remote
commands to talk to the Heat Pump. By contrast, the approach used by this
repository and it's underlying `HeatPump` library allows bi-directional
communication with the Mitsubishi system, and can detect when someone changes
the settings via an IR remote.