0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于pahomqtt 1.1.0设计的一套MQTT客户端程序

RTThread物联网操作系统 来源:RTThread物联网操作系统 2020-06-28 09:30 次阅读

背景介绍

目前 RT-Thread 的 paho-mqtt 软件包,是基于 pahomqtt 1.1.0 设计的一套 MQTT 客户端程序。从实际使用中,和论坛反馈中出现如下问题:

只支持 Qos=1,不支持 Qos=0 和 Qos=2 的情况;

数据发送可能出现粘包情况;

功能配置较少,且资源占用较高;

针对上述 mqtt 软件包实际使用问题,RT-Thread 推出 mqtt2.0 版本软件包,即 uMQTT 软件包,符合 MQTT 3.1.1 协议规范,并完善之前存在问题。

uMQTT 软件包介绍

框架图

umqtt_框架图

功能特点

保活机制

uMQTT 具有心跳断连,短时间内重试心跳连接功能

避免短时间内大量订阅发布消息与心跳请求冲突

重连机制

多种重连机制,为您网络连接的稳定性保驾护航。

连接过程中,连接失败进行多次重连尝试

保活机制失败后,进行多次重连尝试

数据接收失败后,进行多次重连尝试

多客户端

同时兼容多个客户端运行工作,便于同个设备连接多个服务器

同步异步

支持用户在复杂情况下订阅发布的需求。

支持同步订阅发送功能,保证开发请求数据同步

异步订阅发送,资源开销小,系统任务运行速率更高。

QOS0/1/2

完美支持 QOS 0/1/2 的订阅发布请求,让用户不用再关心信息的重发机制,直接交给软件包处理

订阅发布

支持基本的订阅发布功能,实现 mqtt 协议规定功能

多功能参数可配置可裁剪

重连时间间隔、重连次数、心跳周期、最大订阅数量、保活机制、重连机制等等参数功能可裁剪可配置,满足开发者再复杂、简单等各种开发环境下的使用需求

资源占用小

所有功能开启,占用空间足够小,适用低资源的 MCU

接口简单,使用方便

每个功能都有独立的接口,接口简单但功能完善,让开发者用最少的接口实现各类需求。

各类软件包对比

uMQTT 软件包获取

menuconfig 配置获取软件包和示例代码

打开 RT-Thread 提供的 ENV 工具,使用menuconfig配置软件包,
启用 uMQTT 软件包,并配置使能测试例程 (Enable MQTT example), 如下所示:

1RT-Threadonlinepackages 2IoT-internetofthings---> 3[*]umqtt:Alightweight,powerful,customizable,easy-to-useandembeddablemqttclientforRT-Thread.---> 4[*]EnableMQTTexample#开启UMQTT例程

使用 pkgs --update 命令下载软件包;

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件包
    +关注

    关注

    0

    文章

    90

    浏览量

    11318
  • RT-Thread
    +关注

    关注

    31

    文章

    1148

    浏览量

    38865

原文标题:使用RT-Thread uMQTT软件包,掌握 MQTT 开发新技能

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    是否可以将客户端控件与CYW920706WCDEVAL起使用?

    是否可以将客户端控件与CYW920706WCDEVAL起使用? 我想用它来发现蓝牙 BR/EDR,然后将其与其他设备配对。 有客户端控制的下载链接或文档吗? 另外,你有 AIROC Connect 蓝牙应用
    发表于 03-01 15:54

    如何使用ESP8266搭建MQTT客户端

    手头有块ESP8266的板子,想搭建MQTT客户端,该如何实现呢?
    发表于 11-07 06:36

    AT32基于FreeRTOS的AWS MQTT客户端

    AT32基于FreeRTOS的AWS MQTT客户端建立MQTT客户端与 AWS IoT Core进行通讯,用户可以基于这个范例去开发属
    发表于 10-26 06:03

    AT32 EMAC MQTT客户端

    AT32 EMAC MQTT Client本文以雅特力的AT32F407/AT32F437系列,演示了系列的范例
    发表于 10-24 06:07

    使用M480 UART驱动ESP8266用于MQTT客户端功能

    应用程序: 本示例使用 M480 UART 驱动 ESP8266 用于 MQTT 客户端功能 。 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件
    发表于 08-30 08:27

    如何使用M480 UART驱动ESP8266用于MQTT客户端功能

    应用程序: 本示例使用 M480 UART 驱动 ESP8266 用于 MQTT 客户端功能 。 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件
    发表于 08-22 08:15

    MQTT中服务端和客户端

    MQTT 是一种基于客户端-服务端架构(C/S)的消息传输协议,所以在 MQTT 协议通信中,有两个最为重要的角色,它们便是服务端和客户端。 1)服务端
    的头像 发表于 07-30 14:55 1587次阅读

    盘点2023年值得尝试的MQTT客户端工具

    随着物联网(IoT)的快速发展,MQTT协议被许多公司和开发人员广泛使用。在学习和使用 MQTT 的过程中,MQTT 客户端工具用于连接 MQTT
    的头像 发表于 07-13 10:11 3008次阅读
    盘点2023年值得尝试的<b class='flag-5'>MQTT</b><b class='flag-5'>客户端</b>工具

    MQTT客户端快速入门指南 按键按下

    MQTT客户端快速入门指南 按键按下
    发表于 07-03 18:34 0次下载
    <b class='flag-5'>MQTT</b><b class='flag-5'>客户端</b>快速入门指南 按键按下

    MQTT客户端空气质量快速入门指南

    MQTT客户端空气质量快速入门指南
    发表于 07-03 18:34 0次下载
    <b class='flag-5'>MQTT</b><b class='flag-5'>客户端</b>空气质量快速入门指南

    ESP8266为什么不能根据来自客户端的连接触发新的html网页?

    我正在尝试在 ESP8266 上创建客户端程序以响应多个 html 网页;当客户选择按钮时。基本上不同的页面用于不同的 LED 控件集。我正在使用 WiFiClient 客户端创建与服
    发表于 06-06 10:37

    使用Wemo D1 Mini作为MQTT客户端,编译错误Wemo是怎么回事?

    些示例代码进行简单编译,以尝试使用 Wemo D1 Mini 作为 MQTT 客户端。 但是到目前为止,我尝试过的每个示例草图都会出现相同的编译错误 我觉得我定是在某个地方错过了
    发表于 06-02 06:16

    如何在rtos mqtt示例中获取客户端句柄?

    中,我调用 代码:全选esp_mqtt_client_publish() 但我没有客户端句柄,它只在回调中设置。我尝试使用客户端句柄的全局副本,但它没有用,除了是个坏主意: 代码:全选
    发表于 05-15 08:13

    当WiFi信号变低时,服务器和客户端之间的TCP通信丢失,如何使客户端重新连接?

    大家好, 当 WiFi 信号变低时,服务器和客户端之间的 TCP 通信丢失,比如超过 -80dBm。客户端断开连接,它就无法重新连接并正常进行通信。如何让客户端在这里重新连接。
    发表于 05-15 07:31

    MQTT客户端内存泄漏问题如何解决?

    嗨, 我是 nodeMCU 的新手,所以这可能是我 我在 NodeMCU 0.9.6 build 20150704 的 MQTT 客户端中看到内存泄漏 这 是我的代码,下面 所以它连接并断开与由触发
    发表于 05-09 06:10