路虽远 行则将至

Lee


  • 主页
  • 归档
  • 分类
  • 标签
  •   

站点访客数   人

站点浏览量   次

本页浏览量   次

© 2024 辣辣辣白菜

Theme Typography by Makito

Proudly published with Hexo

记一次阿里云物联网MQTT的调试过程

Posted at 2024-03-14 Coding  物联网 微信小程序 MQTT 

阿里云平台配置设备Topic和消息流转

客户不想再搭建服务器来接收设备端消息和下发数据,只要在小程序端时刻接收;而小程序端和设备端都属于“设备”,他们之间是不能互通消息的,所以需要把设备端上报的数据流转到小程序端,小程序端从后端拉取数据需要流转到设备端。

首先需要配置设备的自定义主题,用于发布 (publihs) 和接收 ( receive ) 消息:

image-20240314133410333

再配置设备之间的消息流转:

小程序到设备端的消息流转

image-20240314133952180

在添加完成规则之后,记得在管理界面启动规则。

小程序端配置

阿里云在 Github 开源了专为 Web端、小程序端开发的 JS SDK,在 https://github.com/aliyun/alibabacloud-iot-device-sdk ,从 dist/

下载 alibabacloud-iot-device-sdk.min.js ,导入到小程序中便可以使用了。

配置全局MQTT

因为设备端上报数据是不定时的,所以小程序需要一直开着并连接到阿里云的MQTT服务器。而且在所有页面中都要保持连接状态,可以在 app.js 中配置MQTT连接。

const iot = require('/utils/alibabacloud-iot-device-sdk.min.js');
App({
  onLaunch() {
    let args = wx.getStorageSync("args")
    let openid
    if (args) {
      openid = args["openid"]
      console.log(openid)
    }
    const device = iot.device({
      productKey: 'XXXXX',
      deviceName: 'wechat',
      deviceSecret: 'XXXXXXXXX',
      protocol: 'wxs://',
    });
    device.subscribe('/XXX/wechat/user/receive'); // 订阅设备端报过来的数据
    device.on('connect', () => {
      console.log('connect successfully!');
    });
    device.on('message', (topic, payload) => {
      let data = JSON.parse(payload.toString())
      console.log(topic, data)
      // 流转来的消息都会到此处判断。
    });
  },
})

MQTT.fx模拟设备端连接云平台

经我测试,MQTTX无法连接云平台,不知道是配置原因还是限制原因,官方推荐使用MQTT.fx连接。

首先在云平台查看设备端的MQTT连接参数:

image-20240314134238272

在 MQTT.fx 中添加一条 Profile,按连接参数填入对应信息即可,需要注意的是 SSL/TLS 下的配置:

image-20240314134730437

连接成功后便可以向设备端的 publish 主题 发布消息:

image-20240314134858415

在小程序端编写好上传下发数据的逻辑代码后,便可以订阅 receive 主题来测试消息流转能力:

image-20240314135101808

另外需要注意的是密码和ClientID是动态变化的,如果只是测试用途每连接一次则会变化一次,实际设备场景中,密码是需要加密算法生成的。

공유하기 

 이전 포스트: (C)LeetCode刷题记录 다음 포스트: (JS)NodeJS+微信小程序接入支付宝支付沙箱 

站点访客数   人

站点浏览量   次

本页浏览量   次

© 2024 辣辣辣白菜

Theme Typography by Makito

Proudly published with Hexo