物聯(lián)網(wǎng)(IoT)應(yīng)用程序的設(shè)計有望產(chǎn)生大量數(shù)據(jù),以便通過可操作的信息填充云。然而,對于大多數(shù)物聯(lián)網(wǎng)開發(fā)人員而言,將數(shù)據(jù)流式傳輸?shù)皆撇⒗斫馑枰獙<壹壍臄?shù)據(jù)交換和分析技術(shù)理解。
沒有簡單的方法可以實時深入分析數(shù)據(jù)流消息來源,物聯(lián)網(wǎng)開發(fā)人員可能會發(fā)現(xiàn)自己很難理解數(shù)據(jù)質(zhì)量問題對其應(yīng)用程序整體功能性能的影響。
為了幫助解決這個問題,Initial State Technologies提供了一種開發(fā)人員可以輕松使用的分析服務(wù)深入了解物聯(lián)網(wǎng)設(shè)備數(shù)據(jù)。然后,他們可以將其轉(zhuǎn)換為可在桌面或移動設(shè)備上訪問的有用信息。
對嵌入式分析的需求
對于任何物聯(lián)網(wǎng)應(yīng)用,其用戶感興趣的產(chǎn)品是從附加到個人,設(shè)備或結(jié)構(gòu)的傳感器節(jié)點生成的數(shù)據(jù)流導(dǎo)出的可操作信息。在物聯(lián)網(wǎng)開發(fā)人員面臨的挑戰(zhàn)中,對這些數(shù)據(jù)流的驗證需要能夠可視化和測量數(shù)據(jù)本身。
為此,物聯(lián)網(wǎng)應(yīng)用程序開發(fā)人員可以利用越來越多的基于云的服務(wù)來將原始數(shù)據(jù)轉(zhuǎn)換為所需的結(jié)果。在這些數(shù)據(jù)處理工作流程中,數(shù)據(jù)分析為人類提供了一種關(guān)鍵能力,使他們能夠了解數(shù)據(jù)的性質(zhì),以確保其質(zhì)量,并識別工作流程中無法預(yù)料的有用事件或異常。
對于開發(fā)人員,物聯(lián)網(wǎng)數(shù)據(jù)分析帶來了一系列全新的需求,超出了Web開發(fā)人員熟悉的需求。雖然后者通常需要離線批處理大型日志文件,但物聯(lián)網(wǎng)數(shù)據(jù)分析將大型數(shù)據(jù)存儲庫(“大數(shù)據(jù)”)與“快速數(shù)據(jù)”相結(jié)合。為了有效,物聯(lián)網(wǎng)應(yīng)用程序必須實時處理大量數(shù)據(jù)流以對現(xiàn)實事件做出反應(yīng)。
企業(yè)級概念(如lambda架構(gòu)和Apache Storm和Spark等工具)已經(jīng)出現(xiàn),為將數(shù)據(jù)分析構(gòu)建到大規(guī)模物聯(lián)網(wǎng)應(yīng)用程序的工作流程中。但是,對于大多數(shù)開發(fā)組織而言,構(gòu)建這些平臺和創(chuàng)建自己的數(shù)據(jù)分析解決方案所需的時間和資源充其量只能分散注意力。因此,物聯(lián)網(wǎng)開發(fā)人員可能會忽略數(shù)據(jù)分析,期望數(shù)據(jù)源是“已知良好”的資源,而后端代碼將捕獲任何問題。
事實上,物聯(lián)網(wǎng)應(yīng)用程序開發(fā)人員面臨越來越多的脫節(jié)可用數(shù)據(jù)量與輕松部署的分析功能之間的關(guān)系,用于調(diào)試物聯(lián)網(wǎng)應(yīng)用程序以及向用戶提供有用信息。
初始狀態(tài)通過軟件即服務(wù)(SaaS)解決了這一重要差距)解決方案使物聯(lián)網(wǎng)開發(fā)人員可以在任何應(yīng)用程序中部署實時分析。通過僅添加幾行代碼,開發(fā)人員(或客戶)可以使用包含一組特定流或事件的圖形顯示的可自定義儀表板來顯示物聯(lián)網(wǎng)數(shù)據(jù)。
探索數(shù)據(jù)流的詳細信息,Initial States'Waves工具形成一個交互式波形查看器,允許用戶放大數(shù)據(jù)流。該公司的Lines工具用作多波形分析儀。與其頂級前身一樣,這款基于云的工具可讓開發(fā)人員實時檢查,比較和測量多個信號波形(圖1)。
圖1:初始狀態(tài)平臺以多種格式呈現(xiàn)數(shù)據(jù)流,包括分析復(fù)雜物聯(lián)網(wǎng)數(shù)據(jù)所需的多波形顯示。 (圖片來源:Initial State Technologies)
SaaS解決方案
與任何SaaS軟件包一樣,Initial State維護云中的服務(wù)資源,并提供簡單的流媒體應(yīng)用程序編程接口(API)數(shù)據(jù)。開發(fā)人員使用傳統(tǒng)的Web GET和POST協(xié)議將數(shù)據(jù)流式傳輸?shù)健笆录鎯ν啊保笳咴诔跏紶顟B(tài)平臺中提供存儲資源。
開發(fā)人員可以使用簡單的GET請求來創(chuàng)建存儲桶:
<跨度>復(fù)制 <代碼>
https://groker.initialstate.com/api/buckets?accessKey=myAccessKey&bucketKey=myBucketKey&bucketName=myBucketName
正如此請求所示,每個存儲桶都是使用開發(fā)人員的初始狀態(tài)私有訪問密鑰(由注冊時的初始狀態(tài)提供)和唯一存儲桶密鑰(由創(chuàng)建存儲桶的工程師提供)的組合來標(biāo)識的。該公司還為企業(yè)客戶提供更細粒度的身份驗證級別。在創(chuàng)建事件存儲桶時,開發(fā)人員還可以提供可選的存儲桶名稱,稍后用于在各種初始狀態(tài)圖形顯示中識別來自該存儲桶的數(shù)據(jù)。
初始狀態(tài)將數(shù)據(jù)存儲為鍵:值對。因此,開發(fā)人員可以使用相同類型的GET請求來存儲多個事件(例如,使用鍵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ù)很簡單:開發(fā)人員可以通過將數(shù)據(jù)從每個源流式傳輸?shù)较嗤拇鎯ν皝斫M合來自不同來源的數(shù)據(jù),這些存儲桶由accessKey和bucketKey的全局唯一組合標(biāo)識。
開發(fā)人員還可以使用常用實用程序創(chuàng)建存儲桶和流數(shù)據(jù)作為curl發(fā)出POST請求。在這種情況下,身份驗證密鑰(accessKey和bucketKey)在請求標(biāo)頭中傳遞,數(shù)據(jù)鍵:值對在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請求所示,來自單個傳感器(例如溫度)的多個數(shù)據(jù)實例用相同的鍵表示。紀(jì)元值是標(biāo)準(zhǔn)Unix時間表示中提供的傳感器讀數(shù)的事件時間戳。因此,開發(fā)人員可以使用適當(dāng)?shù)拿荑€為每個傳感器源輕松地從單個傳感器構(gòu)建基于時間的數(shù)據(jù)流,或者為多個傳感器傳輸基于時間的數(shù)據(jù)。
而不是為每個事務(wù)構(gòu)建原始http請求,開發(fā)人員可以利用Initial State或Initial State開發(fā)人員社區(qū)提供的C,Java,Node.js和Python庫。例如,C庫使用Libcurl發(fā)出POST請求,并提供兩個函數(shù)create_bucket和stream_event,其參數(shù)直接對應(yīng)于前面描述的原始GET和POST請求中使用的鍵和數(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)開發(fā)套件提供了現(xiàn)成的補充。例如,Connected Cellular BeagleBone IoT開發(fā)套件提供了一個快速實現(xiàn)IoT蜂窩無線節(jié)點的平臺。除了完整的蜂窩電話包外,該套件還包括BeagleBone Black板,采用基于德州儀器(TI)ARM?Cortex?-A8的AM335x處理器和多種擴展接口,包括以太網(wǎng)和USB。開發(fā)人員可以通過Seeed Technology提供的Grove斗篷板將易于使用的Grove兼容傳感器連接到電路板,從而真正支持各種傳感應(yīng)用(圖2)。
圖2:使用Connected Cellular BeagleBone物聯(lián)網(wǎng)開發(fā)套件,物聯(lián)網(wǎng)開發(fā)人員只需插入與Grove兼容的傳感器(如此處所示的光傳感器)即可添加傳感器功能。 (圖片來源:Initial State Technologies)
開發(fā)人員可以簡單地將分析插入到他們的IoT應(yīng)用程序中。在連接到BeagleBone Black板之后,開發(fā)人員可以安裝初始狀態(tài)庫,例如ISStreamer Python模塊。實際上,Initial State為模塊提供了安裝腳本,避免了由于不正確的安裝過程導(dǎo)致的常見問題。因此,安裝只需要運行安全下載腳本的shell腳本(在帶有反斜杠的curl命令之前以確保使用正確的二進制文件)并使用bash執(zhí)行下載的腳本:
$ curl -sSL https://get.initialstate.com/python -o - | sudo bash
軟件工程師會創(chuàng)建一個存儲桶,其中包含一行Python代碼添加到他們在板上運行的Python腳本中:
stream = Streamer( access_key =“myAccessKey”,bucket_key =“myBucketKey”)
通過調(diào)用流對象的log方法來流式傳輸數(shù)據(jù)值。因此,工程師會通過重復(fù)調(diào)用 stream.log(key,value,epoch)來將數(shù)據(jù)流式傳輸?shù)絀nitial State服務(wù)。
實際上,Initial State提供了一個示例構(gòu)建Python應(yīng)用程序以支持Connected Cellular BeagleBone IoT Kit。在軟件例程中,示例應(yīng)用程序演示了一種基本設(shè)計模式,用于設(shè)置從電路板的模數(shù)轉(zhuǎn)換器(ADC)捕獲的數(shù)據(jù)流和流光傳感器值(清單1)。在這種情況下,應(yīng)用程序?qū)⒆x數(shù)作為主觀級別進行傳輸,相應(yīng)地將其顯示為相關(guān)儀表板中的圖塊(圖3)。
復(fù)制
#Read from light sensor
從導(dǎo)入時間
導(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()
雖然為True:
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)
打印級別
#Stream the level
streamer.log(“:bulb:Brightness”,級別)
#Sleep 1分鐘
睡眠(60)
清單1:初始狀態(tài)示例Python應(yīng)用程序Connected Cellular BeagleBone物聯(lián)網(wǎng)套件演示了一種簡單的技術(shù),用于獲取傳感器數(shù)據(jù)并將其傳輸?shù)绞录啊?(代碼來源:初始狀態(tài)技術(shù))
圖3:初始狀態(tài)平臺允許開發(fā)人員創(chuàng)建每個顯示分析的圖形窗口或圖塊的儀表板源自各個IoT數(shù)據(jù)流。 (圖像來源:初始狀態(tài)技術(shù))
可擴展性和擴展
開發(fā)人員可以擴展此基本模式,以實時監(jiān)控和探索數(shù)據(jù)流,并設(shè)置觸發(fā)器以觸發(fā)文本消息或電子郵件給用戶。相同的機制還可以向外部服務(wù)發(fā)送通知,例如Amazon Web Service的簡單隊列服務(wù)(SQS)。 AWS SQS提供可由其他分布式服務(wù)使用的基于云的消息隊列。使用這些類型的服務(wù),開發(fā)人員可以使用自定義服務(wù)輕松擴展其初始狀態(tài)部署,以創(chuàng)建功能強大,復(fù)雜的數(shù)據(jù)處理工作流。
相反,開發(fā)人員可以將分析功能添加到已將數(shù)據(jù)泵入某個現(xiàn)有外部池的現(xiàn)有IoT應(yīng)用程序工作流中。例如,工程師可以使用基于云的服務(wù)(如AWS Lambda)定期從現(xiàn)有的IoT數(shù)據(jù)池流式傳輸數(shù)據(jù)。
AWS Lambda提供了一種無響應(yīng)的機制,用于執(zhí)行代碼片段以響應(yīng)外部事件,因此開發(fā)人員無需進一步加載現(xiàn)有IoT應(yīng)用程序資源即可部署分析。使用這種方法,可以將Lambda函數(shù)設(shè)置為定期激活并執(zhí)行基本POST請求以流式傳輸數(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)開發(fā)人員希望看到他們的應(yīng)用程序隨著客戶接受度的提高而迅速擴展,而且Initial State希望其服務(wù)隨應(yīng)用程序一起擴展。該服務(wù)構(gòu)建于AWS之上,利用專門設(shè)計的AWS功能進行擴展,以支持大量流,并在這些流中支持非常高的數(shù)據(jù)速率。此外,為了確保持續(xù)可用性,跨AWS可用區(qū)復(fù)制事件存儲桶(地理區(qū)域內(nèi)不同數(shù)據(jù)中心的物理多樣性)。企業(yè)客戶可以利用跨AWS區(qū)域的復(fù)制(位于不同地理區(qū)域的數(shù)據(jù)中心的全球規(guī)模多樣性)。
結(jié)論
顯示原始或轉(zhuǎn)換的IoT數(shù)據(jù)的能力實時在幫助開發(fā)人員了解數(shù)據(jù)質(zhì)量和為用戶提供物聯(lián)網(wǎng)應(yīng)用程序本身的核心功能方面發(fā)揮著關(guān)鍵作用。雖然存在實施物聯(lián)網(wǎng)數(shù)據(jù)分析的機制,但實現(xiàn)合適的可視化功能的能力可能會分散或延遲項目。 Initial State Software-as-a-Service平臺提供了一種在物聯(lián)網(wǎng)應(yīng)用程序中部署實時數(shù)據(jù)分析的簡單方法。使用此服務(wù),物聯(lián)網(wǎng)開發(fā)人員可以調(diào)試來自多個來源的數(shù)據(jù)流,并更輕松地向最終用戶提供實時信息顯示。
-
傳感器
+關(guān)注
關(guān)注
2565文章
53008瀏覽量
767438 -
存儲
+關(guān)注
關(guān)注
13文章
4533瀏覽量
87458 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2931文章
46251瀏覽量
392539
發(fā)布評論請先 登錄
銳捷助互聯(lián)網(wǎng)數(shù)據(jù)中心網(wǎng)絡(luò)自動化、可視化運維
可視化MES系統(tǒng)軟件
常見的幾種可視化介紹
低代碼可視化開發(fā)理念在物聯(lián)網(wǎng)APP開發(fā) 精選資料分享
基于OneNET View 3.0的可視化數(shù)據(jù)監(jiān)測系統(tǒng)的設(shè)計資料分享
物聯(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)平臺可視化TTN設(shè)備數(shù)據(jù)

使用Google Charts來可視化傳感器數(shù)據(jù)

使用谷歌圖表在網(wǎng)頁上可視化無線傳感器數(shù)據(jù)

工業(yè)物聯(lián)網(wǎng)數(shù)據(jù)可視化管理平臺有什么功能

評論