??應(yīng)用場(chǎng)景
上一篇《如何利用IoT云平臺(tái)統(tǒng)計(jì)設(shè)備數(shù)據(jù)?—基礎(chǔ)篇》介紹了如何運(yùn)用ZWS云平臺(tái)中的內(nèi)置統(tǒng)計(jì)算法進(jìn)行數(shù)據(jù)統(tǒng)計(jì),這次將介紹如何創(chuàng)建自定義統(tǒng)計(jì)算法。
為什么需要自定義統(tǒng)計(jì)算法?由于業(yè)務(wù)需求各式各樣,有的需要求平均值,有的需要求累加值,不同維度需要不同統(tǒng)計(jì)算法,開發(fā)者可以通過自定義統(tǒng)計(jì)算法來滿足對(duì)應(yīng)的項(xiàng)目需求。


- 內(nèi)置算法為云平臺(tái)定義好的算法,可以直接關(guān)聯(lián)設(shè)備進(jìn)行統(tǒng)計(jì),無需關(guān)心統(tǒng)計(jì)算法內(nèi)容和過程。
-
自定義算法可以自己擬定數(shù)據(jù)統(tǒng)計(jì)的方式(例如取某段時(shí)間的最大最小值、總和等等)來統(tǒng)計(jì)設(shè)備數(shù)據(jù)。

- 類別:云平臺(tái)提供給自定義算法的參數(shù);
-
參數(shù)名:參數(shù)的別名。
在云平臺(tái)中,提供了6種參數(shù)給自定義算法的開發(fā)者使用:
-
devType:設(shè)備類型;
-
devId:創(chuàng)建設(shè)備定義的ID,可以用于選取一個(gè)設(shè)備進(jìn)行統(tǒng)計(jì);
-
dataSource:設(shè)備類型功能塊中的某一個(gè)字段;
-
dataValue:需要比較的數(shù)據(jù)值;
- group:軟件分組,可以對(duì)一整個(gè)軟件分組進(jìn)行統(tǒng)計(jì)。
統(tǒng)計(jì)數(shù)據(jù)的過程代碼,可以使用Groovy或者JavaScript語言編寫。
3.返回參數(shù)
定義統(tǒng)計(jì)后結(jié)果顯示的字段。
這里以統(tǒng)計(jì)一小時(shí)內(nèi)設(shè)備的某個(gè)數(shù)據(jù)的總和為例,編寫一個(gè)JavaScript腳本:
// 載入需要實(shí)現(xiàn)的接口
var DataStatisticScriptMethod = Java.type("com.zlgcloud.iotplatform.iotdata.service.data.statistics.DataStatisticScriptMethod");
// 創(chuàng)建繼承實(shí)現(xiàn)接口的類
var JsDataStatisticScriptMethod = Java.extend(DataStatisticScriptMethod);
// 創(chuàng)建func對(duì)象
var func = new JsDataStatisticScriptMethod() {
execute: function(param) {
//獲取創(chuàng)建算法頁面的請(qǐng)求參數(shù),參數(shù)值會(huì)由云平臺(tái)根據(jù)算法實(shí)例的選擇項(xiàng),進(jìn)行自動(dòng)填充
var thirdThingsId = param.get("devId");
var infoModelId = param.get("devType");
var property = param.get("property");
//可以自定義統(tǒng)計(jì)時(shí)間范圍,如果查詢條件沒有range,則會(huì)根據(jù)算法實(shí)例的數(shù)據(jù)開始時(shí)間和數(shù)據(jù)結(jié)束時(shí)間范圍進(jìn)行統(tǒng)計(jì)
var currentTime = new Date().valueOf();
var anHourAgo = currentTime - 3600000;
// 拼裝elasticseach 查詢的dsl
// 這里根據(jù)業(yè)務(wù)需要設(shè)置數(shù)據(jù)范圍. 查詢時(shí)會(huì)限制租戶和用戶管理的設(shè)備.
var esParam = {
"aggregations": {
"result_in_hour": {
"sum": {
"field": "data." + property
}
}
},
"query": {
"bool":{
"must": [
{
"term": {
"third_things_id.keyword": thirdThingsId
}
},
{
"range": {
"timestamp": {
"gte": anHourAgo,
"lt": currentTime
}
}
}
]
}
}
};
//獲取統(tǒng)計(jì)結(jié)果
var result = Java.super(func).queryEs(infoModelId, esParam);
var rtn = {"result_in_hour":result['aggregations']['result_in_hour']['value']};
return rtn;
}
}
將腳本復(fù)制到自定義算法中。
同時(shí)創(chuàng)建實(shí)例,給設(shè)備的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。

執(zhí)行算法過后,可以看到自定義統(tǒng)計(jì)結(jié)果。
關(guān)聯(lián)產(chǎn)品

-
致遠(yuǎn)電子
+關(guān)注
關(guān)注
13文章
411瀏覽量
31833
發(fā)布評(píng)論請(qǐng)先 登錄
RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階7 向系統(tǒng)中添加一個(gè)系統(tǒng)調(diào)用

華為云Stack助力統(tǒng)計(jì)信息化智能升級(jí)
IoT物聯(lián)網(wǎng)平臺(tái)如何解決工廠數(shù)字化問題?
IoT平臺(tái)在設(shè)備遠(yuǎn)程運(yùn)維中的應(yīng)用
告別繁瑣的云平臺(tái)開發(fā)!IoT_CLOUD之 百度云

迅為iTOP-RK3568開發(fā)板驅(qū)動(dòng)開發(fā)指南-第十八篇 PWM
PLC數(shù)據(jù)采集IoT平臺(tái)是什么
告別繁瑣的云平臺(tái)開發(fā)!IoT_CLOUD之百度云

IOT數(shù)據(jù)采集平臺(tái)的功能特點(diǎn)
設(shè)備數(shù)據(jù)接入運(yùn)維管理云平臺(tái)實(shí)現(xiàn)什么功能
智慧農(nóng)業(yè)IOT云平臺(tái)有什么功能
云平臺(tái)在大規(guī)模設(shè)備管理和數(shù)據(jù)分析中的作用

工業(yè)物聯(lián)網(wǎng)(IOT)云平臺(tái)是什么
利用鋇錸Modbus轉(zhuǎn)MQTT網(wǎng)關(guān)實(shí)現(xiàn)數(shù)據(jù)高效上傳至華為云平臺(tái)

評(píng)論