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

    文章

    104

    浏览量

    11592
  • RT-Thread
    +关注

    关注

    31

    文章

    1288

    浏览量

    40114

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

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

收藏 人收藏

    评论

    相关推荐

    百问MQTT协议分析 - MQTT简述及协议报文格式组成

    16.1 mqtt协议介绍 16.1.1 概述 ​MQTT客户端服务架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简
    发表于 12-13 09:29

    socket 客户端与服务器的实现

    1. 理解Socket 在计算机网络中,socket是种通信机制,允许两个程序客户端个服务器)通过网络进行通信。在Python中
    的头像 发表于 11-12 14:30 306次阅读

    esp_iot_sdk_v0.9.6_b1客户端断开连接导致WDT重置怎么解决?

    客户端断开连接,服务器定不会挂起。实际上,由于客户端启动了连接,因此客户端理所当然地应该能够断开连接,而不会对服务器造成任何问题。 IPD,0,80:GET /测试 HTTP/1.
    发表于 07-18 06:33

    来了解MQTT Broker代理

    )和M2M(机器对机器)通信中。MQTT Broker在MQTT通信中扮演着关键的角色,负责管理客户端的连接,接收和处理客户端发布的消息,以及将这些消息传递给订阅了相应主题的订阅者。它
    的头像 发表于 07-15 17:03 384次阅读
    来了解<b class='flag-5'>一</b>下<b class='flag-5'>MQTT</b> Broker代理

    如何同时在ESP8266上运行TCP客户端和TCP服务?

    我们是 esp8266 的长期用户,并在该芯片上运行数千台家庭自动化类别的现场设备。然而,个小小的限制阻碍了我们开发些更有趣和创新的产品。 要求:我们需要同时运行 TCP 客户端(连接
    发表于 07-08 08:26

    MQTT客户端栈大小分配过大而导致无法初始化怎么处理?

    在配置MQTT客户端时,因为我想接收很大的数据包(最大500k)。因此我想次接收完成(扩展了psram)。所以我在配置MQTT客户端时将栈
    发表于 06-21 12:54

    服务测试和客户端测试区别在哪

    服务测试和客户端测试是软件开发过程中的两个重要环节,它们分别针对服务器客户端的软件进行测试。本文将详细介绍服务测试和
    的头像 发表于 05-30 15:27 3081次阅读

    无法在Modustoolbox 3.2工具类别中找到客户端控制应用程序,如何解决?

    我最近从 2.4 版升级到了 MTB 3.2 版 我为 343026 BSP 添加了些示例 但我无法在工具类别中找到客户端控制应用程序。 如何才能解决问题?
    发表于 05-22 07:50

    AIROC客户端控制应用程序不起作用的原因?

    正常,但当启动客户端控制应用程序并打开串行端口时,却什么也没发生--所有控件都是灰色的。 然后,我还按照说明中的建议从 Windows 10 PC 上运行 BTSpy 并进行连接 - 客户端控制应用
    发表于 05-21 06:56

    HarmonyOS开发实例:【分布式新闻客户端

    基于栅格布局、设备管理和多端协同,实现次开发,多端部署的分布式新闻客户端页面。
    的头像 发表于 04-17 15:57 873次阅读
    HarmonyOS开发实例:【分布式新闻<b class='flag-5'>客户端</b>】

    Raspberry Pi树莓派使用Python实现MQTT通信设计

    这次的例子,主要讲述如何基于PYTHON的 MQTT 客户端的使用方法
    的头像 发表于 03-14 11:45 801次阅读
    Raspberry Pi树莓派使用Python实现<b class='flag-5'>MQTT</b>通信设计

    MQTT协议网关解决方案设计与实施

    MQTT协议网关是个中间件,负责接收来自不同MQTT客户端的消息,并将这些消息转发到MQTT服务器;同时,也能接收来自
    的头像 发表于 03-11 14:07 500次阅读

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

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

    适用于Linux的基于Rust的同步客户端介绍

    个简单而优雅的 GUI 同步客户端,提供双向同步。
    的头像 发表于 01-05 11:32 623次阅读
    适用于Linux的基于Rust的同步<b class='flag-5'>客户端</b>介绍

    分享款别样的ssh客户端-PortX

    目前支持ssh的客户端有很多,比如putty、crt、xshell等,今天分享款别样的ssh客户端-PortX,通过简单但全面的UI,PortX为您提供了纯粹的终端模拟体验。
    的头像 发表于 01-02 13:37 728次阅读
    分享<b class='flag-5'>一</b>款别样的ssh<b class='flag-5'>客户端</b>-PortX