This page walks through concrete examples of the charging schedules Axle sends for different intents and tariffs. Use it to reason about what your users will experience, and how to handle the edge cases.Documentation Index
Fetch the complete documentation index at: https://docs.axle.energy/llms.txt
Use this file to discover all available pages before exploring further.
Scenario 1: Overnight charge
The user plugs in after work and wants the car ready by morning. This is the default happy path.| Intent | Value |
|---|---|
| Energy required | 30 kWh |
| May charge at peak | false (default) |
| Charging mode | maximise_charging_time (default) |
OCPP ChargingProfile payload
OCPP ChargingProfile payload
Axle sets
limit to 99999.0 as an “unlimited” signal. The charger draws at its rated power during each charging period. See the integration guide for how to receive these payloads.Scenario 2: Minimising energy delivered
charging_mode controls whether Axle fills the full off-peak window or stops once the stated intent is met.
| Intent | Value |
|---|---|
| Energy required | 10 kWh |
| May charge at peak | false (default) |
- Fill all off-peak (default)
- Match intent exactly
charging_mode: maximise_charging_time, Axle treats the energy intent as a minimum, not a cap, and charges through all remaining off-peak slots.OCPP ChargingProfile payload
OCPP ChargingProfile payload
Scenario 3: Intent larger than the off-peak window
The user’s energy requirement cannot be met using the off-peak window alone.| Intent | Value |
|---|---|
| Energy required | 45 kWh |
| Charging mode | maximise_charging_time (default) |
- Off-peak only (default)
- Allow peak charging
may_charge_peak is false.OCPP ChargingProfile payload
OCPP ChargingProfile payload
Scenario 4: Mid-session re-scheduling
Axle may re-issue schedules during a session. Each new schedule fully replaces the previous one at the same stack level.| Intent | Value |
|---|---|
| Energy required | 30 kWh |
| May charge at peak | false (default) |
| Charging mode | maximise_charging_time (default) |
Initial ChargingProfile payload (sent at 19:00)
Initial ChargingProfile payload (sent at 19:00)
Revised ChargingProfile payload (sent at 00:30)
Revised ChargingProfile payload (sent at 00:30)
Scenario 5: No off-peak slots before ready-by
The user plugs in at 07:00 and needs the car ready by 11:00. There are no off-peak slots between now and the deadline.| Intent | Value |
|---|---|
| Energy required | 10 kWh |
| Charging mode | maximise_charging_time (default) |
- Off-peak only (default)
- Allow peak charging
may_charge_peak: false, Axle cannot use peak slots. With no off-peak slots available, Axle cannot deliver any energy toward the 10 kWh intent. We still send a schedule (a single 0 W period) to tell the charger explicitly not to charge.If the user needs to override this and charge immediately, initiate the charge on your side and notify Axle with a charge-now event.OCPP ChargingProfile payload
OCPP ChargingProfile payload
Interpreting schedules
A few things to know when handling the schedules Axle sends you.Stack a default profile behind Axle's schedule
Stack a default profile behind Axle's schedule
Axle sends schedules at OCPP
stackLevel: 1100 with chargingProfilePurpose: TxProfile. You should install a long-running TxDefaultProfile at a lower stack level (e.g. 0) representing your fallback charging policy. When Axle’s TxProfile expires or is superseded, the charger falls back to your default rather than continuing an old Axle schedule.It also acts as a failsafe: if the charger ever loses connectivity or hasn’t yet received a schedule, it falls back to your default rather than charging at full rate immediately.Each new Axle schedule replaces the previous one
Each new Axle schedule replaces the previous one
Axle’s schedules at a given
stackLevel fully replace the previous schedule at that level. Don’t try to merge them. Treat the most recent schedule as authoritative.A schedule with only 0 W periods is valid
A schedule with only 0 W periods is valid
An Axle schedule containing a single
chargingSchedulePeriod with limit: 0.0 is an explicit instruction: hold the charger at 0 W for the schedule’s duration. It’s not an empty or invalid payload. Apply it like any other schedule. The user can always supersede it by triggering an immediate overriding charge.This happens when Axle cannot schedule any charging between the plug-in time and ready-by, typically when may_charge_peak is false and no off-peak slots are available, or when the intent is already satisfied.Next steps
Integration guide
Back to the full Smart Charging integration walkthrough
OCPP example payload
See the full JSON shape of a schedule Axle sends

