home-assistant/core · error · HomeAssistantError

set_schedule_failed

set_schedule_failed

Error message

Failed to set hot water schedule: {error}

What it means

HomeAssistantError raised when `client.set_hot_water_schedule(dhw_schedule)` raises BSBLANError while applying a validated weekly schedule. Translation key `set_schedule_failed` embeds the underlying error string via the `error` placeholder. Validation has already succeeded at this point, so this is purely a device-communication or device-rejection failure.

Source

Thrown at homeassistant/components/bsblan/services.py:199

        translation_placeholders={"device_name": _device_name(device_entry)},
    )


async def set_hot_water_schedule(service_call: ServiceCall) -> None:
    """Set hot water heating schedule."""
    entry, device_entry = _resolve_config_entry(service_call)
    _ensure_water_heater_device(device_entry)
    client = entry.runtime_data.client

    days = _build_weekly_schedule_days(service_call)
    dhw_schedule = DHWSchedule(**days)

    LOGGER.debug("Setting hot water schedule: %s", dhw_schedule)

    try:
        await client.set_hot_water_schedule(dhw_schedule)
    except BSBLANError as err:
        raise HomeAssistantError(
            translation_domain=DOMAIN,
            translation_key="set_schedule_failed",
            translation_placeholders={"error": str(err)},
        ) from err

    # Refresh the slow coordinator to get the updated schedule
    await entry.runtime_data.slow_coordinator.async_request_refresh()


async def async_sync_time(service_call: ServiceCall) -> None:
    """Synchronize BSB-LAN device time with Home Assistant."""
    entry, device_entry = _resolve_config_entry(service_call)
    client = entry.runtime_data.client
    await async_sync_device_time(
        client, device_entry.name or service_call.data[ATTR_DEVICE_ID]
    )

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Confirm the device is online and state entities update, then retry the action.
  2. Verify the boiler actually supports a DHW schedule via the BSB-LAN web UI (try setting a schedule manually there).
  3. Update BSB-LAN firmware and Home Assistant so schedule payload formats match.
  4. Check debug logs for the embedded `error` string, which carries the library-level reason.
Defensive patterns

Strategy: try-catch

Try / catch

try:
    await client.set_hot_water_schedule(dhw_schedule)
except BSBLANError as err:
    raise HomeAssistantError(
        translation_domain=DOMAIN, translation_key="set_schedule_failed",
        translation_placeholders={"error": str(err)},
    ) from err

Prevention

When it happens

Trigger: Calling `bsblan.set_hot_water_schedule` against an unreachable device, or when the device rejects the schedule payload (e.g. DHW schedule parameters not supported by the boiler's type/brand, or bus busy).

Common situations: Boiler models without DHW timer support; transient connectivity loss between validation and write; firmware that requires a different parameter format for DHW schedules.

Related errors


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