微信小程序连接阿里云物联网
生活随笔
收集整理的這篇文章主要介紹了
微信小程序连接阿里云物联网
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 添加文件至utils目錄
- 把下面代碼粘貼至需要通信的頁(yè)面的JS中
- 舉例:我放在goExpress.js下
- 改動(dòng)
- 改動(dòng)1
- 改動(dòng)2
- 測(cè)試
- 發(fā)送給阿里云端消息:
添加文件至utils目錄
一個(gè)是mqtt.min.js,另一個(gè)是hex_hmac_sha1.js,這兩個(gè)文件的話,我已上傳資源,下載即可,或者直接私我,我發(fā)郵箱,或者上github,上面也有
把下面代碼粘貼至需要通信的頁(yè)面的JS中
舉例:我放在goExpress.js下
var mqtt = require('../../utils/mqtt.min.js') //根據(jù)自己存放的路徑修改 const crypto = require('../../utils/hex_hmac_sha1.js'); //根據(jù)自己存放的路徑修改 Page({data: {},onLoad: function () {//注意:這里在程序運(yùn)行后會(huì)直接進(jìn)行連接,如果你要真機(jī)調(diào)試,記得關(guān)掉模擬器或者使用一個(gè)按鈕來(lái)控制連接,以避免模擬器和真機(jī)同時(shí)進(jìn)行連接導(dǎo)致兩邊都頻繁斷線重連!this.doConnect()},doConnect(){const deviceConfig = {productKey: "替換",deviceName: "替換",deviceSecret: "替換",regionId: "cn-shanghai"//根據(jù)自己的區(qū)域替換};const options = this.initMqttOptions(deviceConfig);console.log(options)//替換productKey為你自己的產(chǎn)品的(注意這里是wxs,不是wss,否則你可能會(huì)碰到ws不是構(gòu)造函數(shù)的錯(cuò)誤)const client = mqtt.connect('wxs://productKey.iot-as-mqtt.cn-shanghai.aliyuncs.com',options)client.on('connect', function () {console.log('連接服務(wù)器成功')//注意:訂閱主題,替換productKey和deviceName(這里的主題可能會(huì)不一樣,具體請(qǐng)查看控制臺(tái)-產(chǎn)品詳情-Topic 類列表下的可訂閱主題),并且確保改主題的權(quán)限設(shè)置為可訂閱client.subscribe('/productKey/deviceName/user/get', function (err) {if (!err) {console.log('訂閱成功!');}})})//接收消息監(jiān)聽client.on('message', function (topic, message) {// message is Bufferlet msg = message.toString();console.log('收到消息:'+msg);//關(guān)閉連接 client.end()})},//IoT平臺(tái)mqtt連接參數(shù)初始化initMqttOptions(deviceConfig) {const params = {productKey: deviceConfig.productKey,deviceName: deviceConfig.deviceName,timestamp: Date.now(),clientId: Math.random().toString(36).substr(2),}//CONNECT參數(shù)const options = {keepalive: 60, //60sclean: true, //cleanSession不保持持久會(huì)話protocolVersion: 4 //MQTT v3.1.1}//1.生成clientId,username,passwordoptions.password = this.signHmacSha1(params, deviceConfig.deviceSecret);options.clientId = `${params.clientId}|securemode=2,signmethod=hmacsha1,timestamp=${params.timestamp}|`;options.username = `${params.deviceName}&${params.productKey}`;return options;},/*生成基于HmacSha1的password參考文檔:https://help.aliyun.com/document_detail/73742.html?#h2-url-1 */signHmacSha1(params, deviceSecret) {let keys = Object.keys(params).sort();// 按字典序排序keys = keys.sort();const list = [];keys.map((key) => {list.push(`${key}${params[key]}`);});const contentStr = list.join('');return crypto.hex_hmac_sha1(deviceSecret, contentStr);} })改動(dòng)
改動(dòng)1
把三元組:ProductKey,DeviceName,DeviceSecret內(nèi)容和regionId填好
改動(dòng)2
/productKey/deviceName/user/get這個(gè)東西,需要根據(jù)自身的物聯(lián)網(wǎng)平臺(tái)中的設(shè)備Topic來(lái)進(jìn)行更換,
我這里用一個(gè)操作權(quán)限是發(fā)布和訂閱來(lái)進(jìn)行更換,即/a1d2nqlFkQ8/n5o8r6WCEHE8ZuFqIaEP/user/topic
測(cè)試
發(fā)送給阿里云端消息:
client.publish('/a1d2nqlFkQ8/n5o8r6WCEHE8ZuFqIaEP/user/topic','hello mqtt')然后查看日志,收到
總結(jié)
以上是生活随笔為你收集整理的微信小程序连接阿里云物联网的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: win10如何换pip源
- 下一篇: JDBC程序设计