home-assistant/core · error · UpdateFailed

No general channel configured

Error message

No general channel configured

What it means

UpdateFailed('No general channel configured') raised in the Amber Electric coordinator when the fetched intervals contain current prices but none are on the general usage channel (is_general matches zero entries). The integration requires a general channel because it drives the main price sensors.

Source

Thrown at homeassistant/components/amberelectric/coordinator.py:97

            "forecasts": {},
            "grid": {},
        }
        try:
            data = self._api.get_current_prices(
                self.site_id,
                next=288,
                _request_timeout=REQUEST_TIMEOUT,
            )
            intervals = [interval.actual_instance for interval in data]
        except ApiException as api_exception:
            raise UpdateFailed("Missing price data, skipping update") from api_exception

        current = [interval for interval in intervals if is_current(interval)]
        forecasts = [interval for interval in intervals if is_forecast(interval)]
        general = [interval for interval in current if is_general(interval)]

        if len(general) == 0:
            raise UpdateFailed("No general channel configured")

        result["current"]["general"] = general[0]
        result["descriptors"]["general"] = normalize_descriptor(general[0].descriptor)
        result["forecasts"]["general"] = [
            interval for interval in forecasts if is_general(interval)
        ]
        result["grid"]["renewables"] = round(general[0].renewables)
        result["grid"]["price_spike"] = general[0].spike_status.value
        tariff_information = general[0].tariff_information
        if tariff_information:
            result["grid"]["demand_window"] = tariff_information.demand_window

        controlled_load = [
            interval for interval in current if is_controlled_load(interval)
        ]
        if controlled_load:
            result["current"]["controlled_load"] = controlled_load[0]
            result["descriptors"]["controlled_load"] = normalize_descriptor(

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Verify in the Amber app that the site has a general/usage tariff channel active
  2. Reconfigure the integration and select the correct site_id
  3. Contact Amber if the general channel disappeared after a tariff change
  4. Wait and let the next poll succeed if the channel is temporarily absent in the API response
Defensive patterns

Strategy: validation

Validate before calling

general = [i for i in intervals if is_current(i) and is_general(i)]
if not general:
    _LOGGER.warning("No general channel on site %s; check tariff/site selection", site_id)
    return  # skip building sensors that require general prices

Try / catch

try:
    await coordinator.async_config_entry_first_refresh()
except UpdateFailed as err:
    if "No general channel" in str(err):
        _LOGGER.error("Wrong Amber site or tariff lacks a general channel; reconfigure")

Prevention

When it happens

Trigger: get_current_price returns data, but every current interval is for a controlled-load or feed-in channel only — i.e. the Amber site/tariff selected has no general/usage channel, or the wrong site_id was configured.

Common situations: User selected the wrong site (e.g. a solar export-only setup), a tariff change on Amber's side removed the general channel, or a brand-new account whose general channel is not yet active.

Related errors


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