首页 小程序 微信小程序连接阿里云物联网

微信小程序连接阿里云物联网

添加文件至utils目录

在这里插入图片描述
一个是mqtt.min.js,另一个是hex_hmac_sha1.js,这两个文件的话,我已上传资源,下载即可,或者直接私我,我发邮箱,或者上github,上面也有

把下面代码粘贴至需要通信的页面的JS中

举例:我放在goExpress.js下

在这里插入图片描述

var mqtt = require('../../utils/mqtt.min.js') //根据自己存放的路径修改const crypto = require('../../utils/hex_hmac_sha1.js'); //根据自己存放的路径修改Page({  data: {     },  onLoad: function () {  	//注意:这里在程序运行后会直接进行连接,如果你要真机调试,记得关掉模拟器或者使用一个按钮来控制连接,以避免模拟器和真机同时进行连接导致两边都频繁断线重连!    this.doConnect()  },  doConnect(){    const deviceConfig = {      productKey: "替换",      deviceName: "替换",      deviceSecret: "替换",      regionId: "cn-shanghai"//根据自己的区域替换    };    const options = this.initMqttOptions(deviceConfig);    console.log(options)    //替换productKey为你自己的产品的(注意这里是wxs,不是wss,否则你可能会碰到ws不是构造函数的错误)    const client = mqtt.connect('wxs://productKey.iot-as-mqtt.cn-shanghai.aliyuncs.com',options)    client.on('connect', function () {      console.log('连接服务器成功')      //注意:订阅主题,替换productKey和deviceName(这里的主题可能会不一样,具体请查看控制台-产品详情-Topic 类列表下的可订阅主题),并且确保改主题的权限设置为可订阅      client.subscribe('/productKey/deviceName/user/get', function (err) {        if (!err) {           console.log('订阅成功!');        }      })    })	//接收消息监听    client.on('message', function (topic, message) {      // message is Buffer      let msg = message.toString();      console.log('收到消息:'+msg);     //关闭连接 client.end()    })  },  //IoT平台mqtt连接参数初始化 initMqttOptions(deviceConfig) {    const params = {      productKey: deviceConfig.productKey,      deviceName: deviceConfig.deviceName,      timestamp: Date.now(),      clientId: Math.random().toString(36).substr(2),    }    //CONNECT参数    const options = {      keepalive: 60, //60s      clean: true, //cleanSession不保持持久会话      protocolVersion: 4 //MQTT v3.1.1    }    //1.生成clientId,username,password    options.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;  }, 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);  }})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78

改动

改动1

把三元组:ProductKey,DeviceName,DeviceSecret内容和regionId填好
在这里插入图片描述

改动2

/productKey/deviceName/user/get
  • 1

这个东西,需要根据自身的物联网平台中的设备Topic来进行更换,
在这里插入图片描述
我这里用一个操作权限是发布和订阅来进行更换,即/a1d2nqlFkQ8/n5o8r6WCEHE8ZuFqIaEP/user/topic

测试

在这里插入图片描述
在这里插入图片描述

发送给阿里云端消息:

 client.publish('/a1d2nqlFkQ8/n5o8r6WCEHE8ZuFqIaEP/user/topic','hello mqtt')
  • 1

然后查看日志,收到
在这里插入图片描述

特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。