home-assistant/core · error · HomeAssistantError

set_data_error

set_data_error

Error message

An error occurred while sending the data to the BSB-LAN device

What it means

Raised by the bsblan climate entity when `client.thermostat(**data, circuit=...)` raises any BSBLANError while applying a new HVAC mode, preset, or setpoint. It is wrapped in HomeAssistantError with translation key `set_data_error`, so the action call fails visibly in the UI/logbook while the coordinator is left to re-sync from the device.

Source

Thrown at homeassistant/components/bsblan/climate.py:213

    async def async_set_data(self, **kwargs: Any) -> None:
        """Set device settings using BSBLAN."""
        data: dict[str, Any] = {}
        if ATTR_TEMPERATURE in kwargs:
            data[ATTR_TARGET_TEMPERATURE] = kwargs[ATTR_TEMPERATURE]
        if ATTR_HVAC_MODE in kwargs:
            data[ATTR_HVAC_MODE] = HA_TO_BSBLAN_HVAC_MODE[kwargs[ATTR_HVAC_MODE]]
        if ATTR_PRESET_MODE in kwargs:
            # eco preset uses BSB-LAN mode 2, none preset uses mode 1 (auto)
            if kwargs[ATTR_PRESET_MODE] == PRESET_ECO:
                data[ATTR_HVAC_MODE] = 2
            elif kwargs[ATTR_PRESET_MODE] == PRESET_NONE:
                data[ATTR_HVAC_MODE] = 1

        try:
            await self.coordinator.client.thermostat(**data, circuit=self._circuit)
        except BSBLANError as err:
            raise HomeAssistantError(
                translation_domain=DOMAIN,
                translation_key="set_data_error",
            ) from err
        await self.coordinator.async_request_refresh()

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Retry the action once the entity's state data is updating normally (check for coordinator update errors first).
  2. Verify the target value is within the min/max shown on the entity card.
  3. If persistent, test the same parameter write via the BSB-LAN web UI to isolate integration vs device.
  4. Check integration logs with debug enabled for the underlying BSBLANError message.
Defensive patterns

Strategy: try-catch

Try / catch

try:
    await coordinator.client.thermostat(**data, circuit=circuit)
except BSBLANError as err:
    raise HomeAssistantError(translation_domain=DOMAIN, translation_key="set_data_error") from err

Prevention

When it happens

Trigger: Calling `climate.set_hvac_mode`, `climate.set_preset_mode`, or `climate.set_temperature` on a bsblan climate entity when the write to the device fails — connection dropped, auth rejected mid-session, or the device rejected the parameter value for the given circuit.

Common situations: Device briefly unreachable when the action fires; writing a setpoint outside the boiler's allowed range; serial bus busy with polling so the write times out and surfaces as BSBLANError.

Related errors


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