解决用HTTP协议从onenet平台上获取数据流的多个数据点的问题

onenet平台

OneNET是由中国移动打造的PaaS物联网开放平台。平台可以帮助开发者轻松实现设备接入与设备链接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案。javascript

产品信息

至于怎么建立产品我就不作过多的介绍了,我我的建立的是多协议接入的产品。在这里插入图片描述
在这个产品里面我添加了两个设备
vue

在这里插入图片描述
kfb1是个人终端设备,使用树莓派做为终端上传数据。为何使用树莓派呢,由于树莓派功能强大并且能够使用Python进行编程相对于C语言,能够大大缩短开发时间并且容易上手。我我的以为使用树莓派做为终端是比较可行的。后面我会介绍一下我对树莓派的配置以及怎么获取数据和相关功能的配置文件。
下面是个人终端上传的数据展现。在数据流里面打开。
在这里插入图片描述


java

数据的获取

个人毕业设计包含微信小程序、h5移动端app和pc端网页。下面介绍一下移动端获取数据的方法。
官方提供了api的调用,我在微信小程序里面使用api获取的数据。`
编程

下面介绍一下使用sdk方法来获取数据
个人移动端APP使用官方提供的sdk来获取数据流和多个数据点
官方sdk能够去onenet平台下载,我也有上传到资源里面,你们能够下载使用。
1.获取多个数据流,把数据流最新的数据点渲染到页面上


小程序

//从onenet平台获取数据
          var devicesid = '11111111111' //改为你本身的设备id
          var apikey = 'ssssssssssssssss' //改为你本身的APIkey
          var api = new OneNetApi(apikey);
          /** * 读取设备多个数据流 * api.getDataStreams(设备id) * 若是请求成功会返回数据,请求失败会返回错误码 * */
          api.getDataStreams(devicesid).done(function (data) { 
            console.log('数据请求成功,服务器返回data为:', data);
            var tempdatas = data.data[0];//温度
            var humdatas = data.data[1];//湿度
            var luxdatas = data.data[2];//光照强度
            var tem = tempdatas.current_value
            //jQuery的方法渲染数据
            $("#temp").text('' + tem + '℃'); 
            var hum = humdatas.current_value
            $("#hum").text('' + hum + '%');
            var lux = parseInt(luxdatas.current_value)
            $("#lux").text('' + lux + 'Lux');
            //vue写法
            // vm.tem =tempdatas.current_value
            // vm.hum = humdatas.current_value
            // vm.lux = parseInt(luxdatas.current_value)
          });

2.获取单个数据流的多个数据点
获取单个数据流的多个数据点,处理数据,把数据点经过Vue组件经过图表的方式展现。
微信小程序

历史数据界面
这里把获取到的数据经过Vue的方法来渲染数据,折线图利用Vue的组件库 https://v-charts.js.org/#/line

      let that = this

       //从onenet平台获取数据
        var devicesid = '11111111111' //改为你本身的设备id
        var apikey =  'ssssssssssssssss' //改为你本身的APIkey
        var api = new OneNetApi(apikey);

        // 获取温度的数据节点
        api.getDataPoints(devicesid, { 
        datastream_id: 'temperature',//数据流的ID
        start: '2020-10-01T08:00:35' //获取数据点开始的时间
         }).done(function (data) { 
         console.log('api调用完成,服务器返回data为:', data);
         //对获取到的数据进行处理
            var temp = data.data.datastreams[0].datapoints
             for (let i in temp) { 
               temp[i].at = temp[i].at.slice(5, -4); // 去掉时间,保留日期
              }
             console.log(temp);
   
             var temp1 = JSON.parse(JSON.stringify(temp).replace(/at/g, '日期')) //修改数组里面对象的属性名
             var temp2 = JSON.parse(JSON.stringify(temp1).replace(/value/g, '温度'))
             console.log(temp2[0]);
             var tempData = { 
               columns: ['日期', '温度'],
               rows: temp2,
            }
            console.log(tempData);
           that.tempData = tempData
        });

总结

以上就是我毕业设计项目里面经过onenet平台获取数据的方法,我本身作这个项目的时候因为参考文献比较少因此花的时间比较多,有的方法分享出来你们一块儿互相学习。但愿能够帮助到你们,有更好的方法或者建议请留言或私信。api

相关文章
相关标签/搜索