Home Assistant custom integration for MELCloud Home.
More reliable outdoor temperature readings. Heat pump (ATW) outdoor temperature could get stuck at an incorrect value with no way to tell it was wrong - it's now read from the same source as the MELCloud Home app's Reports → Comfort graph. Air conditioning (ATA) outdoor temperature could occasionally fail to update because of an error from the MELCloud API; it's now more reliable, at the cost of showing "unknown" a bit sooner for units left idle for more than 2 days.
Faster startup. Your devices and entities now appear as soon as Home Assistant starts rather than waiting for the first readings to be fetched from MELCloud, which could take around a minute on installs with several devices. Energy and temperature sensors may briefly show "unknown" after a restart until their first value arrives.
You can now see how old a temperature reading is. Heat pump flow and return temperature sensors gained a "last reading" timestamp, showing when the unit actually recorded the value. MELCloud's readings for these can be hours old, and previously a sensor that had stopped updating looked identical to one that was current. One consequence: an automation triggering on any state change of these sensors will fire more often, because the timestamp updates even when the temperature does not.
Fewer sensors that never worked. Heat pumps no longer get Zone 2, Zone 1 or Boiler flow and return temperature sensors unless the hardware is actually there - MELCloud reported those as real values when they were not. Up to seven sensors per single-zone heat pump will show as unavailable after upgrading and can be deleted.
See CHANGELOG.md for full history.
- Full climate control (power, temperature, modes, fan speeds, vane directions)
- Energy monitoring with Home Assistant Energy Dashboard support
- Sensors (room temperature, outdoor temperature*, WiFi signal, connection status)
- Real-time updates via WebSocket push, plus 60-second polling (30-minute for outdoor temperature)
*Always created; reads unknown on units that don't report an outdoor temperature
- Zone 1 & Zone 2 climate control with preset modes (Room/Flow/Curve) - Zone 2 auto-detected
- DHW tank control via water heater platform
- System power switch
- Multiple sensors (temperatures, operation status, 6 telemetry sensors)
- Energy monitoring* (consumed, produced, COP - Energy Dashboard compatible)
- Cooling mode* (Cool Room/Cool Flow presets)
- Real-time updates via WebSocket push
*Auto-detected from device capabilities - see docs/entities.md for details
- Home Assistant 2025.8.0 or newer
- MELCloud Home account with configured devices
- Internet connection for cloud API access
This integration supports Mitsubishi Electric air conditioning units connected via MELCloud Home WiFi adapters (MAC-5xx series).
Supported systems: Wall-mounted splits, ducted systems, and console units tested and working.
Note: If your system uses the classic MELCloud app (not MELCloud Home), use the official Home Assistant MELCloud integration instead.
For complete hardware compatibility including specific models, WiFi adapters, and technical notes, see SUPPORTED_DEVICES.md.
- Status: Production-ready (tested on real hardware)
- Supported systems: Mitsubishi Electric Ecodan heat pumps with FTC controllers
- Core features: Zone 1 & Zone 2 heating, DHW control, 3-way valve systems, telemetry sensors, energy monitoring*
- Optional features: Cooling mode (capability-based), energy monitoring (capability-based)
*Feature availability auto-detected from device capabilities
For tested controller models and capability details, see SUPPORTED_DEVICES.md.
Or manually: open HACS, search for "MELCloud Home", click "Download", and restart Home Assistant.
- Download the latest release from GitHub
- Extract the
melcloudhomefolder to yourcustom_componentsdirectory - Restart Home Assistant
Or manually: Settings → Devices & Services → Add Integration → search "MELCloud Home"
Enter your MELCloud Home credentials (email and password). Your devices will be automatically discovered and added.
Changes made with the remote control, the MELCloud Home app, or a schedule appear in Home Assistant within seconds — no more waiting for the next poll.
It's on by default and there's nothing to set up. If the connection ever drops, the integration automatically falls back to regular 60-second polling, so your devices keep working either way.
To turn it off: Settings → Devices & Services → MELCloud Home → Configure → switch off "Real-time updates".
The "Real-time updates" sensor (under the MELCloud Home service device, Diagnostic section) shows whether the live connection is currently active.
This integration uses UUID-based entity IDs to ensure automations never break when device names change. Entity IDs follow the format {domain}.melcloudhome_{short_id}_{entity_name} where short_id is derived from the device UUID.
Device names are set to friendly names from your MELCloud Home account (e.g., "Living Room").
climate.living_room_climate), breaking automations. To preserve IDs, delete and re-add the integration instead.
See docs/entities.md for complete entity ID reference.
The integration creates the following entities for each device:
Air-to-Air (ATA) Systems:
- Climate control (HVAC modes, temperature, fan speeds, swing)
- Sensors (room temperature, outdoor temperature, WiFi signal, energy consumption)
- Binary sensors (error state, connection status)
Air-to-Water (ATW) Heat Pumps:
- Climate control (Zone 1 & Zone 2 heating/cooling with preset modes)
- Water heater (DHW tank control)
- System power switch
- Sensors (temperatures, operation status, telemetry, WiFi signal, energy*)
- Binary sensors (error state, connection status, forced DHW active)
*Energy monitoring auto-detected from device capabilities
Complete entity reference: See docs/entities.md for detailed entity IDs, control options, and configuration examples.
- Check Home Assistant logs for errors
- Verify your MELCloud Home credentials
- Ensure devices are configured in the MELCloud Home app
- Check your internet connection
- Verify MELCloud Home service is accessible
- Review the integration logs for API errors
If changes made with the remote or MELCloud app take up to a minute to show in Home Assistant, real-time updates may not be connected:
- Check the logs for
WebSocket connected/WebSocket connection lostmessages - Verify the toggle is on: Settings → Devices & Services → MELCloud Home → Configure
- Updates still arrive via 60-second polling even when the WebSocket is down
- Some devices may not report energy data
- Check if device shows energy consumption in the MELCloud Home app
- Energy sensors require 30 minutes for initial data
- Go to Settings → Devices & Services
- Find "MELCloud Home" integration
- Click the three dots and select "Download diagnostics"
- Share the file when reporting issues
The integration uses conservative polling intervals to respect API limits:
- Climate/Sensors: 60 seconds
- Energy Data: 30 minutes
- Outdoor Temperature: 30 minutes
These intervals balance update frequency with API rate limits. Real-time updates don't add polling load — the WebSocket is a single long-lived connection, and it only triggers an extra state refresh when a device actually changes.
Test Coverage:
- Integration tests: Climate control, sensors, config flow, diagnostics
- API tests: Authentication, device control, data parsing
- Quality gates: All PRs require passing tests and coverage checks
Documentation:
- Architecture Overview - Visual system architecture with mermaid diagrams
- Testing Best Practices - Development setup and testing guidelines
- Architecture Decision Records - Key architectural decisions
- Issues: GitHub Issues
- Documentation: GitHub Repository
This project is licensed under the MIT License - see the LICENSE file for details.
This is an unofficial integration and is not affiliated with, endorsed by, or connected to Mitsubishi Electric or MELCloud. Use at your own risk.
Developed by Andrew Blake (@andrew-blake)
Contributors:
- @mrdjtoto - real-time updates: WebSocket protocol investigation, captures, and implementation (#174-#176)