??應用場景
上一篇《如何利用IoT云平臺統計設備數據?—基礎篇》介紹了如何運用ZWS云平臺中的內置統計算法進行數據統計,這次將介紹如何創建自定義統計算法。
為什么需要自定義統計算法?由于業務需求各式各樣,有的需要求平均值,有的需要求累加值,不同維度需要不同統計算法,開發者可以通過自定義統計算法來滿足對應的項目需求。


- 內置算法為云平臺定義好的算法,可以直接關聯設備進行統計,無需關心統計算法內容和過程。
-
自定義算法可以自己擬定數據統計的方式(例如取某段時間的最大最小值、總和等等)來統計設備數據。

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

執行算法過后,可以看到自定義統計結果。
關聯產品

-
致遠電子
+關注
關注
13文章
411瀏覽量
31867
發布評論請先 登錄
華為云Stack助力統計信息化智能升級
IoT物聯網平臺如何解決工廠數字化問題?
告別繁瑣的云平臺開發!IoT_CLOUD之 百度云

迅為iTOP-RK3568開發板驅動開發指南-第十八篇 PWM
PLC數據采集IoT平臺是什么
設備數據接入運維管理云平臺實現什么功能
智慧農業IOT云平臺有什么功能
工業物聯網(IOT)云平臺是什么
利用鋇錸Modbus轉MQTT網關實現數據高效上傳至華為云平臺

評論