Skip to content

Conversation

@iMicknl
Copy link
Owner

@iMicknl iMicknl commented Dec 29, 2025

Breaking changes

Fixes

Features

iMicknl and others added 5 commits January 8, 2026 16:52
* Bump minimum required Python version to 3.12

* Update CI/CD
…oup for Execution typing (#1864)

* Rename scenario to action group

* Rename test

* Fix docstring formatting in ActionGroup class

* Remove unnecessary assertions in ActionGroup initialization
…methods. (#1862)

- `client.execute_command()` and `client.execute_commands()` are
replaced by `client.execute_action_group()`

- `client.execute_action_group()` now supports multiple execution modes
(high priority, internal, geolocated)
- `client.execute_action_group()` now supports multiple device actions
in the same request

The current execution methods are poorly typed and do not support
concurrent execution across multiple devices, which makes it impossible
to properly work around TooManyExecutionsException and
TooManyConcurrentRequestsException.

The main change is the move from `client.execute_command()` and
`client.execute_commands()` to a single `client.execute_action_group()`.
An action group takes a list of actions, each of which can include
multiple device actions, including multiple commands per action.

```python3
await client.execute_action_group(
    actions=[
        Action(
            device_url="io://1234-5678-1234/12345678",
            commands=[
                Command(name="down"),
                Command(name="refresh")
            ]
        )
    ],
    label="Execution via Home Assistant"
)
```

New (mode) options like high priority will be possible now:

```python3
await client.execute_action_group(
    actions=[
        Action(
            device_url="io://1234-5678-1234/12345678",
            commands=[
                Command(name=OverkizCommand.SET_CLOSURE, parameters=[0])
            ]
        )
    ],
    label="Execution via Home Assistant",
    mode=CommandMode.HIGH_PRIORITY
)
```

This could serve as a foundation for grouping commands that are executed
within a short time window, for example when triggered by a scene or
automation in Home Assistant. Requests issued close together could be
batched and sent as a single action group, reducing the impact of
current Overkiz limitations.

The open question is where this queue should live: inside this
integration itself, or as part of the Home Assistant core
implementation.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ial classes (#1867)

- Introduced UsernamePasswordCredentials and LocalTokenCredentials for
better credential management.
- Updated OverkizClient to utilize the new credential classes and
refactored login logic.
- Added authentication strategies for various servers, including Somfy
and Rexel.
- Created new modules for auth strategies and credentials to improve
code organization.
- Enhanced README with updated usage examples for the new authentication
methods.

## Breaking
- `OverkizServer` class is renamed to `ServerConfig` and has additional
`server` and `type` (cloud/local) property
- `generate_local_server` is renamed to `create_local_server_config`
- `client.api_type` is removed and now available via `ServerConfig`
(e.g. `client.server_config.type`)
- The `OverkizClient` constructor now requires passing a `ServerConfig`
via `server`
- The `OverkizClient` constructur now requires passing an `Credentials`
class via `credentials`, e.g. `UsernamePasswordCredentials(USERNAME,
PASSWORD)` for most server.

## Features
- The OverkizClient constructor now supports passing a Server enum
directly, such as `OverkizClient(server=Server.SOMFY_EUROPE, ...)`.

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: iMicknl <1424596+iMicknl@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants