Releases: Markus98/ouman-eh-800-api
Release list
v1.0.0
This is the v1.0.0 milestone. The library is now a dependency of Home Assistant core. There is no API redesign in this release, v1.0.0 simply marks the start of stable semver.
Breaking:
- 15 temperature setpoints changed from
IntControlOumanEndpointtoFloatControlOumanEndpoint- Temperature drop and big temperature drop — L1/L2, room-sensor and
no-sensor variants (8) - Water-out minimum / maximum temperature — L1/L2 (4)
- Constant temp setpoint — L1 (1)
- Room temperature setpoint user — L1/L2 (2)
- Temperature drop and big temperature drop — L1/L2, room-sensor and
Fixed:
- Decimal writes (0.1 resolution) are no longer rejected on settings the device stores with one decimal place (home-assistant/core#174309).
Docs:
- Removed the disclaimer about unverified L2 and room-sensor endpoints, these have now been verified against hardware (#1).
Full Changelog: v0.5.0...v1.0.0
v0.5.0
A minor release that tightens endpoint typing.
Breaking:
ControllableEndpointnow extendsOumanEndpoint, so it can be used as a parameter type whereverOumanEndpointis expected. Concrete writable endpoint classes are unaffected.
Full Changelog: v0.4.0...v0.5.0
v0.4.0
This release expands device coverage with 5-point heating curves,
relay-control overrides, and a batch of newly-discovered L1/L2 endpoints.
It also includes breaking changes: the registry layout has been
restructured and the per-endpoint convenience methods on the client
are gone.
At a glance
Breaking:
L1Endpoints/L1EndpointsWithRoomSensor/L2Endpoints/
L2EndpointsWithRoomSensorremoved; replaced by per-feature fragment
registries composed viaclient.get_active_registries().- All client convenience methods (
set_l1_*,set_l2_*,set_home_away,
set_trend_sample_interval,get_l1_values,get_l2_values,
get_system_values) removed in favour ofset_endpoint_valueand
get_values. - Two non-existent endpoints removed (S_0_0 sentinel, L2 potentiometer).
- L1 room-sensor temperature-drop endpoints now resolve to the correct
sensor IDs; numeric scale changes (typical 6/16 °C → 1.5/5 °C).
New:
- 5-point heating curves for L1 and L2.
- Relay-control overrides for the 5 controllable relay modes, plus the
RelayControlandPumpSummerStopControlenums. - A batch of additional L1/L2 read-only endpoints (curve-derived supply
water, delayed outdoor effect, fine-adjustment effect, room-sensor
variants, constant-temp setpoint).
Fixed:
- Room-sensor detection no longer false-positives on
'off,error'states. set_endpoint_valueon enum endpoints with an empty
response_endpoint_idsnow raises a clear error instead ofNameError.
Breaking changes
Registry classes restructured
L1Endpoints, L1EndpointsWithRoomSensor, L2Endpoints, and
L2EndpointsWithRoomSensor are gone. They've been split into smaller
fragment registries that each model one feature dimension; the device's
current configuration determines which fragments are active.
| Old | New |
|---|---|
L1Endpoints |
L1BaseEndpoints + L1ThreePointCurve (or L1FivePointCurve) + L1NoRoomSensor (or L1RoomSensor) |
L1EndpointsWithRoomSensor |
L1BaseEndpoints + the 3-pt or 5-pt curve + L1RoomSensor |
L2Endpoints / L2EndpointsWithRoomSensor |
analogous L2 fragments |
The simplest migration is to call await client.get_active_registries(),
which probes the device and returns the right OumanRegistrySet
automatically:
registry_set = await client.get_active_registries()
values = await client.get_values(registry_set)Manual composition still works: OumanRegistrySet([SystemEndpoints, L1BaseEndpoints, L1ThreePointCurve, L1NoRoomSensor]).
Convenience methods removed
set_l1_*, set_l2_*, set_home_away, set_trend_sample_interval,
get_l1_values, get_l2_values, and get_system_values are all gone.
Use the generic get_values(registry_set) and
set_endpoint_value(endpoint, value) instead. Every previous one-liner
has a direct equivalent:
# Before
await client.set_l1_operation_mode(OperationMode.AUTOMATIC)
# After
await client.set_endpoint_value(L1BaseEndpoints.OPERATION_MODE, OperationMode.AUTOMATIC)Two endpoints removed
L1Endpoints.HEATING_SHUTDOWN_STATUS(S_0_0): was a generic device
placeholder, not a heating shutdown indicator.L2EndpointsWithRoomSensor.ROOM_SENSOR_POTENTIOMETER(S_307_85): the
TMR/SP potentiometer feature is L1-only per the device manual.
L1EndpointsWithRoomSensor.TEMPERATURE_DROP and BIG_TEMPERATURE_DROP now point at the right sensor IDs
When a room sensor is installed, the device exposes the drop on a different
ID (S_87/S_88) than the one used without a sensor (S_89/S_90). The library
previously returned the no-sensor IDs in both cases. The Python name is
unchanged (l1_temperature_drop / l1_big_temperature_drop).
New features
Many new endpoints
- L1 base:
CURVE_SUPPLY_WATER_TEMPERATURE,FINE_ADJUSTMENT_EFFECT,
CONSTANT_TEMP_SETPOINT - L2 base:
VALVE_POSITION,CURVE_SUPPLY_WATER_TEMPERATURE,
DELAYED_OUTDOOR_TEMPERATURE_EFFECT - L1RoomSensor:
ROOM_TEMPERATURE_SETPOINT_USER,DELAYED_ROOM_TEMPERATURE - L2RoomSensor:
TEMPERATURE_DROP,BIG_TEMPERATURE_DROP,
ROOM_TEMPERATURE_SETPOINT_USER,DELAYED_ROOM_TEMPERATURE,
ROOM_TEMPERATURE_FINE_TUNING,ROOM_TEMPERATURE,
ROOM_TEMPERATURE_SETPOINT - 5-point curve setpoints (5 each for L1 and L2)
- Relay control overrides for 5 relay modes (pump summer stop, temperature,
temperature difference, L1 valve position, time program)
New control enums
RelayControl (Auto / ON / OFF) and PumpSummerStopControl (Auto / Stop /
Run) for the relay-override fragments.
Fixes
- Room-sensor installed detection correctly handles
'off,error'and
'on,error'states. The previous check matched anything except the
literal'off', so a configured-then-disabled channel with a retained
error flag was reported as installed. - Latent
NameErrorinset_endpoint_valuefor enum endpoints with an
emptyresponse_endpoint_idsnow raises a clearOumanClientError.
Full Changelog: v0.3.0...v0.4.0
v0.3.0
v0.3.0
Breaking Changes
- Integer control convenience methods (e.g., set_l1_valve_position_setpoint, set_trend_sample_interval) now return float
instead of int to match the underlying _set_int_endpoint return type
Affected Methods
System:
- set_trend_sample_interval
L1 Circuit:
- set_l1_valve_position_setpoint
- set_l1_curve_minus_20_temp
- set_l1_curve_0_temp
- set_l1_curve_20_temp
- set_l1_temperature_drop
- set_l1_big_temperature_drop
- set_l1_water_out_minimum_temperature
- set_l1_water_out_maximum_temperature
L2 Circuit:
- set_l2_valve_position_setpoint
- set_l2_curve_minus_20_temp
- set_l2_curve_0_temp
- set_l2_curve_20_temp
- set_l2_temperature_drop
- set_l2_big_temperature_drop
- set_l2_water_out_minimum_temperature
- set_l2_water_out_maximum_temperature
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
New Public Exports
- Added
ControlEnumtype alias to public API
Development & CI
- Added GitHub Actions workflows for CI and automated releases
- Configured strict linting (ruff) and type checking (mypy)
- Added Makefile for running checks locally
- Improved test coverage for client convenience methods
Full Changelog: v0.1.0...v0.2.0