Update the user's charging configuration
Apply mode and/or threshold changes to all of the user’s charging
devices in one transaction. Rejects modes outside available_modes and
thresholds below any device’s band minimum (422).
Authorizations
Path Parameters
Body
All fields optional — omitted fields are left unchanged. The mode must
be in available_modes (none always is); thresholds must satisfy
every device's hysteresis-band minimum (min_band_w on GET).
hems_mode fans out to the EV rows only. A raw-threshold write
flips preset-mode EVs to custom (current effective values materialized,
then the provided fields overlaid); combining a preset hems_mode with
raw thresholds is contradictory and rejected.
User-facing charging mode on the partner-API wire — the projection of the
DesiredSteering subset {NO_STEERING, DAY_AHEAD, HEMS, DAY_AHEAD_HEMS}.
Only the Day-Ahead + HEMS nibbles are user-selectable here; Intraday and Curtailment are
folded into the same projection (a Day-Ahead+Intraday device still reads spot). Use
to_desired_steering / wire_mode_from_desired to cross the boundary — never compare a
DesiredSteering against one of these directly.
none, spot, hems, hems_and_spot How an EV's HEMS start/stop thresholds are determined (SC-137).
The preset modes derive the surplus start/stop band at session start from the
household PV size (kWp) and the actuation floor — see
core_app.services.smart_charging.thresholds.derive_preset_thresholds. The
stored raw threshold columns on ElectricVehicle are read only in CUSTOM
mode (or as fallback when no usable kWp is known).
EAGER - start on a small surplus fraction of kWp; tolerate more import. BALANCED - the default middle ground. CONSERVATIVE - start only on a large surplus; stop early on import. CUSTOM - the user/operator set the raw threshold columns explicitly.
eager, balanced, conservative, custom Response
OK
User-facing charging mode on the partner-API wire — the projection of the
DesiredSteering subset {NO_STEERING, DAY_AHEAD, HEMS, DAY_AHEAD_HEMS}.
Only the Day-Ahead + HEMS nibbles are user-selectable here; Intraday and Curtailment are
folded into the same projection (a Day-Ahead+Intraday device still reads spot). Use
to_desired_steering / wire_mode_from_desired to cross the boundary — never compare a
DesiredSteering against one of these directly.
none, spot, hems, hems_and_spot Why a mode is unavailable (or HEMS ineligible). Stable wire codes the frontend maps to unlock hints — e.g. a locked HEMS row rendering "Connect an inverter".
no_ev, no_battery_capacity, no_actuator, wallbox_not_modulating, no_inverter, inverter_no_export_data 