Releases: LuckyTriple7/ha-beach-weather
Release list
v1.1.0
Changed
Entity IDs are left to the entity registry. Every entity used to assign its own entity_id in the constructor (sensor.water_temperature_platja_de_muro). Home Assistant treats that as a suggestion rather than ownership, but it takes over what _attr_has_entity_name = True is meant to derive, so it is gone.
Locations added from this version on get the shape Home Assistant derives from the device and entity name:
sensor.platja_de_muro_water_temperature |
instead of sensor.water_temperature_platja_de_muro |
button.platja_de_muro_update_now |
instead of button.update_now_platja_de_muro |
weather.platja_de_muro |
unchanged |
Nothing changes for locations you already have. The registry never rewrites an entity ID it already holds, so dashboards, automations and history keep working untouched. Only newly added locations use the new shape.
The Lovelace card resolves entities through their registry translation_key from v0.2.0 on, so it handles both shapes — and, unlike before, entities you have renamed yourself. Update the card alongside this release.
v1.0.0
Breaking
The Lovelace card now lives in its own repository, ha-beach-weather-card, and has to be installed separately (HACS → Dashboard → Beach Weather Card).
Up to 0.24.0 the card shipped inside this integration, which registered a Lovelace resource for it under /beach_weather_static/. Writing the user's shared lovelace_resources store from a config entry is not an integration's job — HACS does that as the package manager, visibly and with an uninstall path, which is where the card belongs.
Existing dashboards keep working unchanged: same custom:beach-weather-card type, same config format, same entity IDs. Only a custom background_image pointing at a /beach_weather_static/... URL has to be repointed.
The minimum Home Assistant version is now declared as 2024.12.0. The previously declared 2024.1.0 was never accurate: lovelace.const.LOVELACE_DATA only exists from 2025.2, the resource_mode attribute read in 0.24.0 only from 2026.2, StaticPathConfig from 2024.7, and the implicit OptionsFlow.config_entry from 2024.12. Dropping the card removed the first two constraints, so the real floor is now the options-flow one.
Upgrading
- Update this integration
- Install Beach Weather Card from HACS → Dashboard
- Reload the browser
Added
- A one-time cleanup on start removes the Lovelace resource earlier versions registered under
/beach_weather_static/. Without it, updating would leave a resource pointing at a path nothing serves any more, which Lovelace retries on every dashboard render. Nothing else in the resource store is touched, and the integration never writes to it again
Changed
- The download no longer carries the card and its seven photos — about 1.8 MB less
- Diagnostics also redact the location name and its slug, and redact the raw coordinator payload (which echoes the requested coordinates) rather than passing it through unfiltered
Fixed
- README: HTTP 503 backs off for 30 seconds, not the 5 minutes documented — the value has been 30s since 0.22.1 but only the changelog said so
v0.24.0
Fixed
- The card showed "Custom element doesn't exist" in Firefox (and any other browser Home Assistant doesn't classify as "modern"), while working fine in Chrome. The card was published with
frontend.add_extra_js_url(), which Home Assistant renders into the index page as<script>if (isModern) { import("<url>"); }</script>—isModernbeing a user-agent regex plus a feature check. Where that check rejects, the import never runs and the card silently never registers. It is now registered as a normal Lovelace resource (Settings → Dashboards → Resources) instead, the same mechanism every HACS-installed card uses, which Lovelace loads regardless of that check. YAML resource mode still falls back to the old behaviour, since resources can't be managed programmatically there - The background photo was only drawn across part of the card in the Home Assistant companion app on iPhone. It is now a real
<img>layer withobject-fit: coverinstead of a CSSbackground-image— iOS WebKit painted the CSS background against the card's height from beforeaspect-ratioresolved and never repainted it - Switching Advanced → Language in the card editor threw a
TypeError(called a_render()method that doesn't exist) and left the editor broken until the dashboard was reopened
v0.23.0
Added
- The card's language can be set explicitly: Advanced → Language in the editor, or
language: de/language: enin YAML.auto(the default, and the previous behaviour) keeps following the Home Assistant user language
Changed
- Language detection also considers
hass.locale.languagebefore falling back tohass.language
After updating, restart Home Assistant and hard-refresh the browser so the new card script is loaded.
v0.22.1
Fixed
- 503 (Open-Meteo temporarily overloaded) now backs off only 30s instead of the 300s default — it's a transient condition, not a rate-limit lockout like 403/429, so retries (including a manual "Update Now" press) shouldn't be blocked nearly as long
v0.22.0
Changed
- Both Open-Meteo coordinators (marine, forecast) now reuse Home Assistant's shared aiohttp session instead of each opening its own — same fix applied upstream to the Strato DynDNS integration after review feedback from a HA core maintainer
geo.pyandcoordinator.pyno longer depend on the externalasync_timeoutpackage (unused, replaced by builtinasyncio.timeout)
v0.21.1
Fixed
- Dashboards with many locations (e.g. 20 cards) became sluggish, especially while editing — every card's day/night and weather-condition lookups scanned the entire HA entity registry on every hass update. Now cached per entity-registry reference (stable across normal state updates).
v0.21.0
Added
- New background preset Automatic (weather) — picks a bundled photo from the location's live weather condition (sunny / partly cloudy / cloudy / rainy), falling back to the night photo after dark regardless of condition, same as "Automatic (day/night)"
Fixed
- Card editor's Advanced section (and drag-in-progress state) collapsed/reset on every field edit instead of only on first load
v0.20.0
Added
- 5 new Marine API sensors, no extra request needed (same current/hourly call already made): sensor.wind_wave_height, sensor.wind_wave_direction, sensor.wind_wave_period (local wind-driven chop, separate from swell), sensor.ocean_current_velocity, sensor.ocean_current_direction — each with the same 48h forecast attribute as the other Marine sensors
v0.19.1
Changed
- Each location's first data fetch no longer blocks Home Assistant startup — with 20+ locations sharing the global rate limiter (min. 3s between any two requests), waiting for every location's first refresh before startup could finish could add minutes to boot. Entities now come up as "unavailable" and populate in the background as their turn in the queue comes up; the regular polling cycle still retries on failure the same as before