前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OneNet一次上传多个数据,在可视化页面解析显示

OneNet一次上传多个数据,在可视化页面解析显示

作者头像
DS小龙哥
发布2022-11-18 16:22:26
2.2K0
发布2022-11-18 16:22:26
举报

一、OneNet是什么?

OneNET-中国移动物联网开放平台是由中国移动打造的PaaS物联网开放平台。平台能够帮助开发者轻松实现设备接入与设备连接,提供综合性的物联网解决方案,实现物联网设备的数据获取,数据存储,数据展现。

二、OneNet一次如何上传多个数据?

2.1 单个数据上传

在使用OneNet时,为了接收设备上传的数据,都会建立数据流模板。

image-20221108092321324
image-20221108092321324

一般建立数据流模板时,都认为一个数据流就对应一个传感器的数据。 实际上为了方便数据上传,也可以让一个数据流模板对应一个设备的数据。 一个设备上可能有很多个传感器,可以通过JSON格式将所有传感器数据赋值给一个数据流模板然后一次上传。在可视化页面通过数据过滤器显示出来即可。

看上面的截图里,我建立了一个temp的数据流模板,用来存放温度数据。

接下来我以HTTP协议接入为例,正常一次上传一个数据的方式如下:

报文格式如下:

代码语言:javascript
复制
POST /devices/<填设备ID>/datapoints HTTP/1.1
api-key:<填设备的ApiKey>
Host:api.heclouds.com
Connection:close
Content-Length:<填下面需要上传的数据总字节数>

{"datastreams":[{"id":"<填数据流名称>","datapoints":[{"value":<上传的值>}]}]}

上传一次值的方式:

代码语言:javascript
复制
POST /devices/1009326949/datapoints HTTP/1.1
api-key:Q1=mhFwn=zt6nfp1EYvSsUcwUX8=
Host:api.heclouds.com
Connection:close
Content-Length:61

{"datastreams":[{"id":"temp","datapoints":[{"value":24.5}]}]}

2.2 多个数据上传

为了方便演示,重新添加一个数据流模板。

image-20221108095440329
image-20221108095440329

添加成功。

image-20221108095504406
image-20221108095504406

以为OneNet的数据流模板上传的值是JSON类型,只要是标准的JSON可以自己组合即可。

一次上传多个数据JSON示例:

代码语言:javascript
复制
{"datastreams":[{"id":"data","datapoints":[{"value":{"dev1":10,"dev2":12,"dev3":13,"dev4":14,"dev5":15,"dev6":16,"dev7":17,"dev8":18,"dev9":19,"dev10":20}}]}]}

树形方式查看:

代码语言:javascript
复制
{
  "datastreams": [
    {
      "id": "data",
      "datapoints": [
        {
          "value": {
            "dev1": 10,
            "dev2": 12,
            "dev3": 13,
            "dev4": 14,
            "dev5": 15,
            "dev6": 16,
            "dev7": 17,
            "dev8": 18,
            "dev9": 19,
            "dev10": 20
          }
        }
      ]
    }
  ]
}

转义之后:(单片机用)

代码语言:javascript
复制
"{\"datastreams\":[{\"id\":\"data\",\"datapoints\":[{\"value\":{\"dev1\":10,\"dev2\":12,\"dev3\":13,\"dev4\":14,\"dev5\":15,\"dev6\":16,\"dev7\":17,\"dev8\":18,\"dev9\":19,\"dev10\":20}}]}]}"

完整上传的HTTP报文:

代码语言:javascript
复制
POST /devices/1009326949/datapoints HTTP/1.1
api-key:Q1=mhFwn=zt6nfp1EYvSsUcwUX8=
Host:api.heclouds.com
Connection:close
Content-Length:159

{"datastreams":[{"id":"data","datapoints":[{"value":{"dev1":10,"dev2":12,"dev3":13,"dev4":14,"dev5":15,"dev6":16,"dev7":17,"dev8":18,"dev9":19,"dev10":20}}]}]}

通过TCP调试助手上传的效果:

image-20221108100226258
image-20221108100226258

上传成功之后,打开网页查看数据: (可以看到数据已经上传成功了)

image-20221108100714297
image-20221108100714297

三、可视化页面解析数据显示

3.1 柱状图显示多个数据

上传之后,在可视化页面上如果。

image-20221108101345409
image-20221108101345409

先关联控件显示的数据流来源。

然后设置过滤器,提取数据。

代码语言:javascript
复制
return [{
    x: "设备1",
    y1: data[0].value.dev1,
},{
    x: "设备2",
    y1: data[0].value.dev2,
},{
    x: "设备3",
    y1: data[0].value.dev3,
},{
    x: "设备4",
    y1: data[0].value.dev4,
},{
    x: "设备5",
    y1: data[0].value.dev5,
},{
    x: "设备6",
    y1: data[0].value.dev6,
},{
    x: "设备7",
    y1: data[0].value.dev7,
},{
    x: "设备8",
    y1: data[0].value.dev8,
},{
    x: "设备9",
    y1: data[0].value.dev9,
},{
    x: "设备10",
    y1: data[0].value.dev10,
}
]
image-20221108102154396
image-20221108102154396

数据提取成功。

image-20221108102214761
image-20221108102214761

通过柱状图显示多个设备的数据。

image-20221108102757891
image-20221108102757891

3.2 折线图显示历史数据

比如,我有一个temp字段,设备不断采集温度上传。 在界面有一个仪表盘显示温度,但是仪表盘只能显示当前实时温度,如果我想显示历史温度怎么办?

(1)修改数据源,采集数据点的数量:

image-20221108104611288
image-20221108104611288

比如,我这里改为100,就表示会保留最新的100个数据在数据源里。

image-20221108104513796
image-20221108104513796

(2)拖拽一个折线图控件

image-20221108104647354
image-20221108104647354

(3)修改过滤器

通过过滤器提取数据,组合数据,返回折线图需要的格式:

代码语言:javascript
复制
// 最终数据应该是一个数组
 var result = [];
 var dataPoint = null;
 //循环处理选中的数据源的数据点
 for (var i = 0; i < data.length; i++) {
     // 从数据点中取出需要的数据,通过配置键值对使得数据格式符合要求
     dataPoint = {
			x: data[i].update_at,
			y1: data[i].value,
     };
     // 将这个数据点添加进结果中
     result.push(dataPoint);
 }
 return result;
image-20221108104750232
image-20221108104750232

3.3 仪表盘控件过滤器增加

因为刚才修改了数据源采集的点数量,整体数据源的格式就变化了,变为了数组。 为了仪表盘能正常显示最新的温度,需要修改一下仪表盘的过滤器,提取最新的数据显示。 包括文本组件要显示最新上传的数据时间,那么过滤器也需要修改。

代码语言:javascript
复制
//提取最新上报的数据显示
return [{
    "value": data[data.length-1].value
}]


//提取温度最新上报的时间
return [{
    "value": "数据上报时间: " + data[data.length-1].update_at
}]
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、OneNet是什么?
  • 二、OneNet一次如何上传多个数据?
    • 2.1 单个数据上传
      • 2.2 多个数据上传
      • 三、可视化页面解析数据显示
        • 3.1 柱状图显示多个数据
          • 3.2 折线图显示历史数据
            • 3.3 仪表盘控件过滤器增加
            相关产品与服务
            物联网
            腾讯连连是腾讯云物联网全新商业品牌,它涵盖一站式物联网平台 IoT Explorer,连连官方微信小程序和配套的小程序 SDK、插件和开源 App,并整合腾讯云内优势产品能力,如大数据、音视频、AI等。同时,它打通腾讯系 C 端内容资源,如QQ音乐、微信支付、微保、微众银行、医疗健康等生态应用入口。提供覆盖“云-管-边-端”的物联网基础设施,面向“消费物联”和 “产业物联”两大赛道提供全方位的物联网产品和解决方案,助力企业高效实现数字化转型。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档