home-assistant/core · warning · HomeAssistantError

Mode can't be changed on slave zone {self.entity_id}

Error message

Mode can't be changed on slave zone {self.entity_id}

What it means

Same master/slave guard as the local integration, but for Airzone Cloud: AirzoneZoneClimate.async_set_hvac_mode raises HomeAssistantError when a non-master zone is asked to change mode. The power parameter (API_POWER true) is still sent first, then the error is raised — so the zone powers on but keeps the master's mode.

Source

Thrown at homeassistant/components/airzone_cloud/climate.py:529

            }
        else:
            mode = HVAC_MODE_HASS_TO_LIB[hvac_mode]
            cur_mode = self.get_airzone_value(AZD_MODE)
            if hvac_mode != HVAC_MODE_LIB_TO_HASS[cur_mode]:
                if self.get_airzone_value(AZD_MASTER):
                    params[API_MODE] = {
                        API_VALUE: mode.value,
                    }
                else:
                    slave_raise = True
            params[API_POWER] = {
                API_VALUE: True,
            }

        await self._async_update_params(params)

        if slave_raise:
            raise HomeAssistantError(
                f"Mode can't be changed on slave zone {self.entity_id}"
            )

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Set hvac_mode only on the master zone; slave zones follow.
  2. Use set_temperature on slave zones to control their comfort individually.
  3. Filter entities by the master/slave attribute in automations before calling set_hvac_mode.
  4. Catch HomeAssistantError when broadcasting intentionally.

Example fix

# before
- service: climate.set_hvac_mode
  target:
    area_id: downstairs
  data: {hvac_mode: 'cool'}

# after
- service: climate.set_hvac_mode
  target:
    entity_id: climate.downstairs_master
  data: {hvac_mode: 'cool'}
Defensive patterns

Strategy: validation

Validate before calling

if entity.get_airzone_value(AZD_MASTER):
    await entity.async_set_hvac_mode(HVACMode.COOL)

Type guard

def is_master_zone(entity) -> bool:
    return bool(entity.get_airzone_value(AZD_MASTER))

Try / catch

try:
    await entity.async_set_hvac_mode(mode)
except HomeAssistantError as err:
    if "slave zone" not in str(err):
        raise

Prevention

When it happens

Trigger: climate.set_hvac_mode on an Airzone Cloud zone whose AZD_MASTER is false and whose current mode (mapped via HVAC_MODE_LIB_TO_HASS) differs from the requested one. Note the comparison is on the HASS-mode mapping of the current value, not the raw library mode.

Common situations: Cloud setups where users group all zone climates in one dashboard card and apply a mode to all; automation broadcasting mode changes; assuming per-zone autonomy in a shared-system group.

Related errors


AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14). Data as JSON: /api/errors/332bc9d0b7bebeca. Report an issue: GitHub.