Itron Idea Labs
Itron Riva Streetlights: Sunglasses On!
You might want to wear your sunglasses while reading the following...
It all started in January 2017, at the Itron Sales Conference, held in Palm Springs, California. Philip Mezey, Itron President and Chief Executive Officer, told the enthusiastic gathering how Itron was leading the industry in three areas: Electricity, Gas, and Water.
Philip then mentioned a fourth area where Itron would become a industry leader: Streetlights. Throughout the world, streetlights are being upgraded to offer edge intelligence and control, offering network-based functionality that is similar to that offered by Itron's existing line of electric, gas, and water meters.
Itron Riva Dev Mini board
Right after the January meeting, a team at Itron Idea Labs got to work. The team integrated the brand new Itron Riva Dev Mini board (from another Itron Idea Labs project) with a Neptun Streetlight Controller. Neptun is a third party vendor of streetlights, and was eager to partner with Itron to get their streetlights onto the Itron Riva ACT (Adaptive Communications Technology) network.
It is now May 2017, and the finished product is headed to TECO, an Itron utility customer, for a pilot. Importantly, the testing will show interoperability between Itron Riva Meters and Itron Riva Streetlights. The Itron Riva Streetlights are also being sent to Avista, another Itron utility customer, for testing in their streetlight pilot -- they too will test the interoperability between Itron Riva Meters and Itron Riva Streetlights.
Itron Riva streetlight
How could the Itron Idea Labs team accomplish so much so quickly? The answer is by building upon existing Itron Riva technologies!
Itron Riva iSOM
First, the streetlight hardware builds upon Itron Riva iSOM (Itron System on a Module), the same module used in Itron Riva electric meters, Itron Riva SmartNICs, and Itron Riva CAMs (CGR ACT Modules). This module contains a powerful ARM-based processor (same type of processor as used in your cell phone), 128MB of RAM, and 256 MB of flash storage.
Second, the firmware builds upon Itron Riva MUSE (Meter Usage Software Environment), an Linux-based environment offering utility-strength robustness and reliability. A key benefit of MUSE is that Itron Riva applications can run directly on the device -- edge intelligence in action!
Itron Riva Dev Mini inside the streetlight
Third, the networking stack builds upon Itron Riva ACT (Adaptive Communications Technology), the same networking stack used by Itron Riva electric, gas and water meters. The result? Itron Riva Streetlight can use the same set of networking software as Itron Riva Meters --- for example, the Cisco Field Network Director (FND) can be used with Itron Riva Streetlight for network management.
Itron Riva Streetlights registered in Field Network Director (FND)
In summary, the Itron competitive advantage is clear: Itron Riva is compatible with Electricity, Gas, Water, and... (sunglasses on!) Streetlights!
Read our full press release: Itron Releases Next Generation Itron Riva™ Development Kit for Faster Path to Innovation.
It all started in January 2017, at the Itron Sales Conference, held in Palm Springs, California. Philip Mezey, Itron President and Chief Executive Officer, told the enthusiastic gathering how Itron was leading the industry in three areas: Electricity, Gas, and Water.
Philip then mentioned a fourth area where Itron would become a industry leader: Streetlights. Throughout the world, streetlights are being upgraded to offer edge intelligence and control, offering network-based functionality that is similar to that offered by Itron's existing line of electric, gas, and water meters.
Itron Riva Dev Mini board
Right after the January meeting, a team at Itron Idea Labs got to work. The team integrated the brand new Itron Riva Dev Mini board (from another Itron Idea Labs project) with a Neptun Streetlight Controller. Neptun is a third party vendor of streetlights, and was eager to partner with Itron to get their streetlights onto the Itron Riva ACT (Adaptive Communications Technology) network.
It is now May 2017, and the finished product is headed to TECO, an Itron utility customer, for a pilot. Importantly, the testing will show interoperability between Itron Riva Meters and Itron Riva Streetlights. The Itron Riva Streetlights are also being sent to Avista, another Itron utility customer, for testing in their streetlight pilot -- they too will test the interoperability between Itron Riva Meters and Itron Riva Streetlights.
Itron Riva streetlight
How could the Itron Idea Labs team accomplish so much so quickly? The answer is by building upon existing Itron Riva technologies!
Itron Riva iSOM
First, the streetlight hardware builds upon Itron Riva iSOM (Itron System on a Module), the same module used in Itron Riva electric meters, Itron Riva SmartNICs, and Itron Riva CAMs (CGR ACT Modules). This module contains a powerful ARM-based processor (same type of processor as used in your cell phone), 128MB of RAM, and 256 MB of flash storage.
Second, the firmware builds upon Itron Riva MUSE (Meter Usage Software Environment), an Linux-based environment offering utility-strength robustness and reliability. A key benefit of MUSE is that Itron Riva applications can run directly on the device -- edge intelligence in action!
Itron Riva Dev Mini inside the streetlight
Third, the networking stack builds upon Itron Riva ACT (Adaptive Communications Technology), the same networking stack used by Itron Riva electric, gas and water meters. The result? Itron Riva Streetlight can use the same set of networking software as Itron Riva Meters --- for example, the Cisco Field Network Director (FND) can be used with Itron Riva Streetlight for network management.
Itron Riva Streetlights registered in Field Network Director (FND)
In summary, the Itron competitive advantage is clear: Itron Riva is compatible with Electricity, Gas, Water, and... (sunglasses on!) Streetlights!
Read our full press release: Itron Releases Next Generation Itron Riva™ Development Kit for Faster Path to Innovation.
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>