# Day-to-day use Since smart charging intercepts the default charging behavior your users are familiar with, clear communication and structured information are essential to ensure they can always stay on top of their vehicle’s charging. ## Key events and questions ![A vehicle detail screen summarising key vehicle information up top, a component summarising smart charging information and a contextual charging action in the bottom](https://developers.enode.com/images/smart-charging/Day-to-day__Framework.png) In day-to-day use, smart charging is as easy as plugging in a vehicle at a charging location and returning to it fully charged by the desired deadline, knowing it charged when prices were the lowest. However, since smart charging intercepts the default charging behavior users are familiar with and takes control of charging the vehicle, the need for information increases. It could be helpful to split up the daily use pattern into three main events to decide which pieces of information are relevant at which times. 1. Before plugging in the vehicle 2. After plugging in the vehicle 3. After the deadline has passed Depending on which of these the user finds themselves in and the state of smart charging, they might be wondering... - What is the _current_ state of charge? - Why is my vehicle _charging_ or _not charging_ now? - When _will_ or _did_ my vehicle _start_ or _stop_ charging? - How can I _start_ or _stop_ charging? - How can I change the deadline? - How much _will_ or _did_ I save via smart charging? - Is everything working as expected? If not, how can I fix it? Answering these questions in your UI requires data and actions from various API endpoints relating to the vehicle, smart charging for the vehicle, and registered charging locations. By design, our APIs relay all relevant information in a universal way to cater to many different use cases, allowing you to structure, prioritize and filter the information in a system that suits your use case. Providing too much information could make it complex and confusing to parse. On the other hand, providing too little could leave users in the dark without a sense of control. Combining the main events and questions listed above with your user research and target audience knowledge could be an excellent place to start striking this balance for your product. ## Example system and structure ![A vehicle detail screen with the three main sections marked: A) key vehicle information, B) smart charging control + information and C) charging action](https://developers.enode.com/images/smart-charging/Day-to-day__Framework_explainer.png) A note on this example: This example illustrates essential aspects to remember when building and designing a smart charging experience. It does so by showing one way of systematizing and structuring the necessary information and actions — but this could be done in many other ways.In this example, we use a vehicle detail screen to answer the key questions listed above. While it is a natural home for this information and functionality for many use cases, you should structure this differently depending on your product structure and factors unique to your situation. Putting the principles and considerations from the previous section into practice, we could create a system consisting of 3 parts. 1. **[Vehicle information](https://developers.enode.com/docs/smart-charging/day-to-day#vehicle-information)** — Always relevant information covering reachability, state of charge, charge status, and location. 2. **[Smart charging control + information](https://developers.enode.com/docs/smart-charging/day-to-day#vehicle-information)** — Always relevant control for the deadline, contextually relevant information about `CONSIDERING` and `PLAN:*` states, and contextually relevant plan details. 3. **[Charge control](https://developers.enode.com/docs/smart-charging/day-to-day#charge-control)** — Always relevant, contextual charge control. With this system in mind, a view can be structured with the following logic. - The vehicle information [`A`](https://developers.enode.com/docs/smart-charging/day-to-day#vehicle-information) is placed at the top of the view to ensure it is always visible when entering the view. - The smart charging control + information [`B`](https://developers.enode.com/docs/smart-charging/day-to-day#vehicle-information) is placed just below so it can be reviewed together with the vehicle information [`A`](https://developers.enode.com/docs/smart-charging/day-to-day#vehicle-information) in a container with flexible height allowing for other relevant content like charging statistics to surface when there is no plan present. - The charge control [`C`](https://developers.enode.com/docs/smart-charging/day-to-day#charge-control) is placed at the bottom of the viewport, fixed and floating on top of the rest of the content, ensuring it is always available even if the content below is scrollable. ### Endpoints To build out this complete structure, a variety of different endpoints are used. In the examples below, we refer to these endpoints by their shortname as specified in the list below. | Shortname | Endpoint | | --- | --- | | `consideration.*` | `/vehicles/{vehicleId}/smart-charging-status: consideration` | | `vehicle.*` | `/vehicles/{vehicleId}` | | `action.*` | `/vehicles/{vehicleId}/charging` or `/vehicles/actions/{actionId}` | | `status.*` | [Smart Charging Status](https://developers.enode.com/api/reference#getVehiclesVehicleidSmartchargingstatus) | | `plan.*` | `/vehicles/{vehicleId}/smart-charging-status: plan` | | `policy.*` | [Smart Charging Policy](https://developers.enode.com/api/reference#updateVehicleSmartChargingPolicy) | ## Vehicle information ![An extracted view of the vehicle information component, with three sub-components highlighted: state of charge, charging status, and location status](https://developers.enode.com/images/smart-charging/Day-to-day__Vehicle_information_explainer.png) This component aims to reflect the vehicle information relevant at the current time into an easily scannable system consisting of 3 parts. - [State of charge](https://developers.enode.com/docs/smart-charging/day-to-day#state-of-charge) - [Charging status](https://developers.enode.com/docs/smart-charging/day-to-day#charging-status) - [Location status](https://developers.enode.com/docs/smart-charging/day-to-day#location-status) Under the hood, it combines reachability, plugged-in state, charging state, state of charge, upper charging threshold, location, charging locations, smart charging considerations, and smart charging states. ### State of charge ![An extracted view of the vehicle information component, focusing on the state of charge sub-component](https://developers.enode.com/images/smart-charging/Day-to-day__Vehicle_information__State_of_charge.png) A reflection of the current state of charge focused on the current battery level as the primary visual attention point, with the current range remaining treated as secondary information. The graph visualizes the current battery level and subtly indicates protective charging and upper charging thresholds. | Reference | Description | | --- | --- | | `1` **Current battery level** | `vehicle.chargeState.batteryLevel` | | `2` **Current range remaining** | `vehicle.chargeState.range` | | `3` **Upper charging threshold** | `vehicle.chargeState.chargeLimit` | | `4` **Protective charging threshold** | `vehicle.smartChargingPolicy.minimumChargeLimit` | | `5` **Current battery level** | `vehicle.chargeState.batteryLevel` | ### Charging status ![An extracted view of the vehicle information component, focusing on the charging status sub-component](https://developers.enode.com/images/smart-charging/Day-to-day__Vehicle_information__Charging_status.png) The current charging status is represented as a single status pill. Each status has an icon and label representing the current state. The statuses are grouped by colors reflecting if the vehicle is charging, not charging, or transitioning between the two. This can be read as a hierarchical system from top to bottom, easily translatable into an if statement. | Visual | Key(s) | | --- | --- | | ![A light gray charging status pill with an icon (crossed over wifi symbol) and a label ("not reachable")](https://developers.enode.com/images/smart-charging/Misc__Charging_status__Not_reachable.png) | `!vehicle.isReachable` | | ![A light gray charging status pill with an icon (crossed over plug symbol) and a label ("not plugged in")](https://developers.enode.com/images/smart-charging/Misc__Charging_status__Not_plugged_in.png) | `!vehicle.chargeState.isPluggedIn` | | ![A light gray charging status pill with an icon (crossed over lightning symbol) and a label ("not charging")](https://developers.enode.com/images/smart-charging/Misc__Charging_status__Not_charging.png) | `!vehicle.chargeState.isCharging` | | ![A light gray charging status pill with an icon (full battery symbol) and a label ("fully charged")](https://developers.enode.com/images/smart-charging/Misc__Charging_status__Fully_charged.png) | `vehicle.chargeState.isFullyCharged` | | ![A charging status pill with an icon (pause symbol) and a label ("charging paused")](https://developers.enode.com/images/smart-charging/Misc__Charging_status__Charging_paused.png) | `status.state === "PLAN:EXECUTING:STOPPED" || status.state === "PLAN:EXECUTING:STOPPED:AWAITING_PRICES"` | | ![A light gray charging status pill with an icon (loading symbol) and a label ("stopping charging")](https://developers.enode.com/images/smart-charging/Misc__Charging_status__Stopping_charging.png) | `plan === null && action?.kind = "STOP" && action?.state = "PENDING"` | | ![A medium gray charging status pill with an icon (loading symbol) and a label ("starting charging")](https://developers.enode.com/images/smart-charging/Misc__Charging_status__Starting_charging.png) | `plan = null && action?.kind === "START" && action?.state === "PENDING"` | | ![A medium gray charging status pill with an icon (loading symbol) and a label ("pausing charging")](https://developers.enode.com/images/smart-charging/Misc__Charging_status__Pausing_charging.png) | `status.state === "PLAN:EXECUTING:STOPPING"` | | ![A medium gray charging status pill with an icon (loading symbol) and a label ("resuming charging")](https://developers.enode.com/images/smart-charging/Misc__Charging_status__Resuming_charging.png) | `status.state === "PLAN:EXECUTING:STARTING" || (status.smartOverride && !vehicle.chargeState.isCharging)` | | ![A green charging status pill with an icon (lightning symbol with three lines indicating speed) and a label ("charging")](https://developers.enode.com/images/smart-charging/Misc__Charging_status__Charging_now.png) | `status.state = PLAN:EXECUTING:OVERRIDDEN` | | ![A green charging status pill with an icon (lightning symbol) and a label ("charging")](https://developers.enode.com/images/smart-charging/Misc__Charging_status__Charging.png) | The vehicle is currently charging | ### Location status ![An extracted view of the vehicle information component, focusing on the location status sub-component](https://developers.enode.com/images/smart-charging/Day-to-day__Vehicle_information__Location_status.png) A reflection of the vehicle location and whether it is currently at a charging location. When the vehicle is plugged in at a charging location, it validates this for the user. When not, it is a subtle reminder of why smart charging is not currently generating a plan. | Visual | Key(s) | | --- | --- | | ![A label stating "last seen 29 minutes ago"](https://developers.enode.com/images/smart-charging/Misc__Location_status__Last_seen.png) | `!vehicle.isReachable` | | ![A label stating "Near Bjølsengata 54C", with the address (Bjølengata 54C) emphasised visually](https://developers.enode.com/images/smart-charging/Misc__Location_status__Near.png) | `vehicle.isReachable && vehicle.location.latitude && !vehicle.locationId` | | ![A label stating "At Home", with "Home" emphasized visually](https://developers.enode.com/images/smart-charging/Misc__Location_status__At.png) | `vehicle.locationId` The vehicle is currently at a charging location, displayed as the `name` of the charging location | ## Smart charging control + information ![An extracted view of the smart charging control + information component in two states: CONSIDERING and PLAN:*, with four main elements highlighted: deadline control, explanation text, plan timeline and plan details](https://developers.enode.com/images/smart-charging/Day-to-day__Smart_charging_control__information_explainer.png) This component reflects everything related to smart charging and smart charging plans. It consists of 4 main parts, where the two latter are visible only if a smart charging plan is present. - [Deadline control](https://developers.enode.com/docs/smart-charging/day-to-day#deadline-control) - [Explanation text](https://developers.enode.com/docs/smart-charging/day-to-day#explanation-text) - [Plan timeline](https://developers.enode.com/docs/smart-charging/day-to-day#plan-timeline) - [Plan details](https://developers.enode.com/docs/smart-charging/day-to-day#plan-details) In the `CONSIDERING` state, it aims to present why a smart charging plan is not generated yet with helpful pointers. When in any of the `PLAN:*` states, it shows all details about the current smart charging plan in an easily scannable format. ### Deadline control ![An extracted view of the deadline control sub-component inside of the smart charging control + information component, with a popover open for enabling/disabling smart charging via a toggle and a timestamp picker (currently set to 08:00)](https://developers.enode.com/images/smart-charging/Day-to-day__Smart_charging_control__information__Deadline_control.png) The deadline is written out in the main component to inform the user about their current setting. Then, by tapping it, additional controls are presented. | Reference | Description | | --- | --- | | **Enabled** | Toggles the `isEnabled` property and updates the `/vehicle/{vehicleId}/smart-charging-policy` accordingly. | | **Deadline** | Edits the deadline property and updates the `/vehicle/{vehicleId}/smart-charging-policy` accordingly. If smart charging is disabled, the deadline picker could be disabled too to underline it. | ### Explanation text ![An extracted view focusing on the explanation text sub-component inside of the smart charging control + information component, showing one example in the CONSIDERING state and one example in the PLAN:* state](https://developers.enode.com/images/smart-charging/Day-to-day__Smart_charging_control__information__Explanation_text.png) In the `CONSIDERING` state, it aims to present why a smart charging plan is not yet generated. In any of the `PLAN:*` states, it summarises the key information from the plan details that are most relevant for the current state. The table below exemplifies which combinations of `CONSIDERING` flags and `PLAN:*` states we think you could display unique texts for. It can be read as a hierarchical system from top to bottom, aiming to present the most vital information not covered by other components. It pairs with [vehicle information](https://developers.enode.com/docs/smart-charging/day-to-day#vehicle-information), the [charge control](https://developers.enode.com/docs/smart-charging/day-to-day#charge-control), and the rest of the [smart charging component](https://developers.enode.com/docs/smart-charging/day-to-day#smart-charging-control-information) to paint the complete picture. #### Considering | Key(s) | Description | | --- | --- | | `!consideration.isPluggedIn` | A smart charging plan will be created once your vehicle is charging at a predefined charging location. | | `!consideration.atChargingLocation` | A smart charging plan will be created once your vehicle is charging at a charging location. If you just arrived, please allow the vehicle a few minutes to update its location. | | `!consideration.isCharging` | Your vehicle needs to be charged for a few minutes for us to estimate the required charge time. Please make sure your vehicle is charging. | | `!consideration.hasTimeEstimate` | Monitoring the charge rate to create a smart charging plan. Charging will pause shortly once the plan is ready. | #### Plan | Key(s) | Description | | --- | --- | | `status.state === "PLAN:EXECUTING:OVERRIDDEN"` | Charging now. The smart charging plan has been put on hold. | | `status.state === "PLAN:EXECUTING:OVERRIDDEN"` → `status.state === "PLAN:EXECUTING:STOPPING"` | Charging now. The smart charging plan has been put on hold. | | `status.state === "PLAN:EXECUTING:OVERRIDDEN"` → `status.state === "PLAN:EXECUTING:STOPPED"` | Returned to the smart charging plan. Charging will resume `HH:MM {startAt}` and finish before `HH:MM {estimatedFinishAt}`. | | `status.state === "PLAN:EXECUTING:STOPPING"` | Charging will resume `HH:MM {startAt}` and finish around `HH:MM {estimatedFinishAt}`. | | `status.state === "PLAN:EXECUTING:STOPPED":AWAITING_PRICES` | Awaiting next-day electricity prices before finalizing the smart charging plan. Charging will finish before `HH:MM {deadline}`. | | `status.state === "PLAN:EXECUTING:STOPPED"` | Charging will resume `HH:MM {startAt}` and finish around `HH:MM {estimatedFinishAt}`. | | `status.state === "PLAN:EXECUTING:STARTING"` | Charging will finish around `HH:MM {estimatedFinishAt}`. | | `status.state === "PLAN:EXECUTING:STARTED"` | Charging will finish around `HH:MM {estimatedFinishAt}`. | | `status.state === "PLAN:EXECUTING:FINISHED"` | {% callout title="A note on this state" %} | ### Plan timeline ![An extracted view focusing on the plan timeline sub-component inside of the smart charging control + information component](https://developers.enode.com/images/smart-charging/Day-to-day__Smart_charging_control__information__Plan_timeline.png) Once a smart charging plan is present, and smart charging is in any of the `PLAN:*` states, a timeline is displayed to make it easier to grasp and scan visually. ![An extracted view focusing on the plan timeline sub-component inside of the smart charging control + information component, highlighting four main visual parts: A) charging was paused, B) charging planned to resume, C) charging planned to finish and D) deadline](https://developers.enode.com/images/smart-charging/Day-to-day__Smart_charging_control__information__Plan_timeline_explainer_3.png) The timeline can be constructed from the `plan` object. In this case, the horizontal axis is created dynamically by rounding down from the time charging was paused (`A`) and rounding up from the user-defined deadline (`D`) from the smart charging policy. The charging window is visualized by the planned start (`B`) and stop (`C`) times. | Descriptor | Key(s) | | --- | --- | | `A` **Charging was paused** | `plan.stopConfirmedAt` | | `B` **Charging planned to resume or did resume** | `plan.startConfirmedAt` | | `C` **Charging planned to finish or did finish at** | `plan.estimatedFinishAt || plan.endedAt` | | `D` **Deadline** | `policy.deadline` | ![An extracted view focusing on the plan timeline sub-component inside of the smart charging control + information component, highlighting two visual parts: E) charge plan put on hold via charge now and F) returned to plan](https://developers.enode.com/images/smart-charging/Day-to-day__Smart_charging_control__information__Plan_timeline_explainer_4.png) If the plan has been overridden by the user, this can be constructed by keeping track of the `status.smartOverride` object. | Descriptor | Key(s) | | --- | --- | | `E` **Plan put on hold via charge now** | `status.smartOverride.createdAt` | | `F` **Returned to charge plan** | `status.smartOverride.endedAt` | ![An extracted view focusing on the plan timeline sub-component inside of the smart charging control + information component, visualising a charging progress indicator for planned charging and charging via an external start](https://developers.enode.com/images/smart-charging/Day-to-day__Smart_charging_control__information__Plan_timeline_explainer_5.png) When the vehicle is charging according to the plan or via an override, the charging progress can be visualized by displaying an additional marker. ### Plan details ![An extracted view focusing on the plan details sub-component inside of the smart charging control + information component, in two states: closed (default) and open (showing a table of information)](https://developers.enode.com/images/smart-charging/Day-to-day__Smart_charging_control__information__Plan_details.png) A `Plan details toggle` reveals or hides more details about the plan. Key timestamps are written out to add specificity to the timeline, and further information is exposed. ![An extracted view focusing on the plan details sub-component inside of the smart charging control + information component, highlighting the different pieces of information displayed in the table with labels on the left, and the data values on the right](https://developers.enode.com/images/smart-charging/Day-to-day__Smart_charging_control__information__Plan_details_explainer_3.png) Key details can be pulled or calculated from the `plan` object. | Descriptor | Key(s) | | --- | --- | | `A` **Charging was paused** | `plan.stopConfirmedAt` | | `B` **Charging resumed at or is planned to resume at** | `plan.startConfirmedAt || plan.startAt` | | `C` **Charging did finish at or is planned to finish** | `plan.endedAt || plan.estimatedFinishAt` | | `D` **Charge time or Estimated charge time** | `plan.endedAt - plan.startAt || plan.estimatedFinishedAt - plan.startAt` | | `E` **Estimated savings** | `plan.nonSmartCost - plan.smartCost` | ![An extracted view focusing on the plan details sub-component inside of the smart charging control + information component, showing additional external start information intertwined in the main table](https://developers.enode.com/images/smart-charging/Day-to-day__Smart_charging_control__information__Plan_details_explainer_4.png) If there has been a smart override, details can be pulled or calculated from the `status.smartOverride` object. | Descriptor | Key(s) | | --- | --- | | `F` **Plan put on hold via charge now** | `status.smartOverride.createdAt` | | `G` **Charged outside plan for** | `status.smartOverride.endedAt - status.smartOverride.createdAt` | | `H` **Returned to plan** | `status.smartOverride.endedAt` | ### Finished or failed plans Once a plan reaches any of the `PLAN:ENDED:*` states, smart charging immediately transitions to either the `FULLY_CHARGED` state or the `CONSIDERING` state again. Therefore, this component would reflect the current state's [explanation text](https://developers.enode.com/docs/smart-charging/day-to-day#explanation-text). For more pointers on how to handle [finished](https://developers.enode.com/docs/smart-charging/day-to-day#finished-plans) or [failed](https://developers.enode.com/docs/smart-charging/day-to-day#failed-plans) plan states, please refer to the respective sections below. ### Awaiting price updates ![A view of the smart charging control + information component in an awating price updates state: with a timeline visual that indicates the possible charge window, and some pieces of information left blank](https://developers.enode.com/images/smart-charging/Day-to-day__Smart_charging_control__information__Awaiting_price_data.png) If the vehicle is in the `PLAN:EXECUTING:STOPPED:AWAITING_PRICES` state, the `plan` object will have `null` values (see [price data sources](https://developers.enode.com/docs/smart-charging/states-of-smart-charging#price-data-sources)). Default empty states for the plan details can handle this. The plan timeline can be visualised by outlining the possible charge window range and overlaying the estimated charge time. What we recommend: If you can send push messages to your users, you could consider letting them opt-in to receive an update once prices are published and the smart charging plan is finalized. This can be triggered by observing [webhooks](https://developers.enode.com/docs/webhooks), checking for `PLAN:EXECUTING:STOPPED` in the smart charging plan status. ## Charge control ![A section of the vehicle detail screen focusing on the charge action in the bottom](https://developers.enode.com/images/smart-charging/Day-to-day__Charge_action.png) A contextual button that only shows the charge control available to the user at the moment, if any. Charge controls are available if the vehicle is reachable and is not fully charged. Which specific control type is applicable depends on whether the car is currently charging or not and whether a smart charging plan is active. Once triggered, the [charging status](https://developers.enode.com/docs/smart-charging/day-to-day#charging-status) reflects the result of the action. For example, when charging transitions between states, the action button could be disabled in the state it was transitioning from until the action is completed. | Visual | Key(s) | | --- | --- | | ![A white charge action button with a green icon (lightning with three lines indicating speed) and a green label ("charge now")](https://developers.enode.com/images/smart-charging/Misc__Charge_action__Charge_now.png) | `status.plan != null && !vehicle.chargeState.isCharging` | | ![A white charge action button with a gray icon (arrow pointing left) and a gray label ("return to charge plan")](https://developers.enode.com/images/smart-charging/Misc__Charge_action__Return_to_charge_plan.png) | `status.state = PLAN:EXECUTING:OVERRIDDEN` | ## Finished plans ![The vehicle detail view with an additional component placed in the top, describing the recently finished plan](https://developers.enode.com/images/smart-charging/Day-to-day__Finished_plan_explainer.png) Once a plan is successfully finished, smart charging transitions to `PLAN:ENDED:FINISHED`. Since the plan was successful, the state immediately transitions into the `FULLY_CHARGED`. In this example structure, the [vehicle information](https://developers.enode.com/docs/smart-charging/day-to-day#vehicle-information) components present the current vehicle information and smart charging state. Therefore, a plan summary for the recently finished smart charging plan is presented at the top of the view. To fetch the required data for the summary and subsequently the detail view, you can query the [Smart Charging Plans](https://developers.enode.com/api/reference#getVehiclesVehicleidSmartchargingplans) endpoint. ![An extracted view of the finished plan component, with a button stating 'View' and three main pieces of information highlighted: A) ended at time, B) charged for and C) estimated savings](https://developers.enode.com/images/smart-charging/Day-to-day__Finished_plan_notification_explainer.png) The summary includes a title, message, and an entrance to a detailed plan view. Both the title and summary use dynamic values from the finished plan object. | Descriptor | Key(s) | | --- | --- | | `A` **Ended-at time** | `plan.endedAt` | | `B` **Charged for** | `plan.startConfirmedAt - plan.endedAt` | | `C` **Estimated savings** | `plan.nonSmartCost - plan.smartCost` | ![A smart charging plan detail view, with the smart charging information component filled with details about the recently finished plan](https://developers.enode.com/images/smart-charging/Day-to-day__Finished_plan_detail_view.png) The detail view for the finished smart charging plan can be constructed by reusing parts of the smart charging component used in the vehicle detail view. After navigating back from the detail view, the previous plan summary could either be dismissed or remain in view for a certain amount of time. What we recommend: If you can send push messages to your users, consider letting them opt-in to receive this summary as a push message. A note on aggregating finished plans: An aggregate of finished smart charging plans can be presented using our `/statistics/charging` endpoint. This will be covered in more detail in an upcoming guide. Until then, please refer to our [API reference](https://developers.enode.com/api/reference#getStatisticsCharging). ## Failed plans ![The vehicle detail view with an additional component placed in the top, describing the recently failed plan](https://developers.enode.com/images/smart-charging/Day-to-day__Failed_plan_explainer.png) Failed plans end in any other `PLAN:ENDED:*` states before immediately transitioning into either `CONSIDERING` or `FULLY_CHARGED`. Failed plans utilize a similar mechanism and structure to how [finished plans](https://developers.enode.com/docs/smart-charging/day-to-day#finished-plans) are handled. ![An extracted view of the finished plan component, with a button stating 'OK' and two main pieces of information highlighted: A) ended at time and B) reason](https://developers.enode.com/images/smart-charging/Day-to-day__Failed_plan_notification_explainer.png) The previous plan failure component consists of a title, message, and a button to dismiss it. The title states the plan was aborted, including a timestamp of when it was aborted (`A`). The timestamp refers to the `endedAt` of the failed plan. The failure reason (`B`) is contextual and based on which `PLAN:ENDED:*` state the plan ended with and whether a `failureCondition` is present. Since the _previous_ plan failure is presented together with the _current_ vehicle information and smart charging state, the reasons are kept brief, as the totality of the information should paint a clear picture. | State | Text | | --- | --- | | `status.state = PLAN:ENDED:UNPLUGGED` | Your vehicle was unplugged | | `status.state = PLAN:ENDED:DEADLINE_CHANGED` | You changed your deadline | | `status.state = PLAN:ENDED:DISABLED` | You disabled smart charging | | `status.state = PLAN:ENDED:FAILED && plan.failureCondition = STOP_FAILED` | We could not reach the vehicle, and charging could not be paused | | `status.state = PLAN:ENDED:FAILED && plan.failureCondition = START_FAILED` | We could not reach the vehicle, and charging could not be resumed | | `status.state = PLAN:ENDED:FINISHED && plan.failureCondition = FINISHED_LATE` | {% callout title="What we recommend" %} | If you are able to send push messages to your users, you could consider notifying them of `status.state = PLAN:ENDED:FAILED && plan.failureCondition = STOP_FAILED` and `status.state = PLAN:ENDED:FAILED && plan.failureCondition = START_FAILED`. Additionally, you could consider sending a push message for `status.state = PLAN:EXECUTING:START_FAILED` to notify them of potential connectivity or charger issues earlier in the plan, prompting your user to try plugging the vehicle in and out. ## Putting it together ![A big summary view with 26 examples of the vehicle detail view with different states of all of the different components](https://developers.enode.com/images/smart-charging/Putting_it_together_(big).png) Putting it all together, this [example structure and system](https://developers.enode.com/docs/smart-charging/day-to-day#example-system-and-structure) highlight how the [key events and questions](https://developers.enode.com/docs/smart-charging/day-to-day#key-events-and-questions) could be used to build out a smart charging experience. Refer to this file for an overview of how this system handles the key `CONSIDERATION` and `PLAN:*` states. A note on this reference: The mentioned reference is a partial overview of all possible states. Instead, it highlights the most important aspects to keep in mind when building and designing a smart charging experience with our APIs, giving you a good starting point for your process.