Local, cloud-free control of Mitsubishi Electric heat pumps and air conditioners through their MELCloud Wi-Fi adapter (MAC-5xxIF-E family). No MELCloud account, no internet connection: Home Assistant talks to the adapter directly on your LAN.
Note: This is an independent interoperability project, not affiliated with or endorsed by Mitsubishi Electric. The adapter's local API is undocumented; see Credits for the open-source work it builds on.
- Network Scan: Finds MELCloud adapters on one or more networks (CIDR); every unit found becomes its own device, the others show up under Discovered
- Manual Setup: Add an adapter by IP address
- Automatic Unit Detection: Recognises Ecodan air-to-water heat pumps and air-to-air air conditioners
- IP Changes Handled: Devices are identified by MAC address; re-scanning updates the stored IP
- Local Control: Climate, hot water, switches and selects work entirely over the LAN
- Cloud Friendly: The adapter keeps working with the MELCloud app; MELocal never changes its cloud setting
- Energy Dashboard Ready: Cumulative energy counters are
total_increasing - Clock Watchdog: Raises a Repairs warning when the Ecodan controller clock drifts from Home Assistant's time (e.g. a missed daylight-saving change) and clears it once fixed
- Translations: English and Italian
| Unit | Reading | Control |
|---|---|---|
| Ecodan air-to-water heat pump (FTC controller) | ✅ | ✅ |
| Air-to-air air conditioner | ✅ | ✅ |
- Open HACS in Home Assistant
- Go to Integrations
- Click the three dots in the top right corner
- Select "Custom repositories"
- Add this repository URL:
https://github.com/itsjustdeepred/melocal - Select category: "Integration"
- Click "Add"
- Find "MELocal" in the HACS integrations list
- Click "Download"
- Restart Home Assistant
- Go to Settings → Devices & Services → Add Integration
- Search for "MELocal" and follow the setup wizard
- Download or clone this repository
- Copy the
custom_components/melocalfolder to your Home Assistantcustom_componentsdirectory - Restart Home Assistant
- Go to Settings → Devices & Services → Add Integration
- Search for "MELocal" and follow the setup wizard
Home Assistant must reach the adapters on TCP port 80. If the adapters live on a separate IoT VLAN, allow traffic from Home Assistant to the adapters on port 80 in your firewall.
-
Add Integration:
- Go to Settings → Devices & Services → Add Integration
- Search for "MELocal"
- Choose Scan the network or Enter an IP address
-
Scan the Network:
- The networks Home Assistant is on are pre-filled
- Add other networks as CIDR, comma separated (e.g.
10.0.20.0/24); up to 4096 addresses in total - Pick the unit to add now; the remaining ones appear under Discovered and can be added with one click
-
Enter an IP Address:
- Type the adapter's IP address
- If the unit is already configured, its stored IP is updated instead
To change the polling interval (default 30 s, minimum 10 s):
- Go to Settings → Devices & Services
- Find your MELocal device
- Click on it, then click "Configure"
| Platform | Entities |
|---|---|
water_heater |
Hot water: target temperature, Normal / Eco mode, holiday mode as away mode |
climate |
Zone 1: heat / cool, room or flow target temperature |
select |
Zone 1 control: room temperature, flow temperature, compensation curve |
switch |
Forced hot water, system power |
sensor |
Outside, flow, return, zone, hot water tank, boiler, mixing tank and refrigerant temperatures; targets; operation and zone modes; compressor frequency; flow rate; energy consumed (total); last-day consumed / delivered energy and COP / EER; estimated electrical power; calculated thermal power; fault code; controller clock and clock offset |
binary_sensor |
Power, compressor, defrost, booster and immersion heaters, water pumps, 3-way valves, thermostat inputs, forced hot water, holiday, prohibit flags, clock out of sync |
Zone 2 entities are created only when the controller's DIP switches report two zones.
Estimated electrical power: the Ecodan only reports a cumulative counter in 0.1 kWh steps, so electrical power is the average between steps (a moving average, not an instantaneous reading). Thermal power is calculated from flow rate × ΔT.
| Platform | Entities |
|---|---|
climate |
Power, mode (auto / heat / cool / dry / fan), target temperature, fan speed, vertical and horizontal vanes |
sensor |
Room and target temperature, instantaneous power (W), energy consumed (total), compressor frequency, operating hours, mode, fan, vanes, error code |
binary_sensor |
Power, operating, power saving, i-See sensor |
Every Ecodan command repeats the unit's current values and flags only the field being changed, so nothing else moves. After a command the entity updates immediately and the state is re-read a few seconds later.
Verified on real units: air conditioner power / mode / target temperature, Ecodan hot water target, Normal / Eco, forced hot water and zone 1 flow target. The remaining Ecodan commands (holiday, zone mode change, system power) follow the published protocol notes but have been tested less.
- Check that Home Assistant can reach the adapter on TCP port 80 (firewall / VLAN rules)
- Scan the network the adapter is on, not only the one Home Assistant is on
- Try adding the adapter by IP address
- The adapter's Wi-Fi signal may be weak; check the Wi-Fi signal diagnostic sensor
- Increase the polling interval in the options if the adapter is slow to answer
The Ecodan controller clock cannot be set through the local API (no documented command exists). Set the date and time from the unit's main remote controller: Menu → Initial settings → Date/Time.
- Home Assistant 2025.2.0 or later
- A Mitsubishi Electric unit with a MELCloud Wi-Fi adapter reachable on the LAN
- No extra Python packages
MELocal stands on the reverse-engineering work of the open-source community. Thank you to:
- gekkekoe/esphome-ecodan-hp (GPL-3.0): Ecodan CN105 decoding and set commands; the Ecodan decoder is a Python port of its logic
- F1p/Mitsubishi-CN105-Protocol-Decode and F1p/Mitsubishi-Ecodan-Bridge-CN105 (GPL-3.0): the CN105 protocol documentation for Ecodan and MELCloud traffic
- pymitsubishi/pymitsubishi (MIT): the MELCloud adapter's local
/smartAPI, its encryption, air conditioner decoding and command packets, and the verified Ecodan setpoint packet - SwiCago/HeatPump (GPL-3.0): the original CN105 air conditioner protocol reverse engineering
Reverse engineering for interoperability is permitted by Art. 6 of Directive 2009/24/EC. MELCloud and Ecodan are trademarks of Mitsubishi Electric Corporation.
For issues, feature requests, or contributions, please visit the GitHub repository.
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
If you find this integration useful, please consider giving it a ⭐ on GitHub!
Made with ❤️ for the Home Assistant community