Industry Insights
Cotati, CA - Transitioning to AMI: Removing the Guesswork
Cotati, California is a bedroom community of 7,500 residents located in Sonoma County about 45 miles north of San Francisco. As a progressive, forward thinking municipality, the city has a long standing ethic of water efficiency and in 2011 contracted with WaterSmart Software to deploy a water report program to better educate residence on their water spend and ways to become increasingly efficient to save money. Along with this engagement program WaterSmart provided Cotati with a customer portal where end-users could view their consumption and better understand their water use. While this was a great benefit to customers, the city was still manually reading water meters every other month. This meant that information that was presented in the water reports and portal was only updated every 60 days, which limited the level of engagement with end-use customers.
The city remained interested in increasing customer engagement and further improving water efficiency as a historic five year drought struck California in the summer of 2011. In June of 2014 the city signed a performance contract with Siemens Industry, Inc. which financed a series of upgrades to city infrastructure including the water metering system. A performance contract pays for a group of upgrades for a city and the 'loan' for the capital upgrades is repaid from savings the city realizes from those efficiency investments. The performance contractor, Siemens in this case, guarantees a certain level of savings so the city knows exactly how much money will be repaid over the course of the multi-year agreement. While the performance contract also provided financing for a city lighting upgrade, the portion allocated to water system improvements had 3 primary objectives:
Cotati chose to implement Advanced Metering Infrastructure (AMI) and selected Itron, Inc. as the vendor for the water meter and network upgrades. Deployment of the AMI network was completed in mid-2016 and the city then worked with Itron to integrate the new available hourly interval data with the WaterSmart platform. This gave the city and residents powerful new capabilities including notifications for possible leaks and more detailed consumption analytics to help the city more effectively manage resources. In a recent interview, Cotati Public Works Director, Craig Scott, talked about his experience with the new Itron AMI system and the WaterSmart platform.
One of the key takeaways for Mr. Scott, was how the WaterSmart customer portal acted as a bridge to the city's new AMI system. The portal had been deployed for several years prior to the AMI roll-out, but as hourly consumption data became available from the Itron system, that information was seamlessly offered to end-use customers through the portal. "We had the WaterSmart portal, but information was one data point every two months. With the Itron technology we kept that portal but now the information is more real-time," explained Mr. Scott. "What we saw was a tremendous increase in the number of customers that signed up for that feature." The availability of hourly data enabled the WaterSmart system to detect unusual usage patterns and alert customers to possible leaks. The more frequent data feed also provided an incentive for more customers to register for access to the consumption information.
The combination of the technologies is helping the utility reduce costs by avoiding the need to manually read meters while getting real-time visibility into possible system leaks. On the customer side, users are more engaged, registering for leak notifications and self-resolving many of their own questions, thus helping reduce call volumes for the city's customer service representatives. "It's hard to explain to people what happens when you start using new technology." said Mr. Scott of the new system. "An example is the shift going from a single monitor to a dual monitor with your desktop computer - you're singing the praises of how did I ever live with one monitor - with the AMI system, it's like that."
Ultimately, reducing costs and improving service quality is the goal of every water supplier, and the City of Cotati is a great example of how regular information, proactive outreach, and technology can help demonstrate the value of services provided by the utility. "We can show the data which is a huge motivator for people," concludes Mr. Scott. "They can see the reasoning behind it and it's not just guesswork."
To learn more about Cotati and their use of the Itron and WaterSmart technologies, take a look at our customer testimonial video: Bridge to AMI: Removing the Guesswork.
The city remained interested in increasing customer engagement and further improving water efficiency as a historic five year drought struck California in the summer of 2011. In June of 2014 the city signed a performance contract with Siemens Industry, Inc. which financed a series of upgrades to city infrastructure including the water metering system. A performance contract pays for a group of upgrades for a city and the 'loan' for the capital upgrades is repaid from savings the city realizes from those efficiency investments. The performance contractor, Siemens in this case, guarantees a certain level of savings so the city knows exactly how much money will be repaid over the course of the multi-year agreement. While the performance contract also provided financing for a city lighting upgrade, the portion allocated to water system improvements had 3 primary objectives:
- Minimize 'unaccounted for water'
- Provide customers with better information
- Offer proactive management of the water distribution system
Cotati chose to implement Advanced Metering Infrastructure (AMI) and selected Itron, Inc. as the vendor for the water meter and network upgrades. Deployment of the AMI network was completed in mid-2016 and the city then worked with Itron to integrate the new available hourly interval data with the WaterSmart platform. This gave the city and residents powerful new capabilities including notifications for possible leaks and more detailed consumption analytics to help the city more effectively manage resources. In a recent interview, Cotati Public Works Director, Craig Scott, talked about his experience with the new Itron AMI system and the WaterSmart platform.
One of the key takeaways for Mr. Scott, was how the WaterSmart customer portal acted as a bridge to the city's new AMI system. The portal had been deployed for several years prior to the AMI roll-out, but as hourly consumption data became available from the Itron system, that information was seamlessly offered to end-use customers through the portal. "We had the WaterSmart portal, but information was one data point every two months. With the Itron technology we kept that portal but now the information is more real-time," explained Mr. Scott. "What we saw was a tremendous increase in the number of customers that signed up for that feature." The availability of hourly data enabled the WaterSmart system to detect unusual usage patterns and alert customers to possible leaks. The more frequent data feed also provided an incentive for more customers to register for access to the consumption information.
The combination of the technologies is helping the utility reduce costs by avoiding the need to manually read meters while getting real-time visibility into possible system leaks. On the customer side, users are more engaged, registering for leak notifications and self-resolving many of their own questions, thus helping reduce call volumes for the city's customer service representatives. "It's hard to explain to people what happens when you start using new technology." said Mr. Scott of the new system. "An example is the shift going from a single monitor to a dual monitor with your desktop computer - you're singing the praises of how did I ever live with one monitor - with the AMI system, it's like that."
Ultimately, reducing costs and improving service quality is the goal of every water supplier, and the City of Cotati is a great example of how regular information, proactive outreach, and technology can help demonstrate the value of services provided by the utility. "We can show the data which is a huge motivator for people," concludes Mr. Scott. "They can see the reasoning behind it and it's not just guesswork."
To learn more about Cotati and their use of the Itron and WaterSmart technologies, take a look at our customer testimonial video: Bridge to AMI: Removing the Guesswork.
Kesalahan terjadi ketika Memproses Template.
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>