解決用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

相關文章
相關標籤/搜索