Skip to content

Fix OverkizCommandParam FURTHER_NOTICE/NEXT_MODE casing regression#2181

Merged
iMicknl merged 1 commit into
mainfrom
fix/derogation-param-casing-regression
Jul 14, 2026
Merged

Fix OverkizCommandParam FURTHER_NOTICE/NEXT_MODE casing regression#2181
iMicknl merged 1 commit into
mainfrom
fix/derogation-param-casing-regression

Conversation

@iMicknl

@iMicknl iMicknl commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Fixes #2180.

Same casing-regression bug class as #2093/#2096 and #2126, this time for the setDerogation params.

Problem

Two OverkizCommandParam members were regressed from their snake_case API values to camelCase during the 2.0 enum regeneration:

Member Was Now (regressed)
FURTHER_NOTICE "further_notice" "furtherNotice"
NEXT_MODE "next_mode" "nextMode"

These are setDerogation command parameters. The real API expects the snake_case form — the server rejects the camelCase value with INCOMPATIBLE_VALUE:

setDerogation() : Invalid value for command parameter p2 : expected multi-type value,
one of [string value (further_notice, next_mode) or integer value >= 0]
but got furtherNotice (String)

The reported io:DerogationTypeState / somfythermostat:DerogationTypeState value is likewise snake_case (further_notice). Only the state definition values array advertises the camelCase form, which is what the generator picked up.

Impact

Breaks setDerogation for every consumer, including Home Assistant overkiz climate entities (SomfyThermostat, ValveHeatingTemperatureInterface) — setting temperature/preset fails.

Fix

Corrected the two values in pyoverkiz/enums/command.py. The generator's existing casing-clobber guard keeps regeneration idempotent: the corrected values now win the enum-name collision, so the harvested camelCase catalog values only map to the same names and are dropped.

Verification

  • Enum values now return further_notice / next_mode.
  • Full test suite: 556 passed.
  • Re-ran utils/generate_enums.py to confirm idempotency ([+0 new] params; corrected values preserved).

…2180)

Same casing-regression bug class as #2093/#2096 and #2126, this time for
the setDerogation params.

Two OverkizCommandParam members were regressed from their snake_case API
values to camelCase during the 2.0 enum regeneration:

| Member           | Was              | Now (regressed) |
|------------------|------------------|-----------------|
| FURTHER_NOTICE   | "further_notice" | "furtherNotice" |
| NEXT_MODE        | "next_mode"      | "nextMode"      |

These are setDerogation command parameters. The real API expects the
snake_case form — the server rejects camelCase with INCOMPATIBLE_VALUE
("expected ... one of [string value (further_notice, next_mode) ...]").
The reported io:/somfythermostat:DerogationTypeState value is likewise
snake_case; only the state *definition* values array advertises the
camelCase form, which is what the generator picked up.

This breaks setDerogation for every consumer, including Home Assistant
overkiz climate entities (SomfyThermostat, ValveHeatingTemperatureInterface).

The generator's existing casing-clobber guard keeps regeneration
idempotent: the corrected values now win the enum-name collision, so the
harvested camelCase catalog values only map to the same names and are
dropped.
@iMicknl iMicknl added bug Something isn't working breaking labels Jul 14, 2026
@iMicknl iMicknl marked this pull request as ready for review July 14, 2026 09:42
@iMicknl iMicknl requested a review from tetienne as a code owner July 14, 2026 09:42
Copilot AI review requested due to automatic review settings July 14, 2026 09:42

This comment was marked as spam.

@iMicknl iMicknl merged commit 04c8b21 into main Jul 14, 2026
11 checks passed
@iMicknl iMicknl deleted the fix/derogation-param-casing-regression branch July 14, 2026 09:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OverkizCommandParam FURTHER_NOTICE/NEXT_MODE casing regression breaks setDerogation

2 participants