Confirm the Charge Point supports smart charging by checking the SupportedFeatureProfiles configuration key, which must include SmartCharging.
Compose a SetChargingProfile.req message with chargingProfileId (a unique integer), stackLevel (higher values take precedence), chargingProfilePurpose (TxDefaultProfile for per-transaction defaults or ChargingStationMaxProfile for station-wide limits), chargingProfileKind (Absolute, Recurring, or Relative), and a chargingSchedule object.
Define the chargingSchedule with chargingRateUnit (A for amps or W for watts), duration (optional, in seconds), and a chargingSchedulePeriod array where each period has a startPeriod offset (in seconds from schedule start) and a limit value.
Send the SetChargingProfile.req to the CP; the CP responds with SetChargingProfile.conf with status Accepted, Rejected, or NotSupported.
To apply a profile to a specific active transaction rather than a default, set chargingProfilePurpose to TxProfile and include the transactionId in the request.
To remove a profile, send ClearChargingProfile.req with the chargingProfileId; the CP responds with status Accepted or Unknown.
Known gotchas
In OCPP 1.6, stackLevel and chargingProfilePurpose together determine precedence; a TxProfile at stackLevel 0 overrides a TxDefaultProfile at any level for the same transaction, which can produce surprising behavior if both are active simultaneously.
Setting evseId (or connectorId in OCPP 1.6) to 0 in a TxDefaultProfile applies the profile independently to each individual connector, not as a shared station-wide aggregate — a common misreading of the spec.
Some CP firmware accepts SetChargingProfile with status Accepted but does not actually enforce the power limit in hardware; validate the profile is being respected by monitoring MeterValues after setting it.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp