MN316 OpenCPU丨MQTT使用介绍

MQTT(Message Queuing Telemetry Transport)即消息队列遥测传输,是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。MQTT协议是轻量、简单、开放和易于实现的,广泛应用于医疗设备、智能家居、及一些小型化设备中。本文对MN316标准版 OpenCPU SDK中MQTT demo代码进行解析,并演示通过MQTT协议连接OneNET平台实现方法

  • 代码分析

MQTT demo测试流程图如下:

图1 MQTT Demo测试流程图

在模组上电开机后,调用MQTT demo的测试指令为: CM:MQTT:ssl_enable:client_index:opt其中ssl_enable取0-1,0代表非加密传输,1代表加密传输,demo目前仅有4通道配置了加密传输

client_index取0-4,代表要使用的client对象通道,demo目前仅有4通道配置了加密传输,客户可自行添加修改

opt取0-7代表操作项,0-7依次代表client初始化、连接、订阅、发布、取消订阅、获取当前订阅主题、断开连接和销毁client

进入调用函数void cm_test_mqtt(unsigned char **cmd, int len) 后,将执行以下操作:

1.1判断输入格式及读取指令参数

len为以冒号分割的指令个数。

图2 判断输入参数

将指令中的值分别写入ssl_typeoptindex三个参数。

1.2 根据指令判断将要进行的MQTT操作

首先判断操作项,即opt参数的值

图3 判断执行的操作

opt0时,初始化客户端,创建客户端实例,实例取值0~4Demo仅有4通道配置了加密传输

图4 初始化客户端

设置客户端参数

图5 设置客户端参数

如果实例号为4,进行SSL设置。

图6 SSL配置

opt1时,即进行OneNET连接,其中,会通过判断index的值,来选择使用哪个实例,判断后进行连接参数配置,并开始连接。

图7 连接服务器

opt2时,进行订阅Topic的操作。其中QOS等级分为0~2OneNET平台仅支持01,订阅时将QOS设置为0

图8 设置QOS等级

opt3时,发布信息,其中QOS等级设置为1pubmessagesubtopic分别为发布的消息内容及发布的topicindex即实例号;长度为strlen(pubmessage)publish_flags为固定头部信息。

图9 发布消息

注:针对某些只可发布不可订阅的主题,需要额外定义一个pubtopic

opt为4时,取消订阅主题。

图10 取消订阅主题

opt为5时,查看已订阅的topic。

图11 查阅订阅的topic

opt为6时,关闭连接。

图12 关闭连接

Opt7时,释放client

图13 释放client

  • 实际操作

2.1平台侧创建产品

首先,我们要在平台侧创建产品,具体的创建步骤见OneMO线上服务平台 (onemo10086.com)我们这里使用MQTT套件进行创建。

2.2 连接参数配置

订阅主题:

格式为:$sys/产品ID/设备名称/#

图14 SUB订阅主题

发布主题:

格式为:$sys/产品ID/设备名称/dp/post/json

图15 PUB发布主题

发布主题消息:

格式须严格按照OneNET要求的JSON格式

图16 发布主题消息

服务器地址:

图17 设置服务器地址

端口号:

图18 设置服务器端口号

客户端ID即设备名称:

图19 设置客户端ID

用户名即产品ID:

图20 设置服务器端口号

密码使用Token工具计算生成:

图21 设置Token秘钥

Token工具使用可参照http://www.onemo10086.com/#/school/article/292

存活时间:

图22 设置设备存货时间

是否清除会话:

图23 是否清楚会话

注意:此选项必须设置为1

  • 执行结果

模组上电开机后依次输入指令,整个工作流程如下:

图24 工作流程

执行指令后,在OneNET平台侧可以查看到设备在线并且数据流已更新:

图25 平台收到数据

  • 注意事项
  1. 在配置订阅和发布主题的参数时需要注意OneNET平台QOS等级仅支持01
  2. 再次登陆前需先关闭连接并释放;
  3. 发布数据格式一定要满足OneNET规定的JSON格式;
  4. 清除会话参数即cmqtt_glob_cfgclean必须设置为1

  • 11
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值