??應用場景
上一篇《如何利用IoT云平臺統(tǒng)計設備數(shù)據(jù)?—基礎篇》介紹了如何運用ZWS云平臺中的內(nèi)置統(tǒng)計算法進行數(shù)據(jù)統(tǒng)計,這次將介紹如何創(chuàng)建自定義統(tǒng)計算法。
為什么需要自定義統(tǒng)計算法?由于業(yè)務需求各式各樣,有的需要求平均值,有的需要求累加值,不同維度需要不同統(tǒng)計算法,開發(fā)者可以通過自定義統(tǒng)計算法來滿足對應的項目需求。
![fc2b5670-f937-11ed-90ce-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9A/A4/wKgZomTnp5GAayhkAAABH5UOQQI358.jpg)
![fc2b5670-f937-11ed-90ce-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9A/A4/wKgZomTnp5GAayhkAAABH5UOQQI358.jpg)
- 內(nèi)置算法為云平臺定義好的算法,可以直接關聯(lián)設備進行統(tǒng)計,無需關心統(tǒng)計算法內(nèi)容和過程。
-
自定義算法可以自己擬定數(shù)據(jù)統(tǒng)計的方式(例如取某段時間的最大最小值、總和等等)來統(tǒng)計設備數(shù)據(jù)。
![fc2b5670-f937-11ed-90ce-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9A/A4/wKgZomTnp5GAayhkAAABH5UOQQI358.jpg)
- 類別:云平臺提供給自定義算法的參數(shù);
-
參數(shù)名:參數(shù)的別名。
在云平臺中,提供了6種參數(shù)給自定義算法的開發(fā)者使用:
-
devType:設備類型;
-
devId:創(chuàng)建設備定義的ID,可以用于選取一個設備進行統(tǒng)計;
-
dataSource:設備類型功能塊中的某一個字段;
-
dataValue:需要比較的數(shù)據(jù)值;
- group:軟件分組,可以對一整個軟件分組進行統(tǒng)計。
統(tǒng)計數(shù)據(jù)的過程代碼,可以使用Groovy或者JavaScript語言編寫。
3.返回參數(shù)
定義統(tǒng)計后結果顯示的字段。
這里以統(tǒng)計一小時內(nèi)設備的某個數(shù)據(jù)的總和為例,編寫一個JavaScript腳本:
// 載入需要實現(xiàn)的接口
var DataStatisticScriptMethod = Java.type("com.zlgcloud.iotplatform.iotdata.service.data.statistics.DataStatisticScriptMethod");
// 創(chuàng)建繼承實現(xiàn)接口的類
var JsDataStatisticScriptMethod = Java.extend(DataStatisticScriptMethod);
// 創(chuàng)建func對象
var func = new JsDataStatisticScriptMethod() {
execute: function(param) {
//獲取創(chuàng)建算法頁面的請求參數(shù),參數(shù)值會由云平臺根據(jù)算法實例的選擇項,進行自動填充
var thirdThingsId = param.get("devId");
var infoModelId = param.get("devType");
var property = param.get("property");
//可以自定義統(tǒng)計時間范圍,如果查詢條件沒有range,則會根據(jù)算法實例的數(shù)據(jù)開始時間和數(shù)據(jù)結束時間范圍進行統(tǒng)計
var currentTime = new Date().valueOf();
var anHourAgo = currentTime - 3600000;
// 拼裝elasticseach 查詢的dsl
// 這里根據(jù)業(yè)務需要設置數(shù)據(jù)范圍. 查詢時會限制租戶和用戶管理的設備.
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)計結果
var result = Java.super(func).queryEs(infoModelId, esParam);
var rtn = {"result_in_hour":result['aggregations']['result_in_hour']['value']};
return rtn;
}
}
將腳本復制到自定義算法中。
同時創(chuàng)建實例,給設備的數(shù)據(jù)進行統(tǒng)計。
![fc7f4c6c-f937-11ed-90ce-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/A4/wKgZomTnp5GAFll2AACdVA4W4Kk531.png)
執(zhí)行算法過后,可以看到自定義統(tǒng)計結果。
關聯(lián)產(chǎn)品
![fc2b5670-f937-11ed-90ce-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9A/A4/wKgZomTnp5GAayhkAAABH5UOQQI358.jpg)
-
致遠電子
+關注
關注
13文章
406瀏覽量
31318
發(fā)布評論請先 登錄
相關推薦
IoT平臺在設備遠程運維中的應用
告別繁瑣的云平臺開發(fā)!IoT_CLOUD之 百度云
![告別繁瑣的<b class='flag-5'>云</b><b class='flag-5'>平臺</b>開發(fā)!<b class='flag-5'>IoT</b>_CLOUD之 百度<b class='flag-5'>云</b>](https://file1.elecfans.com/web2/M00/09/D3/wKgZomcTtIaADqpqAABdmf48bLU970.png)
告別繁瑣的云平臺開發(fā)!IoT_CLOUD之百度云
![告別繁瑣的<b class='flag-5'>云</b><b class='flag-5'>平臺</b>開發(fā)!<b class='flag-5'>IoT</b>_CLOUD之百度<b class='flag-5'>云</b>](https://file1.elecfans.com/web2/M00/09/D3/wKgZomcTtIaADqpqAABdmf48bLU970.png)
IOT數(shù)據(jù)采集平臺的功能特點
設備數(shù)據(jù)接入運維管理云平臺實現(xiàn)什么功能
智慧農(nóng)業(yè)IOT云平臺有什么功能
工業(yè)物聯(lián)網(wǎng)(IOT)云平臺是什么
利用鋇錸Modbus轉(zhuǎn)MQTT網(wǎng)關實現(xiàn)數(shù)據(jù)高效上傳至華為云平臺
![<b class='flag-5'>利用</b>鋇錸Modbus轉(zhuǎn)MQTT網(wǎng)關實現(xiàn)<b class='flag-5'>數(shù)據(jù)</b>高效上傳至華為<b class='flag-5'>云</b><b class='flag-5'>平臺</b>](https://file1.elecfans.com/web2/M00/FF/5A/wKgaomaiEfqAHQR9AAAoigMZIwQ377.png)
ZWS云平臺應用(4)-設備數(shù)據(jù)上報
![ZWS<b class='flag-5'>云</b><b class='flag-5'>平臺</b>應用(4)-<b class='flag-5'>設備</b><b class='flag-5'>數(shù)據(jù)</b>上報](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
【產(chǎn)品應用】ZWS云平臺應用(3)-設備基于DTU接入
![【<b class='flag-5'>產(chǎn)品應用</b>】ZWS<b class='flag-5'>云</b><b class='flag-5'>平臺</b>應用(3)-<b class='flag-5'>設備</b>基于DTU接入](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
RT-Thread驅(qū)動開發(fā)指南進階篇-動手驅(qū)動先楫未適配的外設LCD
![RT-Thread驅(qū)動開發(fā)指南<b class='flag-5'>進階篇</b>-動手驅(qū)動先楫未適配的外設LCD](https://file1.elecfans.com/web2/M00/C1/D4/wKgaomXarr-AKhdfAAAcu6ZeWvU306.png)
RK3568驅(qū)動指南|驅(qū)動基礎進階篇-進階5 自定義實現(xiàn)insmod命令實驗
![RK3568驅(qū)動指南|驅(qū)動基礎<b class='flag-5'>進階篇</b>-<b class='flag-5'>進階</b>5 自定義實現(xiàn)insmod命令實驗](https://file1.elecfans.com/web2/M00/C0/47/wKgZomXUQkaATvAlAADOvBJc2Tw686.png)
LoRa ZWS云應用(4)-環(huán)境監(jiān)測設備接入篇
![LoRa ZWS<b class='flag-5'>云</b>應用(4)-環(huán)境監(jiān)測<b class='flag-5'>設備</b>接入<b class='flag-5'>篇</b>](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
PLC設備接入網(wǎng)關實現(xiàn)工廠PLC接入物聯(lián)網(wǎng)IOT云平臺
![PLC<b class='flag-5'>設備</b>接入網(wǎng)關實現(xiàn)工廠PLC接入物聯(lián)網(wǎng)<b class='flag-5'>IOT</b><b class='flag-5'>云</b><b class='flag-5'>平臺</b>](https://file.elecfans.com/web2/M00/52/70/pYYBAGLLyhqAVmYRAAbXfP1kjRI408.png)
評論