Industry Insights
Where are They Now: City of North Miami Beach
The City of North Miami Beach, Florida, is strategically located midway between Miami and Ft. Lauderdale International Airports and is the ideal location to live, work, learn, play and enjoy. In an ongoing quest to provide superior services for its residents, the City of North Miami Beach takes pride in being an early adopter of technology, especially when it comes to water.
A successful pilot program extends into a long-standing partnership
The City of North Miami Beach (NMB) Water provides reliable, high-quality water and sewer collection to more than 175,000 residents while protecting and preserving the environment. For years, NMB Water relied on traditional walk-up, manual meter readings which took three months to be completed in entirety. Additionally, leak detection survey services took up to 18 months to complete. As a result, NMB Water staff were engaged in time-intensive activities continually across the city’s 25-square-mile service territory.
Knowing there had to be a better way, NMB Water searched for alternative ways to maintain its 550-mile distribution system. Karim Rossy, the infrastructure development manager for the City of North Miami Beach, explained, “After a competitive pilot, it was evident Itron’s solution and vision best suited North Miami Beach’s long-term strategy to expand services beyond meter reading.” Rossy was right, and the initial pilot expanded into a project that reaped impressive results for the city.
After the 2008 pilot program, the City of North Miami Beach deployed Itron’s advanced metering infrastructure (AMI) solution in 2014. The solution was equipped with leak sensor technology and cloud-based analytics. The initial deployment was completed in 2016 and included 33,000 new electronic water meters and 11,000 acoustic leak sensors. Today, the city supports 10,000+ sensors which cover approximately every 1 in 3 meters.
Intelligent connectivity at the edge enables real-time data on customer usage
NMB learned several lessons during the implementation including that there were meters who were just estimating water use, non-working meters or slow read meters. As a result, there was some customer shock in the new meter readings and confidence had to be built for the new system. However, one of the immediate benefits of Itron’s AMI system was getting more accurate meter reads and the instantaneous creation of bills. This allowed the City of North Miami Beach to go from a quarterly to a monthly billing system without needing to increase staff.
Another benefit was being able to view individual consumption data via a secure customer web portal. Customers can easily view their usage to support conservation efforts or plan for upcoming bills, and it’s proven to be an invaluable resource for NMB Water’s customer service team.
Before the AMI solution, NMB Water’s customer service reps only had a generic script to rely on if a customer called with questions about changes to a bill. They had no specific details surrounding water consumption, only a final water reading. Representatives can now quickly pull up consumption data for individual customers and point out when and how much water was used to help identify any anomalies. A one-off spike in usage on a weekend may remind a customer that they filled their pool, or an unusual pattern could point to a leak.
Proactively identifying leaks drives water conservation efforts
Proactively identifying and preventing large leaks is incredibly important. In North America alone, it’s estimated that water utilities lose between 20%-50% of water in leaky aging pipes before it reaches their customers.
Large leaks are often visible, but that is not always the case for smaller leaks. Consumption data can connect the dots and help identify a running toilet or a leak in the service line from the meter to the house. For example, water usage should be pretty low at 3 am so continuous usage throughout the night might be a sign of a problem. Having the data to identify unusual patterns makes it possible to proactively identify a leak before it becomes a significant problem.
The benefits of leak sensors have been so great that Rossy says, “We love our leak sensors and recommend everyone introduce them as part of their AMI system.”
Itron’s system proved particularly useful during Hurricane Irma in 2017 – a devastating, slow-moving storm. NMB experienced over 50 water line and service line breaks due to trees being uprooted during the storm. Yet, many of these breaks came in the days that followed the storm and some were not visible. Itron’s technology allowed NMB Water to pinpoint the problems and confirm that repairs were successful.
Looking toward the future
Itron and the City of North Miami Beach continue to work closely to support the modernization of its water meters and make the best use of the data collected. As the city looks at what is next, maintenance of longer-standing sensors and the addition of automatic shut-off valves for some customers are on their radar.
Before its work with Itron, the City of North Miami Beach looked toward other utilities to see what was working. They now hope they can be an inspiration for other cities searching for ways to improve the delivery of services, reduce cost, and expand conservation efforts – something they were able to do by embracing an intelligently connected metering system.
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>