Skip to content

Add Configuration of Room Cooling Temperature (CRCT) use case#243

Open
andig wants to merge 7 commits into
enbility:devfrom
evcc-io:feat/ca-crct
Open

Add Configuration of Room Cooling Temperature (CRCT) use case#243
andig wants to merge 7 commits into
enbility:devfrom
evcc-io:feat/ca-crct

Conversation

@andig

@andig andig commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Adds the Configuration of Room Cooling Temperature (CRCT) use case (EEBus UC TS V1.0.0) as a Configuration Appliance client actor in usecases/ca/crct.

Scenario 1 (mandatory): set the room cooling temperature setpoint on an HVACRoom entity.

Structural mirror of the CRHT use case (#240) with the setpoints resolved via the cooling system function's hvacSystemFunctionSetpointRelationListData (the scopeType is roomAirTemperature for both heating and cooling; the distinction comes from the system function relation, as per spec).

Public API: Setpoints, SetpointConstraints, WriteSetpoint (per cooling operation mode on/off/eco; auto rejected).

Stacked on #239 (Hvac and Setpoint client features) — only the last commit is specific to this PR.

🤖 Generated with Claude Code

andig and others added 7 commits July 17, 2026 12:22
Groundwork for the HVAC system function and temperature use cases.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Point 5: WriteSetpoint discarded the message counter and reported
success as soon as the request was sent. Return the message counter and
accept a resultCB so a non-zero ResultData.ErrorNumber surfaces as a
device rejection, matching the OPEV/LPC/OHPCF write pattern.

Point 6: the setpoint relation resolved the cooling system function via
the first matching description. Return ErrDataNotAvailable unless exactly
one cooling system function matches, so the wrong setpoint is never
controlled.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Hvac and Setpoint write helpers issued a write command without
checking whether the remote server feature advertises the Write()
operation for the corresponding function. Guard each write helper so it
returns api.ErrNotSupported unless the remote advertises Write(),
matching the existing LoadControl/DeviceConfiguration behaviour.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Hvac and Setpoint write helpers sent a list containing only the
modified entry. Servers that interpret the payload as a full replacement
would then drop unrelated system functions, overruns or setpoints.

Send a proper partial write when the remote advertises WritePartial().
Otherwise copy the cached list, merge the modified entries and write the
complete list, matching the LoadControl/DeviceConfiguration behaviour.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Now that the Write() advertisement gate is present in the Setpoint
feature helper, the test fixture must advertise the Write operation for
existing write tests to pass, and a dedicated test verifies WriteSetpoint
returns ErrNotSupported when the remote advertises the setpoint list as
read-only.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant