---
title: "First on wins: a coordinator for our Mitsubishi heads"
description: "Nine heads share two outdoor units where the first one on sets the mode, and a room-by-room coordinator in Home Assistant stopped the fight."
url: "https://michael.zazon.us/notes/first-on-wins-a-coordinator-for-our-mitsubishi-heads"
published: "2026-10-23T12:00:00-04:00"
kind: "build-log"
subject: "home-automation"
tags: ["home-assistant","heat-pumps"]
series: "CN105"
part: 6
---
Every spring and fall somebody's room would stop heating because another head on that compressor was cooling, and you'd only find out by walking around. I have nine Mitsubishi heads on two outdoor units (five on East, four on West) and they're always fighting. This fall I wanted Home Assistant to be able to resolve that, prioritizing bedrooms at night.

This is because of the "first on wins" behavior I talked about in [part 1](https://michael.zazon.us/notes/nine-mitsubishi-mini-splits-in-home-assistant-for-15-per-head) (along with the heads' [CN105 firmware](https://github.com/echavet/MitsubishiCN105ESPHome)). The first head to be powered on determines the heat/cool mode for all heads on that outdoor unit. The [MXZ multi-zone manual](https://genscocustomer.com/pages/product-resources/catalog/MXZ_Multizone_Tech_Manual.pdf) says "the unit selected last goes into standby mode." This is especially bad in the fall when you might want heat in one room and cool in another on the same day.

The only HACS project I could find was [ha-mxz-coordinator](https://github.com/dkpnw/ha-mxz-coordinator), which I studied closely before building my own. It requires exclusive write access to the heads, has no time-of-day awareness (so no bedroom night priority), and parks idle heads in fan mode. Mitsubishi considers fan to be cooling, so a parked head can prevent a room from getting heat. I decided to borrow some ideas but not install it, as Mitsubishi's own Kumo Cloud changeover groups were a better spec to copy.

Version one ranked rooms, and the protected sleeping room kept its unit's mode even if it was already comfortable. Its design review called that the first-on-wins pattern we fight every day, now on purpose. Shadow mode (log what I'd do, don't touch the heads) caught a real conflict within two days: one morning the Master Bedroom asked to cool and idled at 75 to 78 °F for half an hour while a kid's room held the East unit in heat. It answered the oldest question.. "Will a blocked head ever signal that it's waiting?".. with "No, it just idles, nothing in the data says it's waiting."

I did the redesign with AI agents on this build, but I approved the new spec before any run. Each room/zone has one thermostat, holds to ±2 °F of its setpoint, and the coordinator picks heat/cool per head so outdoor units never fight. A room in range claims nothing, so a comfortable room no longer ties up the compressor. The band is ±2 because a head will overshoot its setpoint by about 1.5 °F on its own.

On the first shadow night of the new version, at about 3 a.m., the living room was at 64 °F and wanting heat, while the dining room was at 74 and wanting cool, and they were on different outdoor units. I made First Floor a single zone, so its average temperature picks heat/cool. The Master Suite spans both units: the bedroom head is on East, the closet head on West. The closet head is a backup on the other compressor.. it engages if the bedroom head is parked or the room lags far behind, and kicks in sooner at night.

[Diagram: A coordinator above two outdoor units picking one mode each, with zones spanning both](https://michael.zazon.us/notes/first-on-wins-a-coordinator-for-our-mitsubishi-heads)

Manual override is always possible: if you select Heat or Cool on the remote or app, that choice wins for 2 hours; same if you make the change on a head itself. After that, the room reverts to Auto. The W100s from [part 3](https://michael.zazon.us/notes/a-doorway-thermostat-for-our-mitsubishi-heads) control the room thermostats, not the heads.

I brought both units online on October 10, before the W100 buttons started working again after [they went deaf](https://michael.zazon.us/notes/our-aqara-w100s-went-deaf-exactly-24-hours-after-pairing). That was intentional: the room thermostats and the app are the real controls, the buttons are a convenience and could catch up. Since then, we haven't had to override anything on a head, and nobody needed to bypass the room thermostats.

Nobody walks around turning heads off anymore. We set a number per room and leave it at that. The Climate tab in [our home app](https://michael.zazon.us/notes/a-home-super-app-for-the-house-and-the-homelab) writes the same room thermostats. Next up is adding the boiler and radiators as backup heat for the cold months.