微信小程序接入腾讯云MQTT服务

本文章目的是,将微信小程序连接至MQTT并获取传感器数据。

按照网络所给的连接手段所遇到的困难

客户端不能同时登录

设备侧的数据传输(主要是发布加上少量订阅)需要进行Client的登录。小程序端的数据接收(主要是订阅加上少量发布)也需要进行Client的登录。在腾讯云的MQTT物联网设备中,同一时间下只能由一台设备进行接入。

image-20220708230632651

因此,在我目前的探究下,暂时解决不了这个问题。

具体错误表现为,等我进行登陆时,两台设备由于冲突因此导致有一台设备会强制掉线。

下面以MQTTX软件为例表述错误。

image-20220708230904581

首先让微信小程序先登录(这里已经按规则添加时间戳,clientid并不相同)(后文会详细描述),可以看到服务连接成功。

接下来让MQTTX使用腾讯云提供的临时账号密码进行登录。

image-20220708231124053

image-20220708231153793

点击链接

image-20220708231219693

可以看出MQTTX已经连接设备

image-20220708231752007

观察微信小程序

image-20220708231819275

显然由于设备挤占导致微信小程序下线。

微信小程序导入问题

在使用npm引入MQTT.js后,发现npm构建失败(失败图不阐述,已经解决)。根据网络说法,只有特定版本的MQTT适用于微信小程序,我选用[email protected]版本的min.js文件进行本地静态引用。

image-20220708233947964

解决方案

多设备数据传输

我们希望每个设备都只能进行一对一的接入,对于微信小程序也是如此,这就要求我们必须要进行云端数据流转。

腾讯云物联网通信把一台实体设备和虚拟设备进行配对,因此理论上来说,一台虚拟设备对应一个实体。

这就导致了小程序其实是一个设备,传感器也是一个设备,在小程序connect时传感器是不能connect的,导致了冲突的发生。这也就是我们明明希望小程序只进行订阅却在控制台显示已登录这种情况的发生(理想情况下应该是传感器进行connect,显示的也应该是传感器已登录)。

为了解决这个问题,我们需要在云端进行数据的转发,将小程序与传感器视作单独的设备,只不过需要将传感器的数据通过规则引擎转发。

image-20220709092902888

新建规则后进入查看

image-20220709092933441

我们能看到筛选数据和行为操作。

在筛选数据中,由于我们一般是进行全部转发,因此设置一个*****即可

image-20220709093103066

值得注意的是,字段是按照json数据进行比对的,因此在字段编写的过程中按英文逗号进行分割即可。

image-20220709093239358

同时也可以进行自定义topic,我们只需要在控制台查看字段topic是否正确。

设置转发字段后对转发规则进行设置。

image-20220709093405377

微信小程序登录

微信小程序此时已经和腾讯云的一台设备对应,并且其消息的上下行是通过规则转发进行的,这样我们能够更简洁的查看使用数据并且不用担心客户端挤占(这点依旧有疑惑,倘若微信小程序看的人很多岂不是需要分组管理?)

我们导入[email protected][email protected]两个js库。我在此前阐述过,我的npm无法使用这些库,会报错,因此只能手动静态导入。

image-20220709093923888

接下来的工作就简单了。

// 获取应用实例
const app = getApp()
var mqtt = require('./mqtt.min.js') //根据自己存放的路径修改
// 下面为node引入方式,浏览器的话,使用对应的方式引入crypto-js库
// var mqtt = require('mqtt') //根据自己存放的路径修改
const crypto = require('./crypto-js.js')


Page({
   
   

  /**
   * 页面的初始数据
   */
  data: {
   
   
    client: {
   
   },
    weight: 68,
    heartrate: 92,
    spo2: 96,
    show: false,

    driver_time: 2.5,
    driver_reset: 2
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值