Commit graph

775 commits

Author SHA1 Message Date
Julian Pawlowski
13b9870f45 fix(get_chartdata): use proper statistics.median for chart metadata
_calculate_metadata()'s inline calc_stats() computed the median as a
naive sorted(data)[len(data) // 2], which returns the upper-middle
value for even-length datasets instead of averaging the two middle
values. A full day is always an even interval count (96 quarter-hours
or 24 hours), so this silently overstated "median" and
"median_position" in nearly every price_stats block of the
get_chartdata response. The rest of the codebase already has a
correct calculate_median() in utils/average.py; this was an isolated
inline duplicate with the bug.

Impact: get_chartdata's price_stats.combined/dayN.median and
median_position now report the statistically correct median for
chart annotations and metadata-driven dashboards.
2026-07-04 18:23:25 +00:00
Julian Pawlowski
1b207f0db1 fix(services): correct min_distance_from_avg direction for negative prices
check_min_distance_from_avg() computed the distance threshold as
range_avg * (1 ± ratio). Tibber prices can go negative during grid
oversupply, and multiplying a negative range_avg directly flips the
intended direction: e.g. avg * 1.05 makes a negative average MORE
negative (i.e. cheaper), which is the wrong direction for a
"most expensive" threshold check, and analogously wrong for
"cheapest" checks.

Compute the threshold as range_avg ± abs(range_avg) * ratio instead,
matching the sign-safe normalization pattern already used for
min_distance_from_avg in the period system
(coordinator/period_handlers/level_filtering.py). Behavior for
positive averages (the common case) is unchanged.

Used by find_cheapest_block, find_cheapest_hours, and plan_charging.

Impact: min_distance_from_avg now correctly filters cheapest/most
expensive windows during negative-price periods instead of silently
accepting windows in the wrong direction relative to the search range
average.
2026-07-04 18:23:06 +00:00
Julian Pawlowski
95004efa2d fix(services): prevent power_profile truncation during relaxation
find_cheapest_block, find_cheapest_hours, and find_cheapest_schedule
accept an optional power_profile (fixed per-interval watt array
matching the requested duration/task length). When allow_relaxation
was enabled and no full-duration window could be found, the
duration-reduction relaxation phase silently reduced the interval
count without shrinking power_profile accordingly. Downstream code
(find_cheapest_contiguous_window, calculate_window_statistics,
_find_cheapest_window_in_pool) then truncated the profile from the
front to match, dropping trailing appliance-cycle phases and using
the wrong per-interval weights for both window selection and the
reported cost estimate.

Disable duration-reduction relaxation whenever a power_profile is
supplied (find_cheapest_schedule guards per-task via
any_task_has_power_profile); distance and level-filter relaxation
phases remain available since they don't affect interval count.

Impact: Services with a power_profile no longer silently pick a
shorter window with mismatched power weighting during relaxation;
they now correctly report no window found if the full duration isn't
available, preserving the accuracy of appliance-cycle cost estimates.
2026-07-04 18:22:44 +00:00
Julian Pawlowski
2ad225f26d test(services): add end-to-end regression test for must_finish_by fix
Add a real (non-mocked) end-to-end test exercising apply_must_finish_by
and resolve_search_range together with a range-filtering fake pool,
reproducing the exact scenario from GH #168: a naive must_finish_by
datetime combined with search_start_day_offset: 0. The underlying fix
already landed in db5d172 but had no test covering the full request
pipeline (only individual helpers were mocked in existing tests).

Release-Notes: skip
User-Impact: none
2026-07-04 18:21:58 +00:00
Julian Pawlowski
36e9cdf4b9 fix(find_cheapest_schedule): retry valid window start after time gaps
_find_cheapest_window_in_pool() scans for contiguous available blocks
when scheduling multiple tasks. When a block-in-progress hit a
temporal gap (e.g. from price-level filtering removing intervals from
the middle of the search range, or missing API data), the scanner
jumped to i = j + 1 instead of i = j, silently skipping the interval
right after the gap as a valid — sometimes cheaper — window start.

Distinguish 'unavailable slot' (correctly skipped via j + 1) from
'temporal gap' (must retry at j, since that slot was never actually
tested as a window start).

Impact: find_cheapest_schedule can now find the true cheapest window
for a task when the search range contains time gaps, instead of
occasionally picking a more expensive window right after such a gap.
2026-07-04 18:18:42 +00:00
Julian Pawlowski
b8e40bfa3b fix(services): prevent plan_charging overcharge from segment-constraint bridging
apply_segment_constraints could add far more grid energy than requested when
max_cycles_per_day or min_charge_duration_minutes forced bridging across
expensive gaps between cheap intervals. With max_cycles_per_day=1, isolated
cheap intervals were merged into one continuous segment by filling every gap
in between, without ever trimming the surplus back down, resulting in
achieved_soc_percent far above 100%.

Add a post-bridging trim step that removes segment-edge intervals (highest
price first) until total grid energy matches the requested target again,
while still respecting max_cycles_per_day/min_charge_duration_minutes and
never dropping below the target itself (fixed-power mode's expected
last-interval rounding overshoot is preserved).

A related edge case is also fixed: trimming could previously remove an
interval required to satisfy a must_reach_by deadline, silently flipping
deadline_met to False even though the overall energy target was still
reached. Deadline-critical intervals are now passed through as
protected_starts and are never removed during trimming.

Fixes #167

Impact: plan_charging no longer overcharges the battery/EV past the
requested target SoC when max_cycles_per_day or min_charge_duration_minutes
is set, and must_reach_by deadlines are honored even when those constraints
require bridging across expensive price gaps.
2026-07-04 17:43:04 +00:00
Julian Pawlowski
e94130953f
Merge pull request #166 from jpawlowski/dependabot/pip/ruff-gte-0.15.20-and-lt-0.16.0
Some checks failed
Deploy Docusaurus Documentation (Dual Sites) / Build and Deploy Documentation Sites (push) Has been cancelled
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
chore(deps): update ruff requirement from <0.16.0,>=0.15.16 to >=0.15.20,<0.16.0
2026-06-28 00:17:51 +02:00
Julian Pawlowski
7c87ab778f
Merge pull request #165 from jpawlowski/dependabot/github_actions/home-assistant/actions/hassfest-f4ca6f671bd429efb108c0f2fa0ae8af0215986c
chore(deps): bump home-assistant/actions/hassfest from d05c25388490cd662baef8495e1bc764c3386153 to f4ca6f671bd429efb108c0f2fa0ae8af0215986c
2026-06-28 00:17:28 +02:00
dependabot[bot]
0a9d2da1e2
chore(deps): bump home-assistant/actions/hassfest
Bumps [home-assistant/actions/hassfest](https://github.com/home-assistant/actions) from d05c25388490cd662baef8495e1bc764c3386153 to f4ca6f671bd429efb108c0f2fa0ae8af0215986c.
- [Release notes](https://github.com/home-assistant/actions/releases)
- [Commits](d05c253884...f4ca6f671b)

---
updated-dependencies:
- dependency-name: home-assistant/actions/hassfest
  dependency-version: f4ca6f671bd429efb108c0f2fa0ae8af0215986c
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-27 21:57:58 +00:00
Julian Pawlowski
5608d1b269
Merge pull request #161 from jpawlowski/dependabot/github_actions/actions/checkout-7
chore(deps): bump actions/checkout from 6 to 7
2026-06-27 23:56:06 +02:00
Julian Pawlowski
15ec975750
Merge pull request #160 from jpawlowski/dependabot/devcontainers/ghcr.io/devcontainers/features/node-2.1.0
chore(deps): bump ghcr.io/devcontainers/features/node from 2.0.0 to 2.1.0
2026-06-27 23:55:53 +02:00
dependabot[bot]
100fbbcb3b
chore(deps): update ruff requirement
Updates the requirements on [ruff](https://github.com/astral-sh/ruff) to permit the latest version.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.15.16...0.15.20)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.15.20
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-25 20:43:22 +00:00
dependabot[bot]
bf58137c43
chore(deps): bump actions/checkout from 6 to 7
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-18 20:42:59 +00:00
dependabot[bot]
006f00071a
chore(deps): bump ghcr.io/devcontainers/features/node
Bumps ghcr.io/devcontainers/features/node from 2.0.0 to 2.1.0.

---
updated-dependencies:
- dependency-name: ghcr.io/devcontainers/features/node
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-15 20:43:52 +00:00
Julian Pawlowski
f402581379
Merge pull request #157 from jpawlowski/dependabot/github_actions/home-assistant/actions-d05c25388490cd662baef8495e1bc764c3386153
Some checks failed
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
2026-06-10 07:58:53 +02:00
dependabot[bot]
b0165cf301
chore(deps): bump home-assistant/actions
Bumps [home-assistant/actions](https://github.com/home-assistant/actions) from 868e6cb4607727d764341a158d98872cd63fa658 to d05c25388490cd662baef8495e1bc764c3386153.
- [Release notes](https://github.com/home-assistant/actions/releases)
- [Commits](868e6cb460...d05c253884)

---
updated-dependencies:
- dependency-name: home-assistant/actions
  dependency-version: d05c25388490cd662baef8495e1bc764c3386153
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-09 20:43:05 +00:00
Julian Pawlowski
a370950708
Merge pull request #156 from jpawlowski/dependabot/npm_and_yarn/docs/developer/react-073a1f481f
Some checks failed
Deploy Docusaurus Documentation (Dual Sites) / Build and Deploy Documentation Sites (push) Has been cancelled
chore(deps): bump the react group in /docs/developer with 2 updates
2026-06-09 11:31:35 +02:00
Julian Pawlowski
301b4097e9
Merge pull request #155 from jpawlowski/dependabot/npm_and_yarn/docs/user/react-073a1f481f
chore(deps): bump the react group in /docs/user with 2 updates
2026-06-09 11:31:21 +02:00
dependabot[bot]
29e58c5ff6
chore(deps): bump the react group in /docs/developer with 2 updates
Bumps the react group in /docs/developer with 2 updates: [react](https://github.com/facebook/react/tree/HEAD/packages/react) and [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom).


Updates `react` from 19.2.6 to 19.2.7
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.7/packages/react)

Updates `react-dom` from 19.2.6 to 19.2.7
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.7/packages/react-dom)

---
updated-dependencies:
- dependency-name: react
  dependency-version: 19.2.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: react
- dependency-name: react-dom
  dependency-version: 19.2.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: react
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-05 20:44:05 +00:00
dependabot[bot]
8a78149869
chore(deps): bump the react group in /docs/user with 2 updates
Bumps the react group in /docs/user with 2 updates: [react](https://github.com/facebook/react/tree/HEAD/packages/react) and [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom).


Updates `react` from 19.2.6 to 19.2.7
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.7/packages/react)

Updates `react-dom` from 19.2.6 to 19.2.7
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.7/packages/react-dom)

---
updated-dependencies:
- dependency-name: react
  dependency-version: 19.2.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: react
- dependency-name: react-dom
  dependency-version: 19.2.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: react
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-05 20:43:55 +00:00
Julian Pawlowski
d9d2bb528e
Merge pull request #154 from jpawlowski:dependabot/pip/ruff-gte-0.15.16-and-lt-0.16.0
Some checks failed
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
chore(deps): update ruff requirement from <0.16.0,>=0.15.15 to >=0.15.16,<0.16.0
2026-06-05 15:40:12 +02:00
dependabot[bot]
87ac150818
chore(deps): update ruff requirement
Updates the requirements on [ruff](https://github.com/astral-sh/ruff) to permit the latest version.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.15.15...0.15.16)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.15.16
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 20:43:19 +00:00
dependabot[bot]
03e07a36a5
chore(deps): bump astral-sh/setup-uv from 8.1.0 to 8.2.0 (#153)
Some checks failed
Validate / HACS validation (push) Has been cancelled
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
2026-06-04 12:43:16 +02:00
Julian Pawlowski
330b167281 chore(scripts): set UV_PRERELEASE environment variable for formatting scripts
Some checks failed
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
Add UV_PRERELEASE=allow to the format, lint-check, and lint-fix scripts to enable pre-release features in Ruff.

Impact: Users can now utilize pre-release features during code formatting and linting processes.
2026-06-01 16:57:21 +00:00
Julian Pawlowski
e39d0be162 fix(translations): correct message formatting in multiple language files
Some checks are pending
Lint / Ruff (push) Waiting to run
Validate / Hassfest validation (push) Waiting to run
Validate / HACS validation (push) Waiting to run
Updated error messages in German, English, Norwegian, Dutch, and Swedish translations to remove unnecessary quotes around placeholders. This improves clarity and consistency in error reporting.

Impact: Users will see clearer error messages without quotes around variable placeholders.
2026-06-01 11:31:18 +00:00
Julian Pawlowski
bcbaf3a1cd chore(bootstrap): update Home Assistant version to 2026.4.4
Updated the default Home Assistant version in the bootstrap script and requirements file to ensure compatibility with the latest features and fixes.

Impact: Users will benefit from improved stability and new features available in Home Assistant 2026.4.4.
2026-06-01 11:22:45 +00:00
Julian Pawlowski
3a44bc8267 Merge branch 'main' of https://github.com/jpawlowski/hass.tibber_prices 2026-06-01 11:16:23 +00:00
Julian Pawlowski
5ea6e75295 refactor(services): change step value to 'any' for plan_charging fields
Updated the step value for number fields in the plan_charging service to allow any value instead of a fixed increment. This change enhances flexibility in user input.

Impact: Users can now specify any value within the defined range for charging plans.

---
refactor(translations): update error message formatting for entity attributes

Modified the error messages in multiple translation files to remove curly braces around entity attributes. This improves consistency in message formatting across languages.

Impact: Users will see cleaner error messages when attributes are not found.
2026-06-01 11:16:21 +00:00
WouterGithb
db5d172fb8
fix(services): preserve service call data through coordinator data fetch (#151)
* fix(services): preserve service call data through coordinator data fetch

In `_handle_find_block` and `_handle_find_hours`, the local `data`
variable holding the resolved service call data was rebound to the
coordinator data dict returned by `get_entry_and_data()`. As a result,
the subsequent calls to `validate_search_params(data)`,
`apply_must_finish_by(data, ...)` and `resolve_search_range(...)` read
search-range parameters from coordinator data instead of from the
service call, silently ignoring:

- must_finish_by
- search_scope
- search_start, search_end
- search_start_time, search_end_time
- search_start_day_offset, search_end_day_offset
- search_start_offset_minutes, search_end_offset_minutes
- include_current_interval

The functions fell back to the default range ("now → end of tomorrow")
for every call that depended on these parameters.

Rename the third return value of `get_entry_and_data()` to
`coordinator_data` so the service call `data` survives, restoring
deadline and search-scope semantics. `find_cheapest_schedule.py`
already uses `data_dict` for the same purpose and was not affected.

Verified locally against v0.31.0: a call with
`must_finish_by: 2026-06-01T20:00:00+02:00` now correctly produces
`search_end: 2026-06-01T20:00:00+02:00` (was end-of-tomorrow before).

* refactor(services): update data handling in find_cheapest_schedule service

Refactor the data retrieval process to use coordinator data instead of entry data for improved clarity and consistency.

Impact: Enhances maintainability of the service code without altering user-facing functionality.

---------

Co-authored-by: “WouterK” <kwaken.geringd0w@icloud.com”git config --global user.name “WouterK”git config --global user.email kwaken.geringd0w@icloud.com”>
Co-authored-by: Julian Pawlowski <jpawlowski@users.noreply.github.com>
2026-06-01 12:45:10 +02:00
Julian Pawlowski
6937068a7a chore(release): bump version to 0.32.0b1
Some checks failed
Deploy Docusaurus Documentation (Dual Sites) / Build and Deploy Documentation Sites (push) Has been cancelled
Lint / Ruff (push) Has been cancelled
Auto-Tag on Version Bump / Check and create version tag (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
2026-05-30 14:48:01 +00:00
Julian Pawlowski
b69be7e87a docs(actions): document success flag and outage-vs-no-data contract
Explain the top-level success flag and the price_data_unavailable reason for
get_price, find_cheapest_*, and plan_charging, and clarify that an empty
result with success=true (e.g. tomorrow's prices not yet published) is not an
error. Note that day-ahead prices usually arrive around 13:00 but can be
delayed into the afternoon or evening.

Impact: Automation authors can reliably tell a temporary API outage apart from
normally missing data.
2026-05-30 14:46:40 +00:00
Julian Pawlowski
ada4e33448 feat(coordinator): surface prolonged API outages and cache-fallback state
Track API failures over time in the repair manager and raise an api_outage
repair issue once fresh data has been missing for longer than two hours,
independent of the update interval. A genuine successful fetch clears it;
serving cached data as a fallback keeps the outage active. Expose the degraded
cache-fallback state via the connection binary sensor (using_cached_data,
last_successful_update) so users can tell when sensors run on locally cached
prices. Add the api_outage repair strings to all supported languages.

Impact: Users get a clear repair notice during prolonged Tibber outages and
can see when the integration is running on cached data.
2026-05-30 14:46:32 +00:00
Julian Pawlowski
feaf748cb6 feat(services): isolate price-fetch failures and add success flag to responses
Add a track_degraded parameter to IntervalPool.get_intervals so service calls
(track_degraded=False) never flip the coordinator's sensor-health flags or use
the covers-current-interval cache fallback; authentication errors still
propagate. All price-fetching services now go through
async_fetch_service_intervals and return a structured response with a
top-level success flag: success=false with reason="price_data_unavailable" on
a real API outage, and success=true (possibly empty) otherwise.

Impact: Action calls (get_price, find_cheapest_*, plan_charging) always return
the expected shape, never impair sensors during a Tibber outage, and let
automations distinguish an outage from "no data yet".
2026-05-30 14:46:23 +00:00
Julian Pawlowski
8da3083fb2 fix(api): accept priceInfoRange-only responses and retry transient empty data
Some markets/accounts (e.g. NL hourly) return an empty
priceInfo(QUARTER_HOURLY).today while priceInfoRange still delivers the full
set of intervals. _check_price_info_empty required today's data and wrongly
classified such complete responses as empty, which blocked setup. It now
treats a response as valid when today OR yesterday data is present, since
priceInfoRange is the authoritative source the interval pool uses.

Additionally, "Empty data received" is now retried a few times with
exponential backoff, smoothing brief Tibber outages that transiently return
empty data within a single update cycle. Long outages are still absorbed by
the IntervalPool cache fallback, so the in-request retry count stays small.

Reported in #141.

Impact: Setup and updates no longer fail with "Empty data received" for NL
hourly accounts (and similar), and short Tibber blips are smoothed over.
2026-05-30 14:46:13 +00:00
github-actions[bot]
a4a1243a36 docs: add version snapshot v0.31.0 and cleanup old versions [skip ci] 2026-05-30 13:07:40 +00:00
Julian Pawlowski
b28d30f3fb chore(release): bump version to 0.31.0 2026-05-30 13:05:45 +00:00
Julian Pawlowski
a27d04d1c8 Merge branch 'main' of https://github.com/jpawlowski/hass.tibber_prices 2026-05-30 13:05:09 +00:00
Julian Pawlowski
d45fe0b14c docs(sensor-reference): update translations for price phase sensors
Updated the translations for various price phase sensors in the sensor reference documentation to ensure consistency and accuracy across multiple languages.

Impact: Users will see improved clarity in the documentation for price phase sensors in their preferred language.
2026-05-30 13:04:55 +00:00
Julian Pawlowski
6ec3318941 docs(actions): mark scheduling actions and plan_charging as experimental
Add warnings to indicate that scheduling actions and the plan_charging action are experimental and subject to change. This informs users to use them with caution and report any issues.

Impact: Users are aware of the experimental nature of these features, promoting careful usage.
2026-05-30 12:41:48 +00:00
github-actions[bot]
f7bb6dbfe8 chore(release): sync manifest.json with tag v0.31.0b2 2026-05-30 12:33:40 +00:00
Julian Pawlowski
82a5290fe7 chore(deps): update dependency versions and add update script for Home Assistant
Updated the pytest-homeassistant-custom-component version to match the Home Assistant versioning scheme. Added a script to automate the update process for Home Assistant versions across the development environment.

Impact: Developers can now easily update Home Assistant versions and corresponding dependencies with a single command.
2026-05-30 12:19:04 +00:00
dependabot[bot]
f215bdb248
chore(deps): update pytest-homeassistant-custom-component requirement (#149)
Updates the requirements on [pytest-homeassistant-custom-component](https://github.com/MatthewFlamm/pytest-homeassistant-custom-component) to permit the latest version.
- [Release notes](https://github.com/MatthewFlamm/pytest-homeassistant-custom-component/releases)
- [Changelog](https://github.com/MatthewFlamm/pytest-homeassistant-custom-component/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MatthewFlamm/pytest-homeassistant-custom-component/compare/0.13.326...0.13.334)

---
updated-dependencies:
- dependency-name: pytest-homeassistant-custom-component
  dependency-version: 0.13.334
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-30 13:46:01 +02:00
dependabot[bot]
e713e69b38
chore(deps): update ruff requirement (#150)
Some checks are pending
Lint / Ruff (push) Waiting to run
Validate / HACS validation (push) Waiting to run
Validate / Hassfest validation (push) Waiting to run
Updates the requirements on [ruff](https://github.com/astral-sh/ruff) to permit the latest version.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.15.12...0.15.15)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.15.15
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-30 13:06:46 +02:00
dependabot[bot]
d4c93d2592
chore(deps): update pytest-asyncio requirement from >=1.3.0 to >=1.4.0 (#148)
Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v1.3.0...v1.4.0)

---
updated-dependencies:
- dependency-name: pytest-asyncio
  dependency-version: 1.4.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-30 13:06:10 +02:00
dependabot[bot]
963132c186
chore(deps): bump home-assistant/actions (#147)
Bumps [home-assistant/actions](https://github.com/home-assistant/actions) from f6f29a7ee3fa0eccadf3620a7b9ee00ab54ec03b to 868e6cb4607727d764341a158d98872cd63fa658.
- [Release notes](https://github.com/home-assistant/actions/releases)
- [Commits](f6f29a7ee3...868e6cb460)

---
updated-dependencies:
- dependency-name: home-assistant/actions
  dependency-version: 868e6cb4607727d764341a158d98872cd63fa658
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-30 13:05:29 +02:00
dependabot[bot]
ec2b29e814
chore(deps): bump the react group in /docs/developer with 2 updates (#138)
Some checks failed
Deploy Docusaurus Documentation (Dual Sites) / Build and Deploy Documentation Sites (push) Has been cancelled
2026-05-08 23:20:58 +02:00
dependabot[bot]
ab5bf92729
chore(deps): bump the react group in /docs/user with 2 updates (#137) 2026-05-08 23:20:48 +02:00
Julian Pawlowski
0df089cc11 chore(release): bump version to 0.31.0b4
Some checks failed
Auto-Tag on Version Bump / Check and create version tag (push) Has been cancelled
Deploy Docusaurus Documentation (Dual Sites) / Build and Deploy Documentation Sites (push) Has been cancelled
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
2026-05-03 22:19:02 +00:00
Julian Pawlowski
1f74451adf chore(blueprints): disable automatic blueprint installation
Blueprints are kept in the repository for development but are not yet
ready for distribution. Commented out the install and remove calls in
async_setup and async_remove_entry so they are not copied to the user's
HA config directory on integration setup.

Release-Notes: skip
User-Impact: none
2026-05-03 22:17:02 +00:00
Julian Pawlowski
c2ff9cd2f2 fix(blueprints): fix home_connect_alt service call and correct sensor description
Two fixes in all 4 home_connect_alt blueprints:

1. home_connect_alt.start_program uses its own `device_id` field (not HA's
   standard target mechanism) and `program_key` (not `program`). The
   previous `target: entity_id:` was silently ignored, causing the service
   call to fail due to missing required `device_id`. Fixed by:
   - Removing `target: entity_id:` block
   - Adding `data.device_id: "{{ device_id(program_entity) }}"`
   - Renaming `program:` to `program_key:`
   - Adding `| int` filter to numeric option values

2. Same remote_start_sensor description fix as the non-alt variants
   (RemoteControlActive → RemoteControlStartAllowed).

Also reset blueprint version from v2.0.0 to v1.0.0.

Release-Notes: skip
Released-Bug: no
2026-05-03 22:16:56 +00:00