Industry Insights
From Data to Impact: An Integrated Approach to EV Charging
Imagine a future where electric vehicles (EVs) not only reduce emissions but also enhance grid stability, save consumers money and provide utilities with the data they need to optimize energy distribution. This future is already taking shape through managed charging—a modern, integrated approach that’s transforming how we think about energy management. At the forefront of this innovation is Duke Energy Florida, a utility and Itron customer whose behavioral managed EV charging program is leading the way in demonstrating how smart, data-driven strategies can benefit both utilities and their communities.
Understanding Behavioral Managed EV Charging
Behavioral managed EV charging is a smart charging strategy that adapts to the behavior and preferences of EV owners to optimize charging schedules. Unlike traditional methods with fixed schedules or time-of-use rates, this approach considers vehicle usage patterns, energy demand and cost-saving opportunities to tailor charging times.
Managed charging offers several benefits for EV owners:
- Flexibility and Control. By accommodating the driver's preferences and daily routines, the system ensures the vehicle is ready when needed, eliminating the need for manual intervention and ensuring a seamless charging experience.
- Reduced Electricity Costs. By leveraging real-time pricing and grid conditions, the system can schedule charging during periods of low demand or lower electricity rates. This not only saves money for the owner but also helps balance the overall electricity grid and reduce strain during peak hours.
- Improved Grid Reliability. By balancing load, managed EV charging reduces the risk of blackouts and enhances the overall stability of the electric grid.
- Real-Time Data Collection and Predictive Analytics. Managed charging programs collect valuable data on charging patterns, enabling utilities to make informed decisions about energy distribution and infrastructure management. This data can also be used to predict future energy demand and optimize grid operations, ensuring better resource allocation.
- Support for Public Charging Infrastructure. Utilities can use insights from managed charging to strategically plan and deploy charging stations, improving accessibility for EV drivers.
Duke Energy Florida’s Approach to Behavioral Managed EV Charging
According to the Department of Energy, Florida ranks as one of the top three U.S. states in terms of (EV) ownership. At the end of 2022, Florida had 167,999 registered EVs, which is projected to exceed 3.6 million by 2032. To address the increase in EV ownership, Duke Energy Florida, which supplies electricity to 1.9 million customers across its service territory, collaborated with Itron to design and deploy a four-year behavioral managed EV charging program.
The goal of the program was to shift residential EV charging from peak periods to off-peak, reducing utility’s system peak demand and the associated strain on the low-voltage distribution grid. Leveraging Itron’s DER Optimizer solution, Duke Energy Florida offered an incentivized Off-Peak Charging Credit Program to any EV owner in their service territory with a Level 2 charger. In addition to EV telematics and advanced metering infrastructure load disaggregation, the DER Optimizer handled all aspects of customer and vehicle enrollment, charging session monitoring, incentive tracking, customer support and reporting.
Since the launch of Duke Energy Florida’s Program in January 2022, EV charging among program participants has accounted for over 10.0 GWh of electricity consumption as of July 2024. Within that total charging consumption, less than 5% of the charging has occurred during the utility’s peak demand periods. More than 4,000 vehicles have enrolled in the program to date, resulting in a 95% reduction of on-peak EV charging.
The Future of Electric Vehicle Charging
The shift to electrified transportation plays a pivotal role in creating a better-connected, more resourceful world. At Itron, we recognize the importance of behavioral managed charging in supporting a successful transition. Our solutions enable utilities and grid operators to implement effective managed charging programs, ensuring seamless EV integration into the grid while maximizing benefits for consumers and the environment.
To get the full overview of Duke Energy Florida’s successful deployment and the utility’s next steps with managed EV charging, read our recently published case study.
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> authorContent.contentFields [in template "44616#44647#114455" at line 9, column 17]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: contentFields = authorContent.content... [in template "44616#44647#114455" at line 9, column 1]
----
1<#assign
2 webContentData = jsonFactoryUtil.createJSONObject(author.getData())
3 classPK = webContentData.classPK
4/>
5
6<#assign
7authorContent = restClient.get("/headless-delivery/v1.0/structured-contents/" + classPK + "?fields=contentFields%2CfriendlyUrlPath%2CtaxonomyCategoryBriefs")
8contentFields = authorContent.contentFields
9categories=authorContent.taxonomyCategoryBriefs
10authorContentData = jsonFactoryUtil.createJSONObject(authorContent)
11friendlyURL = authorContentData.friendlyUrlPath
12authorCategoryId = "0"
13/>
14
15<#list contentFields as contentField >
16 <#assign
17 contentFieldData = jsonFactoryUtil.createJSONObject(contentField)
18 name = contentField.name
19 />
20 <#if name == 'authorImage'>
21 <#if (contentField.contentFieldValue.image)??>
22 <#assign authorImageURL = contentField.contentFieldValue.image.contentUrl />
23 </#if>
24 </#if>
25 <#if name == 'authorName'>
26 <#assign authorName = contentField.contentFieldValue.data />
27 <#list categories as category >
28 <#if authorName == category.taxonomyCategoryName>
29 <#assign authorCategoryId = category.taxonomyCategoryId />
30 </#if>
31 </#list>
32 </#if>
33 <#if name == 'authorDescription'>
34 <#assign authorDescription = contentField.contentFieldValue.data />
35
36 </#if>
37
38 <#if name == 'authorJobTitle'>
39 <#assign authorJobTitle = contentField.contentFieldValue.data />
40
41 </#if>
42
43</#list>
44
45<div class="blog-author-info">
46 <#if authorImageURL??>
47 <img class="blog-author-img" id="author-image" src="${authorImageURL}" alt="" />
48 </#if>
49 <#if authorName??>
50 <#if authorName != "">
51 <p class="blog-author-name">By <a id="author-detail-page" href="/w/${friendlyURL}?filter_category_552298=${authorCategoryId}"><span id="author-full-name">${authorName}</span></a></p>
52 <hr />
53 </#if>
54 </#if>
55 <#if authorJobTitle??>
56 <#if authorJobTitle != "">
57 <p class="blog-author-title" id="author-job-title" >${authorJobTitle}</p>
58 <hr />
59 </#if>
60 </#if>
61 <#if authorDescription??>
62 <#if authorDescription != "" && authorDescription != "null" >
63 <p class="blog-author-desc" id="author-job-desc">${authorDescription}</p>
64 <hr />
65 </#if>
66 </#if>
67</div>
The following has evaluated to null or missing: ==> authorContent.contentFields [in template "44616#44647#114455" at line 9, column 17] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: contentFields = authorContent.content... [in template "44616#44647#114455" at line 9, column 1] ----
1<#assign
2 webContentData = jsonFactoryUtil.createJSONObject(author.getData())
3 classPK = webContentData.classPK
4/>
5
6<#assign
7authorContent = restClient.get("/headless-delivery/v1.0/structured-contents/" + classPK + "?fields=contentFields%2CfriendlyUrlPath%2CtaxonomyCategoryBriefs")
8contentFields = authorContent.contentFields
9categories=authorContent.taxonomyCategoryBriefs
10authorContentData = jsonFactoryUtil.createJSONObject(authorContent)
11friendlyURL = authorContentData.friendlyUrlPath
12authorCategoryId = "0"
13/>
14
15<#list contentFields as contentField >
16 <#assign
17 contentFieldData = jsonFactoryUtil.createJSONObject(contentField)
18 name = contentField.name
19 />
20 <#if name == 'authorImage'>
21 <#if (contentField.contentFieldValue.image)??>
22 <#assign authorImageURL = contentField.contentFieldValue.image.contentUrl />
23 </#if>
24 </#if>
25 <#if name == 'authorName'>
26 <#assign authorName = contentField.contentFieldValue.data />
27 <#list categories as category >
28 <#if authorName == category.taxonomyCategoryName>
29 <#assign authorCategoryId = category.taxonomyCategoryId />
30 </#if>
31 </#list>
32 </#if>
33 <#if name == 'authorDescription'>
34 <#assign authorDescription = contentField.contentFieldValue.data />
35
36 </#if>
37
38 <#if name == 'authorJobTitle'>
39 <#assign authorJobTitle = contentField.contentFieldValue.data />
40
41 </#if>
42
43</#list>
44
45<div class="blog-author-info">
46 <#if authorImageURL??>
47 <img class="blog-author-img" id="author-image" src="${authorImageURL}" alt="" />
48 </#if>
49 <#if authorName??>
50 <#if authorName != "">
51 <p class="blog-author-name">By <a id="author-detail-page" href="/w/${friendlyURL}?filter_category_552298=${authorCategoryId}"><span id="author-full-name">${authorName}</span></a></p>
52 <hr />
53 </#if>
54 </#if>
55 <#if authorJobTitle??>
56 <#if authorJobTitle != "">
57 <p class="blog-author-title" id="author-job-title" >${authorJobTitle}</p>
58 <hr />
59 </#if>
60 </#if>
61 <#if authorDescription??>
62 <#if authorDescription != "" && authorDescription != "null" >
63 <p class="blog-author-desc" id="author-job-desc">${authorDescription}</p>
64 <hr />
65 </#if>
66 </#if>
67</div>