Skip to content

Fix is_closed state for DynamicGarageDoor in Overkiz#170052

Merged
zweckj merged 7 commits into
home-assistant:devfrom
iMicknl:fix/overkiz-dynamic-garage-door-169971
May 8, 2026
Merged

Fix is_closed state for DynamicGarageDoor in Overkiz#170052
zweckj merged 7 commits into
home-assistant:devfrom
iMicknl:fix/overkiz-dynamic-garage-door-169971

Conversation

@iMicknl
Copy link
Copy Markdown
Member

@iMicknl iMicknl commented May 7, 2026

Proposed change

The #141330 refactor caused unintended side effects for various GarageDoor devices. State has been fixed and fixtures have been added.

Fixes #169971

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Deprecation (breaking change to happen in the future)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

  • This PR fixes or closes issue: fixes #
  • This PR is related to issue:
  • Link to documentation pull request:
  • Link to developer documentation pull request:
  • Link to frontend pull request:

Checklist

  • I understand the code I am submitting and can explain how it works.
  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • I have followed the perfect PR recommendations
  • The code has been formatted using Ruff (ruff format homeassistant tests)
  • Tests have been added to verify that the new code works.
  • Any generated code has been carefully reviewed for correctness and compliance with project standards.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • For the updated dependencies a diff between library versions and ideally a link to the changelog/release notes is added to the PR description.

To help with the load of incoming pull requests:

iMicknl added 4 commits May 7, 2026 15:23
The UIClass.GARAGE_DOOR default used core:OpenClosedUnknownState which
is only reported by PositionableGarageDoor devices. Other garage doors
like DynamicGarageDoor report core:OpenClosedState instead, resulting
in is_closed always being None after the entity description migration.

Move the PositionableGarageDoor-specific behavior (OpenClosedUnknownState
and position support) to a UIWidget override, and change the UIClass
default to use core:OpenClosedState.

Fixes home-assistant#169971
- Add ogp:GarageDoor fixture (Somfy Connectivity Kit protocol variant)
- Add OGP variant to snapshot and service action tests
- Remove redundant test_dynamic_garage_door_state_updates test
- Revert unrelated unicode encoding changes in fixture file
SNAPSHOT_FIXTURES should have one entry per unique fixture file since
snapshot_platform captures all entities from the loaded setup file.
Having GARAGE, DYNAMIC_GARAGE_DOOR, and DYNAMIC_GARAGE_DOOR_OGP
(all using cloud_somfy_tahoma_v2_europe.json) caused 4x duplication
of the same snapshot data.
Copilot AI review requested due to automatic review settings May 7, 2026 20:10
@iMicknl iMicknl added this to the 2026.5.1 milestone May 7, 2026
Devices using the PositionableGarageDoorWithPartialPosition widget
report core:OpenClosedPartialState instead of core:OpenClosedState.
Without a widget-level override, they fall through to the generic
GarageDoor UIClass which expects core:OpenClosedState, resulting in
unknown state.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes incorrect is_closed reporting for Overkiz DynamicGarageDoor devices introduced by the #141330 refactor, and adds/updates fixtures + snapshots to prevent regression.

Changes:

  • Update the default GarageDoor cover description to use core:OpenClosedState for is_closed.
  • Add a specific UIWidget override for PositionableGarageDoor behavior.
  • Extend Overkiz cover tests/fixtures/snapshots with DynamicGarageDoor examples (io + ogp).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
homeassistant/components/overkiz/cover.py Adjusts GarageDoor is_closed_state mapping and adds a PositionableGarageDoor override.
tests/components/overkiz/test_cover.py Adds DynamicGarageDoor devices to cover service action tests.
tests/components/overkiz/snapshots/test_cover.ambr Updates snapshots to include the new garage door entities/state.
tests/components/overkiz/fixtures/setup/cloud_somfy_tahoma_v2_europe.json Adds fixture devices for DynamicGarageDoor (io + ogp) including core:OpenClosedState.

Comment thread homeassistant/components/overkiz/cover.py
Copilot AI review requested due to automatic review settings May 7, 2026 20:18
@iMicknl iMicknl marked this pull request as ready for review May 7, 2026 20:19
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Comment on lines +127 to +139
# Needs override since PositionableGarageDoor reports
# core:OpenClosedUnknownState instead of core:OpenClosedState
# uiClass is GarageDoor
OverkizCoverDescription(
key=UIWidget.POSITIONABLE_GARAGE_DOOR,
device_class=CoverDeviceClass.GARAGE,
current_position_state=OverkizState.CORE_CLOSURE,
set_position_command=OverkizCommand.SET_CLOSURE,
open_command=OverkizCommand.OPEN,
close_command=OverkizCommand.CLOSE,
stop_command=OverkizCommand.STOP,
is_closed_state=OverkizState.CORE_OPEN_CLOSED_UNKNOWN,
),
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will fix this in a follow-up PR, good catch. Not related to this change and previous behavior.

@zweckj zweckj merged commit d52c281 into home-assistant:dev May 8, 2026
37 checks passed
@frenck frenck mentioned this pull request May 8, 2026
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request May 9, 2026
…2026.5.0 → 2026.5.1) (#411)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/home-operations/home-assistant](https://ghcr.io/home-operations/home-assistant) ([source](https://github.com/home-assistant/core)) | patch | `2026.5.0` → `2026.5.1` |

---

### Release Notes

<details>
<summary>home-assistant/core (ghcr.io/home-operations/home-assistant)</summary>

### [`v2026.5.1`](https://github.com/home-assistant/core/releases/tag/2026.5.1)

[Compare Source](home-assistant/core@2026.5.0...2026.5.1)

- Added wfsens as a occupancy source in wiz ([@&#8203;th3spis] - [#&#8203;166799]) ([wiz docs])
- Fix WiZ Light config flow timeout by properly closing UDP connections ([@&#8203;robwasripped] - [#&#8203;168456]) ([wiz docs])
- Fix IntelliFire setup recovery ([@&#8203;jeeftor] - [#&#8203;169739]) ([intellifire docs])
- Fix hassio auth IndexError on Supervisor Unix socket requests ([@&#8203;agners] - [#&#8203;169911]) ([hassio docs])
- Update gardena ble to 2.8.1 ([@&#8203;elupus] - [#&#8203;169914]) ([gardena\_bluetooth docs][gardena_bluetooth docs]) ([husqvarna\_automower\_ble docs][husqvarna_automower_ble docs]) (dependency)
- Bump serialx to 1.7.1 ([@&#8203;puddly] - [#&#8203;169928]) ([serial docs]) ([acer\_projector docs][acer_projector docs]) ([usb docs]) (dependency)
- Bump holidays to 0.96 ([@&#8203;gjohansson-ST] - [#&#8203;169939]) ([workday docs]) ([holiday docs]) (dependency)
- Add support for options to todo triggers ([@&#8203;emontnemery] - [#&#8203;169947]) ([todo docs])
- Bump pyTibber to 0.37.5 ([@&#8203;Danielhiversen] - [#&#8203;169981]) ([tibber docs]) (dependency)
- Bump python-duco-client to 0.4.0 ([@&#8203;ronaldvdmeer] - [#&#8203;169776]) ([duco docs]) (dependency)
- Bump python-duco-client to 0.4.1 ([@&#8203;ronaldvdmeer] - [#&#8203;169991]) ([duco docs]) (dependency)
- Proper handling of malformed data during FRITZ!Box Tools setup ([@&#8203;mib1185] - [#&#8203;170030]) ([fritz docs])
- Fix websocket certificate verification Bump axis to v70 ([@&#8203;Kane610] - [#&#8203;170038]) ([axis docs]) (dependency)
- Fix `is_closed` state for DynamicGarageDoor in Overkiz ([@&#8203;iMicknl] - [#&#8203;170052]) ([overkiz docs])
- Fix tilt controls for TiltOnlyVenetianBlind in Overkiz ([@&#8203;iMicknl] - [#&#8203;170055]) ([overkiz docs])
- Fix cover controls for UpDownBioclimaticPergola in Overkiz ([@&#8203;iMicknl] - [#&#8203;170058]) ([overkiz docs])
- Bump pyOverkiz to 1.20.3 ([@&#8203;iMicknl] - [#&#8203;170060]) ([overkiz docs]) (dependency)
- Bump deebot-client to 18.3.0 ([@&#8203;edenhaus] - [#&#8203;170066]) ([ecovacs docs]) (dependency)
- Set `is_closed` state to `None` when a cover state returns "unknown" in Overkiz ([@&#8203;iMicknl] - [#&#8203;170081]) ([overkiz docs])
- Fix sensors getting wrong unit from MeasuredValueType attribute in Overkiz ([@&#8203;iMicknl] - [#&#8203;170088]) ([overkiz docs])
- Fix Z-Wave discovery crash with unknown node firmware version ([@&#8203;TheJulianJES] - [#&#8203;170090]) ([zwave\_js docs][zwave_js docs])
- Bump ZHA to 1.3.1 ([@&#8203;TheJulianJES] - [#&#8203;170095]) ([zha docs]) (dependency)
- Bump python-bsblan to 5.2.1 ([@&#8203;liudger] - [#&#8203;170100]) ([bsblan docs]) (dependency)
- Bump blebox\_uniapi to v2.5.3 ([@&#8203;bkobus-bbx] - [#&#8203;170115]) ([blebox docs]) (dependency)
- Fix is\_closed state for DynamicGate covers in Overkiz ([@&#8203;iMicknl] - [#&#8203;170130]) ([overkiz docs])
- Fix tilt support for UpDownVenetianBlind (rts:VenetianBlindRTSComponent) in Overkiz ([@&#8203;iMicknl] - [#&#8203;170047]) ([overkiz docs])

[#&#8203;166799]: home-assistant/core#166799

[#&#8203;168456]: home-assistant/core#168456

[#&#8203;169484]: home-assistant/core#169484

[#&#8203;169739]: home-assistant/core#169739

[#&#8203;169776]: home-assistant/core#169776

[#&#8203;169911]: home-assistant/core#169911

[#&#8203;169914]: home-assistant/core#169914

[#&#8203;169928]: home-assistant/core#169928

[#&#8203;169939]: home-assistant/core#169939

[#&#8203;169947]: home-assistant/core#169947

[#&#8203;169981]: home-assistant/core#169981

[#&#8203;169991]: home-assistant/core#169991

[#&#8203;170030]: home-assistant/core#170030

[#&#8203;170038]: home-assistant/core#170038

[#&#8203;170047]: home-assistant/core#170047

[#&#8203;170052]: home-assistant/core#170052

[#&#8203;170055]: home-assistant/core#170055

[#&#8203;170058]: home-assistant/core#170058

[#&#8203;170060]: home-assistant/core#170060

[#&#8203;170066]: home-assistant/core#170066

[#&#8203;170081]: home-assistant/core#170081

[#&#8203;170088]: home-assistant/core#170088

[#&#8203;170090]: home-assistant/core#170090

[#&#8203;170095]: home-assistant/core#170095

[#&#8203;170100]: home-assistant/core#170100

[#&#8203;170115]: home-assistant/core#170115

[#&#8203;170130]: home-assistant/core#170130

[@&#8203;Danielhiversen]: https://github.com/Danielhiversen

[@&#8203;Kane610]: https://github.com/Kane610

[@&#8203;TheJulianJES]: https://github.com/TheJulianJES

[@&#8203;agners]: https://github.com/agners

[@&#8203;bkobus-bbx]: https://github.com/bkobus-bbx

[@&#8203;edenhaus]: https://github.com/edenhaus

[@&#8203;elupus]: https://github.com/elupus

[@&#8203;emontnemery]: https://github.com/emontnemery

[@&#8203;frenck]: https://github.com/frenck

[@&#8203;gjohansson-ST]: https://github.com/gjohansson-ST

[@&#8203;iMicknl]: https://github.com/iMicknl

[@&#8203;jeeftor]: https://github.com/jeeftor

[@&#8203;liudger]: https://github.com/liudger

[@&#8203;mib1185]: https://github.com/mib1185

[@&#8203;puddly]: https://github.com/puddly

[@&#8203;robwasripped]: https://github.com/robwasripped

[@&#8203;ronaldvdmeer]: https://github.com/ronaldvdmeer

[@&#8203;th3spis]: https://github.com/th3spis

[acer_projector docs]: https://www.home-assistant.io/integrations/acer_projector/

[axis docs]: https://www.home-assistant.io/integrations/axis/

[blebox docs]: https://www.home-assistant.io/integrations/blebox/

[bsblan docs]: https://www.home-assistant.io/integrations/bsblan/

[duco docs]: https://www.home-assistant.io/integrations/duco/

[ecovacs docs]: https://www.home-assistant.io/integrations/ecovacs/

[fritz docs]: https://www.home-assistant.io/integrations/fritz/

[gardena_bluetooth docs]: https://www.home-assistant.io/integrations/gardena_bluetooth/

[hassio docs]: https://www.home-assistant.io/integrations/hassio/

[holiday docs]: https://www.home-assistant.io/integrations/holiday/

[husqvarna_automower_ble docs]: https://www.home-assistant.io/integrations/husqvarna_automower_ble/

[intellifire docs]: https://www.home-assistant.io/integrations/intellifire/

[overkiz docs]: https://www.home-assistant.io/integrations/overkiz/

[serial docs]: https://www.home-assistant.io/integrations/serial/

[tibber docs]: https://www.home-assistant.io/integrations/tibber/

[todo docs]: https://www.home-assistant.io/integrations/todo/

[usb docs]: https://www.home-assistant.io/integrations/usb/

[wiz docs]: https://www.home-assistant.io/integrations/wiz/

[workday docs]: https://www.home-assistant.io/integrations/workday/

[zha docs]: https://www.home-assistant.io/integrations/zha/

[zwave_js docs]: https://www.home-assistant.io/integrations/zwave_js/

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/411
@github-actions github-actions Bot locked and limited conversation to collaborators May 9, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DynamicGarageDoor (io:DynamicGarageDoor) has unknown is_closed state after 2026.5 update in Overkiz

4 participants