By default, smart charging is DISABLED. In this state, the vehicle charges continuously when plugged in, unless the user configures other interventions via the vehicle, charger, or other apps.
To enable smart charging, we need two simple inputs:
A smart charging policy, including a user-defined deadline
One or more user-defined charging locations
A valid smart charging policy is necessary to transition from the DISABLED state to the CONSIDERING state. However, a charging location is required to generate a smart charging plan (transitioning into PLAN:*), so we consider this a core part of smart charging onboarding.
In addition to collecting these two inputs, presenting some key information early in the user journey ensures a better understanding and experience:
What smart charging is and how it works
Protective charging
Interference by third parties
This guide will walk you through the required inputs and key information.
Protective charging is controlled by the vehicle's SmartChargingPolicyAPIminimumChargeLimit, which defaults to zero.
If the vehicle's charge level is below minimumChargeLimit when plugged in, it will charge continuously until it reaches minimumChargeLimit, regardless of energy prices.
Check that the minimumChargeLimit never exceeds the vehicle's maximum limit. You can retrieve the maximum limit from the get vehicleAPI API response using chargeState.chargeLimit. Note, the Enode API doesn't control the maximum limit, which is subject to change. If the maximum limit falls below the set minimum, adjust the minimumChargeLimit to ensure smart charging functionality.
If the user has enabled schedules or other smart charging functionality via their charger, vehicle, or other apps, these will cause problems for smart charging plans.
The vehicle must be plugged in at a known charging location for smart charging to be considered, as indicated by the atChargingLocation consideration. Post a name and location data (longitude, latitude) to the /locations endpoint to add a charging location. Charging locations are also used for mapping price data to tariffsAPI or Nordpool price areas.