This is a set of components to read out and control Mitsubishi Ecodan heatpumps. I have an ERST20D-VM2D and it is also confirmed to work with EHSD20D-YM9D. It probably works for many air-water heatpumps with CN105 connector.
It is highly inspired by https://github.com/BartGijsbers/CN105Gateway.
Info about the hardware can be found at https://github.com/SwiCago/HeatPump. I used the following:
# Your Wi-Fi SSID and password
wifi_ssid: "MySSID"
wifi_password: "MyWiFiPassword"
heatpump_ota_password: "a248d5bc6dae01010101670250c1aadadac1"
heatpump_encryption_key: "pgdlhjfgkasdhfgeury3874iuygjg748gjhgfds32="
If you have an USB-to-ESP device, it should be possible to install directly from ESPHome.
Select Plug into this computer and in the next step, Open ESPHome Web
Make sure your ESP is connected via USB to the computer where you opened the browser (it does not have to be on the HomeAssistant server) and click CONNECT
You should see a list of COM ports (If you do not, you probably need to install an updated FTDI driver)
Select the port with the ESP connected and click Connect
In the next step you should see an option like below, Select Prepare for first time use
Power-cycle your ESP and return to the ESPHome Web UI, your Heatpump device should now say ONLINE in the upper right corner.
It is auto-detected by HomeAssistant so just open Settings / Devices & Services and it will appear
Configure and add the ESPHome node to Home Assistant and it will appear as a Device.
Now we need to connect it to the Ecodan Heatpump for the values will populate
Cutting the cable to fit takes a few attempts. Luckily, the link above gets you 10 cables so don't worry if you happen to break one!
I recommend to cut the black cable off completely so you do not accidentally connect 12V to the ESP
The cable should look something like this when trimmed dow to fit the socket for the CN105 port (if you have a Wi-Fi dongle connected you may need to remove that from the port and connect the ESP-device in its place)
Note that this didn't work for me, I have an external Mitsubishi control panel connected. Maybe it only works when there's no external panel connected.
It is possible to use an external temperature sensor to tell the heat pump what the room temperature is, rather than relying on its internal temperature sensor. You can do this by calling setRemoteTemperature(float temp)
on the ecodan
object in a lambda. Note that you can call setRemoteTemperature(0)
to switch back to the internal temperature sensor.
There are several ways you could make use of this functionality. One is to use a sensor automation:
ecodan:
id: ecodan_instance
uart_id: ecodan_uart
sensor:
# You could use a Bluetooth temperature sensor
- platform: atc_mithermometer
mac_address: "XX:XX:XX:XX:XX:XX"
temperature:
name: "Lounge temperature"
on_value:
then:
- lambda: 'id(ecodan_instance).set_remote_temperature(x);'
# Or you could use a HomeAssistant sensor
- platform: homeassistant
name: "Temperature Sensor From Home Assistant"
entity_id: sensor.temperature_sensor
on_value:
then:
- lambda: 'id(ecodan_instance).set_remote_temperature(x);'
Alternatively you could define a service that HomeAssistant can call:
api:
services:
- service: set_remote_temperature
variables:
temperature: float
then:
- lambda: 'id(ecodan_instance).set_remote_temperature(temperature);'
- service: use_internal_temperature
then:
- lambda: 'id(ecodan_instance).set_remote_temperature(0);'
Inspired by https://github.com/geoffdavis/esphome-mitsubishiheatpump#remote-temperature.
Let me know if there is anything you are missing or if you have improvement ideas.
Join the discussions on Gitter