一、關于mqtt協議
mqtt協議常用于物聯網,是一種輕量級的消息推送協議。
其中有三個角色,Publisher設備(客戶端)發布主題到服務器,其他的設備通過訂閱主題,獲取該主題下的消息,Publisher可以發布消息到主題下,從而推送消息給其他設備。
選擇MQTT協議的原因是其輕量化并且可以離線緩存消息在主題中,適合我們的移動低功耗低處理的設備。
二、使用微信小程序連接onenet
1.GET獲取平臺信息
authInfo: "version=2018-10-31&res=products%2F69lP2GPJQV%2Fdevices%2Fwenshi&et=2014049634&method=md5&sign=KiQMG9fabKZC5sQtd354Bg%3D%3D",
在小程序里,借助authInfo
這個變量存放授權信息,它包含了版本、資源路徑、過期時間以及簽名等內容。在后續發起的 HTTP 請求的請求頭中,會攜帶此授權信息,從而實現對平臺資源的訪問授權。
wx.request({url: "https://iot-api.heclouds.com/thingmodel/query-device-property?product_id=60KP2GPJQV&device_name=wenshi",header: {"authorization": that.data.authInfo},method: "GET",// 后續處理邏輯
});
小程序運用wx.request
這個 API 來發送 HTTP 請求。這里是向平臺的設備屬性查詢接口發送 GET 請求,在請求頭中攜帶了之前提到的授權信息。平臺返回的數據里包含了設備的溫濕度和水位信息,成功獲取后會更新到小程序的界面上。
onLoad() {var that = this;setInterval(function () {that.getinfo();}, 3000);
}
再在循環中循環去調用getinfo去循環獲取平臺數據。
2.POST下發數據置平臺
openclick: function () {var that = this;wx.showToast({ title: 'xx', duration: 1000 }); // 顯示提示wx.request({url: 'https://iot-api.heclouds.com/thingmodel/set-device-property?product_id=xxxxxx&device_name=xxxx',method: "POST",header: { "Authorization": that.data.authInfo }, // 身份認證信息data: {product_id: 'xxxxxxxx',device_name: 'xxxxx',params: { "key": true } // 控制參數:打開設備},success: function (res) {console.log('控制請求成功', res);},fail: function (err) {console.log('控制請求失敗', err.errMsg);}});
},
將該函數綁定在按鈕上,當按下按鈕時執行一次該函數
3.echarts圖形化顯示
import * as echarts from '../../ec-canvas/echarts.min';let chart = null;function initChart(canvas, width, height, dpr) {chart = echarts.init(canvas, null, {width: width,height: height,devicePixelRatio: dpr});canvas.setChart(chart);return chart;
}