home-assistant/core · error · UpdateFailed
Station '{config_entry.title}' did not report any data
Error message
Station '{config_entry.title}' did not report any data What it means
Raised as UpdateFailed when get_device_details succeeds but the response dict contains no 'lastData' key (API_LAST_DATA is None). The Ambient API returned a station record with no measurements, so the coordinator has no sensor data to publish. This is a data-shape problem, not a transport problem: the station exists but reported nothing.
Source
Thrown at homeassistant/components/ambient_network/coordinator.py:57
update_interval=SCAN_INTERVAL,
)
self.api = api
@override
async def _async_update_data(self) -> dict[str, Any]:
"""Fetch the latest data from the Ambient Network."""
try:
response = await self.api.get_device_details(
self.config_entry.data[CONF_MAC]
)
except RequestError as ex:
raise UpdateFailed("Cannot connect to Ambient Network") from ex
self.station_name = get_station_name(response)
if (last_data := response.get(API_LAST_DATA)) is None:
raise UpdateFailed(
f"Station '{self.config_entry.title}' did not report any data"
)
# Some stations do not report a "created_at" or "dateutc".
# See https://github.com/home-assistant/core/issues/116917
if (ts := last_data.get("created_at")) is not None or (
ts := last_data.get("dateutc")
) is not None:
self.last_measured = datetime.fromtimestamp(
ts / 1000, tz=dt_util.DEFAULT_TIME_ZONE
)
return cast(dict[str, Any], last_data)
View on GitHub (pinned to 58a3fdb3ea)
Solutions
- Confirm the station shows live data in the Ambient Weather app/portal for the same account.
- Verify the MAC address in the config entry matches the physical station.
- If the station is new, wait for it to post its first readings; the coordinator retries automatically.
- If persistent, re-create the config entry via the discovery/config flow.
Defensive patterns
Strategy: validation
Validate before calling
response = await api.get_device_details(mac)
if not isinstance(response, dict) or response.get('lastData') is None:
# station has no data yet; skip refresh instead of raising
return self.data Type guard
def has_last_data(response: dict[str, Any]) -> bool:
return isinstance(response, dict) and response.get('lastData') is not None Try / catch
Catch UpdateFailed and inspect whether prior refreshes succeeded; a first-run failure on a new station is expected until the station posts data.
Prevention
- Confirm the station streams to the Ambient cloud before adding the config entry.
- Double-check the MAC address during config flow.
- For brand-new stations, expect one or two failed refreshes until first data arrives.
When it happens
Trigger: The Ambient API response for the configured MAC lacks the lastData field entirely, or it is null. Happens for newly registered stations that have not yet pushed their first reading, or stations that went offline and were purged from the cloud.
Common situations: Station not yet provisioned/synced on the Ambient cloud, a typo'd or stale MAC address in the config entry pointing at a phantom device, or a temporary API glitch returning a partial record.
Related errors
- Cannot connect to Ambient Network
- Unable find multi-factor auth module: {mfa_module_id}
- {error}
- {error}
- Error communicating with API: {err}
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/071691f8c6bec3eb.
Report an issue: GitHub.