Skip to content

Add Configuration of Room Heating Temperature (CRHT) use case#240

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

Add Configuration of Room Heating Temperature (CRHT) use case#240
andig wants to merge 7 commits into
enbility:devfrom
evcc-io:feat/ca-crht

Conversation

@andig

@andig andig commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

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

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

Public API:

  • Setpoints / SetpointConstraints: read the heating setpoints and their constraints (resolved via the heating system function's hvacSystemFunctionSetpointRelationListData)
  • WriteSetpoint: write the setpoint for a heating operation mode (on/off/eco; auto is timetable-controlled and rejected), honoring isSetpointChangeable

Per spec, the client subscribes to the Setpoint and HVAC server features (no binding) and requests descriptions, constraints, relations and data on connect.

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 3 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>
andig and others added 4 commits July 20, 2026 17:39
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 heating system function via
the first matching description. Return ErrDataNotAvailable unless exactly
one heating 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