加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    •   应用场景
    •   统计数据准备
    •   统计算法
    •   创建自定义统计算法
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

【产品应用】如何利用IoT云平台统计设备数据?— 进阶篇

2023/08/11
1958
阅读需 7 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

设备数据上云,解析后的设备数据一般是时序存储,但纯粹的设备时序数据无法给用户带来更大的业务价值,需要根据业务需求进行额外的数据统计分析。本文将介绍如何利用ZWS云平台的自定义统计算法对数据进行统计。

  应用场景

上一篇《如何利用IoT云平台统计设备数据?— 基础篇》介绍了如何运用ZWS云平台中的内置统计算法进行数据统计,这次将介绍如何创建自定义统计算法。

为什么需要自定义统计算法?由于业务需求各式各样,有的需要求平均值,有的需要求累加值,不同维度需要不同统计算法,开发者可以通过自定义统计算法来满足对应的项目需求。

  统计数据准备

首先,需要在ZWS云平台中创建设备并上报设备数据:

  统计算法

ZWS云平台的统计算法有两种,分别是内置统计算法自定义统计算法

    1. 内置算法为云平台定义好的算法,可以直接关联设备进行统计,无需关心统计算法内容和过程。

自定义算法可以自己拟定数据统计的方式(例如取某段时间的最大最小值、总和等等)来统计设备数据。

  创建自定义统计算法

不同于内置算法,自定义算法从请求参数、统计过程、统计结果均由用户自定义,需要开发者编写脚本。目前自定义统计中支持了Groovy和JavaScript两种脚本语言解析。

1. 请求参数

    • 类别:云平台提供给自定义算法的参数;参数名:参数的别名。

在云平台中,提供了6种参数给自定义算法的开发者使用:

devType:设备类型;

devId:创建设备定义的ID,可以用于选取一个设备进行统计;

dataSource:设备类型功能块中的某一个字段;

dataCompareOperation:字段的比较条件,有大于、小于和等于;

dataValue:需要比较的数据值;

group:软件分组,可以对一整个软件分组进行统计。

2. 算法代码

统计数据的过程代码,可以使用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;    }}

将脚本复制到自定义算法中。

同时创建实例,给设备的数据进行统计。

执行算法过后,可以看到自定义统计结果。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
LAN8742AI-CZ-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER

ECAD模型

下载ECAD模型
$1.71 查看
BGM113A256V21R 1 Silicon Laboratories Inc Telecom IC,

ECAD模型

下载ECAD模型
暂无数据 查看
KSZ8999I 1 Microchip Technology Inc DATACOM, LAN SWITCHING CIRCUIT, PQFP208

ECAD模型

下载ECAD模型
$31.28 查看
致远电子

致远电子

广州致远电子股份有限公司成立于2001年,注册资金5000万元,国家级高新技术认证企业,广州市高端工控测量仪器工程技术研究开发中心,Intel ECA全球合作伙伴和微软嵌入式系统金牌合作伙伴。

广州致远电子股份有限公司成立于2001年,注册资金5000万元,国家级高新技术认证企业,广州市高端工控测量仪器工程技术研究开发中心,Intel ECA全球合作伙伴和微软嵌入式系统金牌合作伙伴。收起

查看更多

相关推荐

电子产业图谱