物聯(lián)網(wǎng)(IoT)應(yīng)用程序的設(shè)計(jì)有望產(chǎn)生大量數(shù)據(jù),以便通過(guò)可操作的信息填充云。然而,對(duì)于大多數(shù)物聯(lián)網(wǎng)開(kāi)發(fā)人員而言,將數(shù)據(jù)流式傳輸?shù)皆撇⒗斫馑枰獙<壹?jí)的數(shù)據(jù)交換和分析技術(shù)理解。
沒(méi)有簡(jiǎn)單的方法可以實(shí)時(shí)深入分析數(shù)據(jù)流消息來(lái)源,物聯(lián)網(wǎng)開(kāi)發(fā)人員可能會(huì)發(fā)現(xiàn)自己很難理解數(shù)據(jù)質(zhì)量問(wèn)題對(duì)其應(yīng)用程序整體功能性能的影響。
為了幫助解決這個(gè)問(wèn)題,Initial State Technologies提供了一種開(kāi)發(fā)人員可以輕松使用的分析服務(wù)深入了解物聯(lián)網(wǎng)設(shè)備數(shù)據(jù)。然后,他們可以將其轉(zhuǎn)換為可在桌面或移動(dòng)設(shè)備上訪問(wèn)的有用信息。
對(duì)嵌入式分析的需求
對(duì)于任何物聯(lián)網(wǎng)應(yīng)用,其用戶感興趣的產(chǎn)品是從附加到個(gè)人,設(shè)備或結(jié)構(gòu)的傳感器節(jié)點(diǎn)生成的數(shù)據(jù)流導(dǎo)出的可操作信息。在物聯(lián)網(wǎng)開(kāi)發(fā)人員面臨的挑戰(zhàn)中,對(duì)這些數(shù)據(jù)流的驗(yàn)證需要能夠可視化和測(cè)量數(shù)據(jù)本身。
為此,物聯(lián)網(wǎng)應(yīng)用程序開(kāi)發(fā)人員可以利用越來(lái)越多的基于云的服務(wù)來(lái)將原始數(shù)據(jù)轉(zhuǎn)換為所需的結(jié)果。在這些數(shù)據(jù)處理工作流程中,數(shù)據(jù)分析為人類提供了一種關(guān)鍵能力,使他們能夠了解數(shù)據(jù)的性質(zhì),以確保其質(zhì)量,并識(shí)別工作流程中無(wú)法預(yù)料的有用事件或異常。
對(duì)于開(kāi)發(fā)人員,物聯(lián)網(wǎng)數(shù)據(jù)分析帶來(lái)了一系列全新的需求,超出了Web開(kāi)發(fā)人員熟悉的需求。雖然后者通常需要離線批處理大型日志文件,但物聯(lián)網(wǎng)數(shù)據(jù)分析將大型數(shù)據(jù)存儲(chǔ)庫(kù)(“大數(shù)據(jù)”)與“快速數(shù)據(jù)”相結(jié)合。為了有效,物聯(lián)網(wǎng)應(yīng)用程序必須實(shí)時(shí)處理大量數(shù)據(jù)流以對(duì)現(xiàn)實(shí)事件做出反應(yīng)。
企業(yè)級(jí)概念(如lambda架構(gòu)和Apache Storm和Spark等工具)已經(jīng)出現(xiàn),為將數(shù)據(jù)分析構(gòu)建到大規(guī)模物聯(lián)網(wǎng)應(yīng)用程序的工作流程中。但是,對(duì)于大多數(shù)開(kāi)發(fā)組織而言,構(gòu)建這些平臺(tái)和創(chuàng)建自己的數(shù)據(jù)分析解決方案所需的時(shí)間和資源充其量只能分散注意力。因此,物聯(lián)網(wǎng)開(kāi)發(fā)人員可能會(huì)忽略數(shù)據(jù)分析,期望數(shù)據(jù)源是“已知良好”的資源,而后端代碼將捕獲任何問(wèn)題。
事實(shí)上,物聯(lián)網(wǎng)應(yīng)用程序開(kāi)發(fā)人員面臨越來(lái)越多的脫節(jié)可用數(shù)據(jù)量與輕松部署的分析功能之間的關(guān)系,用于調(diào)試物聯(lián)網(wǎng)應(yīng)用程序以及向用戶提供有用信息。
初始狀態(tài)通過(guò)軟件即服務(wù)(SaaS)解決了這一重要差距)解決方案使物聯(lián)網(wǎng)開(kāi)發(fā)人員可以在任何應(yīng)用程序中部署實(shí)時(shí)分析。通過(guò)僅添加幾行代碼,開(kāi)發(fā)人員(或客戶)可以使用包含一組特定流或事件的圖形顯示的可自定義儀表板來(lái)顯示物聯(lián)網(wǎng)數(shù)據(jù)。
探索數(shù)據(jù)流的詳細(xì)信息,Initial States'Waves工具形成一個(gè)交互式波形查看器,允許用戶放大數(shù)據(jù)流。該公司的Lines工具用作多波形分析儀。與其頂級(jí)前身一樣,這款基于云的工具可讓開(kāi)發(fā)人員實(shí)時(shí)檢查,比較和測(cè)量多個(gè)信號(hào)波形(圖1)。

圖1:初始狀態(tài)平臺(tái)以多種格式呈現(xiàn)數(shù)據(jù)流,包括分析復(fù)雜物聯(lián)網(wǎng)數(shù)據(jù)所需的多波形顯示。 (圖片來(lái)源:Initial State Technologies)
SaaS解決方案
與任何SaaS軟件包一樣,Initial State維護(hù)云中的服務(wù)資源,并提供簡(jiǎn)單的流媒體應(yīng)用程序編程接口(API)數(shù)據(jù)。開(kāi)發(fā)人員使用傳統(tǒng)的Web GET和POST協(xié)議將數(shù)據(jù)流式傳輸?shù)健笆录鎯?chǔ)桶”,后者在初始狀態(tài)平臺(tái)中提供存儲(chǔ)資源。
開(kāi)發(fā)人員可以使用簡(jiǎn)單的GET請(qǐng)求來(lái)創(chuàng)建存儲(chǔ)桶:
<跨度>復(fù)制 <代碼>
https://groker.initialstate.com/api/buckets?accessKey=myAccessKey&bucketKey=myBucketKey&bucketName=myBucketName
正如此請(qǐng)求所示,每個(gè)存儲(chǔ)桶都是使用開(kāi)發(fā)人員的初始狀態(tài)私有訪問(wèn)密鑰(由注冊(cè)時(shí)的初始狀態(tài)提供)和唯一存儲(chǔ)桶密鑰(由創(chuàng)建存儲(chǔ)桶的工程師提供)的組合來(lái)標(biāo)識(shí)的。該公司還為企業(yè)客戶提供更細(xì)粒度的身份驗(yàn)證級(jí)別。在創(chuàng)建事件存儲(chǔ)桶時(shí),開(kāi)發(fā)人員還可以提供可選的存儲(chǔ)桶名稱,稍后用于在各種初始狀態(tài)圖形顯示中識(shí)別來(lái)自該存儲(chǔ)桶的數(shù)據(jù)。
初始狀態(tài)將數(shù)據(jù)存儲(chǔ)為鍵:值對(duì)。因此,開(kāi)發(fā)人員可以使用相同類型的GET請(qǐng)求來(lái)存儲(chǔ)多個(gè)事件(例如,使用鍵eventKeyN和值eventValueN):
復(fù)制
https://groker.initialstate.com/api/events?accessKey=myAccessKey&bucketKey=myBucketKey&eventKey0=eventValue0&eventKey1=eventValue1&eventKey2=eventValue2
合并物聯(lián)網(wǎng)數(shù)據(jù)很簡(jiǎn)單:開(kāi)發(fā)人員可以通過(guò)將數(shù)據(jù)從每個(gè)源流式傳輸?shù)较嗤拇鎯?chǔ)桶來(lái)組合來(lái)自不同來(lái)源的數(shù)據(jù),這些存儲(chǔ)桶由accessKey和bucketKey的全局唯一組合標(biāo)識(shí)。
開(kāi)發(fā)人員還可以使用常用實(shí)用程序創(chuàng)建存儲(chǔ)桶和流數(shù)據(jù)作為curl發(fā)出POST請(qǐng)求。在這種情況下,身份驗(yàn)證密鑰(accessKey和bucketKey)在請(qǐng)求標(biāo)頭中傳遞,數(shù)據(jù)鍵:值對(duì)在POST主體中以JSON格式傳遞,如下所示:
復(fù)制 <代碼>
https://groker.initialstate.com/api/events
內(nèi)容類型:應(yīng)用/JSON
X-IS-ACCESSKEY:myAccessKey
X-IS-BucketKey:myBucketKey
接受版本:?0
[
{
“鍵“:”溫度“,
“value”:“1”,
“epoch”:1419876021.778477
},
{
“key” :“溫度”,
“值”:“2”,
“epoch”:1419876022.778477
}
]
正如此POST請(qǐng)求所示,來(lái)自單個(gè)傳感器(例如溫度)的多個(gè)數(shù)據(jù)實(shí)例用相同的鍵表示。紀(jì)元值是標(biāo)準(zhǔn)Unix時(shí)間表示中提供的傳感器讀數(shù)的事件時(shí)間戳。因此,開(kāi)發(fā)人員可以使用適當(dāng)?shù)拿荑€為每個(gè)傳感器源輕松地從單個(gè)傳感器構(gòu)建基于時(shí)間的數(shù)據(jù)流,或者為多個(gè)傳感器傳輸基于時(shí)間的數(shù)據(jù)。
而不是為每個(gè)事務(wù)構(gòu)建原始http請(qǐng)求,開(kāi)發(fā)人員可以利用Initial State或Initial State開(kāi)發(fā)人員社區(qū)提供的C,Java,Node.js和Python庫(kù)。例如,C庫(kù)使用Libcurl發(fā)出POST請(qǐng)求,并提供兩個(gè)函數(shù)create_bucket和stream_event,其參數(shù)直接對(duì)應(yīng)于前面描述的原始GET和POST請(qǐng)求中使用的鍵和數(shù)據(jù):
int create_bucket(char * access_key,char * bucket_key,char * bucket_name);
int stream_event(char * access_key,char * bucket_key,char * json);
分析部署
Initial State SaaS分析解決方案為新興的現(xiàn)成物聯(lián)網(wǎng)開(kāi)發(fā)套件提供了現(xiàn)成的補(bǔ)充。例如,Connected Cellular BeagleBone IoT開(kāi)發(fā)套件提供了一個(gè)快速實(shí)現(xiàn)IoT蜂窩無(wú)線節(jié)點(diǎn)的平臺(tái)。除了完整的蜂窩電話包外,該套件還包括BeagleBone Black板,采用基于德州儀器(TI)ARM?Cortex?-A8的AM335x處理器和多種擴(kuò)展接口,包括以太網(wǎng)和USB。開(kāi)發(fā)人員可以通過(guò)Seeed Technology提供的Grove斗篷板將易于使用的Grove兼容傳感器連接到電路板,從而真正支持各種傳感應(yīng)用(圖2)。
圖2:使用Connected Cellular BeagleBone物聯(lián)網(wǎng)開(kāi)發(fā)套件,物聯(lián)網(wǎng)開(kāi)發(fā)人員只需插入與Grove兼容的傳感器(如此處所示的光傳感器)即可添加傳感器功能。 (圖片來(lái)源:Initial State Technologies)
開(kāi)發(fā)人員可以簡(jiǎn)單地將分析插入到他們的IoT應(yīng)用程序中。在連接到BeagleBone Black板之后,開(kāi)發(fā)人員可以安裝初始狀態(tài)庫(kù),例如ISStreamer Python模塊。實(shí)際上,Initial State為模塊提供了安裝腳本,避免了由于不正確的安裝過(guò)程導(dǎo)致的常見(jiàn)問(wèn)題。因此,安裝只需要運(yùn)行安全下載腳本的shell腳本(在帶有反斜杠的curl命令之前以確保使用正確的二進(jìn)制文件)并使用bash執(zhí)行下載的腳本:
$ curl -sSL https://get.initialstate.com/python -o - | sudo bash
軟件工程師會(huì)創(chuàng)建一個(gè)存儲(chǔ)桶,其中包含一行Python代碼添加到他們?cè)诎迳线\(yùn)行的Python腳本中:
stream = Streamer( access_key =“myAccessKey”,bucket_key =“myBucketKey”)
通過(guò)調(diào)用流對(duì)象的log方法來(lái)流式傳輸數(shù)據(jù)值。因此,工程師會(huì)通過(guò)重復(fù)調(diào)用 stream.log(key,value,epoch)來(lái)將數(shù)據(jù)流式傳輸?shù)絀nitial State服務(wù)。
實(shí)際上,Initial State提供了一個(gè)示例構(gòu)建Python應(yīng)用程序以支持Connected Cellular BeagleBone IoT Kit。在軟件例程中,示例應(yīng)用程序演示了一種基本設(shè)計(jì)模式,用于設(shè)置從電路板的模數(shù)轉(zhuǎn)換器(ADC)捕獲的數(shù)據(jù)流和流光傳感器值(清單1)。在這種情況下,應(yīng)用程序?qū)⒆x數(shù)作為主觀級(jí)別進(jìn)行傳輸,相應(yīng)地將其顯示為相關(guān)儀表板中的圖塊(圖3)。
復(fù)制
#Read from light sensor
從導(dǎo)入時(shí)間
導(dǎo)入Adafruit_BBIO.ADC作為ADC
從ISStreamer.Streamer導(dǎo)入Streamer
#Initialize the streamer
streamer = Streamer(bucket_name =“BBB Readings”,bucket_key =“myBucketKey”,access_key =“myAccessKey”)
pin =“AIN2”
< p>
ADC.setup()
雖然為T(mén)rue:
value = ADC.read_raw(pin)
如果值<= 250:
level =“dim”
如果251 <=值<= 500:
level =“average”
如果501 <=值<= 800:
level =“bright”
如果值> 800:
level =“非常明亮”
打印值
#Stream值
流光。 log(“:level_slider:Sensor Reading”,value)
打印級(jí)別
#Stream the level
streamer.log(“:bulb:Brightness”,級(jí)別)
#Sleep 1分鐘
睡眠(60)
清單1:初始狀態(tài)示例Python應(yīng)用程序Connected Cellular BeagleBone物聯(lián)網(wǎng)套件演示了一種簡(jiǎn)單的技術(shù),用于獲取傳感器數(shù)據(jù)并將其傳輸?shù)绞录啊?(代碼來(lái)源:初始狀態(tài)技術(shù))

圖3:初始狀態(tài)平臺(tái)允許開(kāi)發(fā)人員創(chuàng)建每個(gè)顯示分析的圖形窗口或圖塊的儀表板源自各個(gè)IoT數(shù)據(jù)流。 (圖像來(lái)源:初始狀態(tài)技術(shù))
可擴(kuò)展性和擴(kuò)展
開(kāi)發(fā)人員可以擴(kuò)展此基本模式,以實(shí)時(shí)監(jiān)控和探索數(shù)據(jù)流,并設(shè)置觸發(fā)器以觸發(fā)文本消息或電子郵件給用戶。相同的機(jī)制還可以向外部服務(wù)發(fā)送通知,例如Amazon Web Service的簡(jiǎn)單隊(duì)列服務(wù)(SQS)。 AWS SQS提供可由其他分布式服務(wù)使用的基于云的消息隊(duì)列。使用這些類型的服務(wù),開(kāi)發(fā)人員可以使用自定義服務(wù)輕松擴(kuò)展其初始狀態(tài)部署,以創(chuàng)建功能強(qiáng)大,復(fù)雜的數(shù)據(jù)處理工作流。
相反,開(kāi)發(fā)人員可以將分析功能添加到已將數(shù)據(jù)泵入某個(gè)現(xiàn)有外部池的現(xiàn)有IoT應(yīng)用程序工作流中。例如,工程師可以使用基于云的服務(wù)(如AWS Lambda)定期從現(xiàn)有的IoT數(shù)據(jù)池流式傳輸數(shù)據(jù)。
AWS Lambda提供了一種無(wú)響應(yīng)的機(jī)制,用于執(zhí)行代碼片段以響應(yīng)外部事件,因此開(kāi)發(fā)人員無(wú)需進(jìn)一步加載現(xiàn)有IoT應(yīng)用程序資源即可部署分析。使用這種方法,可以將Lambda函數(shù)設(shè)置為定期激活并執(zhí)行基本POST請(qǐng)求以流式傳輸數(shù)據(jù)(清單2)。
復(fù)制
//將數(shù)據(jù)發(fā)送到初始狀態(tài)
函數(shù)sendToInitialState(accessKey,data,callback){
const req = https.request({
hostname:'groker.initialstate .com',
port:'443',
路徑:'/api/events',
方法:'POST',
標(biāo)題:{
'X-IS-AccessKey':accessKey,
'X-IS-BucketKey':ISBucketKey,
'內(nèi)容 - 輸入':'application/json',
'Accept-Version':'?0'
}
},(res)=> {
讓body ='';
console.log('狀態(tài):',res。 statusCode);
console.log('標(biāo)題:',JSON.stringify(res.headers));
res.setEncoding('utf8');
< p> res.on('data',(chunk)=> body + = chunk);
res.on('end',()=> {
console。 log('成功處理的HTTPS響應(yīng)');
//如果我們知道它是JSON,解析它
if(res.headers ['content-type'] ===' application/json'){
body = JSON.parse(body);
}
callback(null,body);
});
});
req.on('error',callback);
req.end(JSON.stringify(data) ));
}
物聯(lián)網(wǎng)開(kāi)發(fā)人員希望看到他們的應(yīng)用程序隨著客戶接受度的提高而迅速擴(kuò)展,而且Initial State希望其服務(wù)隨應(yīng)用程序一起擴(kuò)展。該服務(wù)構(gòu)建于AWS之上,利用專門(mén)設(shè)計(jì)的AWS功能進(jìn)行擴(kuò)展,以支持大量流,并在這些流中支持非常高的數(shù)據(jù)速率。此外,為了確保持續(xù)可用性,跨AWS可用區(qū)復(fù)制事件存儲(chǔ)桶(地理區(qū)域內(nèi)不同數(shù)據(jù)中心的物理多樣性)。企業(yè)客戶可以利用跨AWS區(qū)域的復(fù)制(位于不同地理區(qū)域的數(shù)據(jù)中心的全球規(guī)模多樣性)。
結(jié)論
顯示原始或轉(zhuǎn)換的IoT數(shù)據(jù)的能力實(shí)時(shí)在幫助開(kāi)發(fā)人員了解數(shù)據(jù)質(zhì)量和為用戶提供物聯(lián)網(wǎng)應(yīng)用程序本身的核心功能方面發(fā)揮著關(guān)鍵作用。雖然存在實(shí)施物聯(lián)網(wǎng)數(shù)據(jù)分析的機(jī)制,但實(shí)現(xiàn)合適的可視化功能的能力可能會(huì)分散或延遲項(xiàng)目。 Initial State Software-as-a-Service平臺(tái)提供了一種在物聯(lián)網(wǎng)應(yīng)用程序中部署實(shí)時(shí)數(shù)據(jù)分析的簡(jiǎn)單方法。使用此服務(wù),物聯(lián)網(wǎng)開(kāi)發(fā)人員可以調(diào)試來(lái)自多個(gè)來(lái)源的數(shù)據(jù)流,并更輕松地向最終用戶提供實(shí)時(shí)信息顯示。
-
傳感器
+關(guān)注
關(guān)注
2577文章
55163瀏覽量
792112 -
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4812瀏覽量
90130 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2947文章
47904瀏覽量
416013
發(fā)布評(píng)論請(qǐng)先 登錄
銳捷助互聯(lián)網(wǎng)數(shù)據(jù)中心網(wǎng)絡(luò)自動(dòng)化、可視化運(yùn)維
可視化MES系統(tǒng)軟件
常見(jiàn)的幾種可視化介紹
低代碼可視化開(kāi)發(fā)理念在物聯(lián)網(wǎng)APP開(kāi)發(fā) 精選資料分享
基于OneNET View 3.0的可視化數(shù)據(jù)監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)資料分享
物聯(lián)網(wǎng)應(yīng)用程序數(shù)據(jù)可視化的工具介紹
關(guān)于三維數(shù)據(jù)可視化物聯(lián)網(wǎng)3D數(shù)字孿生的展現(xiàn)形式
使用WolkAbout物聯(lián)網(wǎng)平臺(tái)可視化TTN設(shè)備數(shù)據(jù)
使用Google Charts來(lái)可視化傳感器數(shù)據(jù)
使用谷歌圖表在網(wǎng)頁(yè)上可視化無(wú)線傳感器數(shù)據(jù)
工業(yè)物聯(lián)網(wǎng)數(shù)據(jù)可視化管理平臺(tái)有什么功能
如何簡(jiǎn)化存儲(chǔ)和可視化物聯(lián)網(wǎng)傳感器的數(shù)據(jù)
評(píng)論