Python系列 - MQTT协议
Python系列 - MQTT协议
资源连接
MQTT的介绍和应用场景的示例说明
一、什么是MQTT
百度关于MQTT的介绍如下:
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布订阅范式的消息协议。它工作在 TCP/IP协议之上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的。
MQTT适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其次,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
二、 MQTT的特点
MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,因此它具有以下主要的几项特性:
-
轻量级和高效:MQTT协议的客户端代码量小,对系统资源的需求较低。小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量,提高了传输效率。
-
支持双向通信:MQTT协议支持设备到云端以及云端到设备之间的消息传递,使得向大量设备广播消息变得相对简单。
-
数据传输可靠:MQTT支持多种消息服务质量等级(QoS),确保数据按需可靠传输。QoS 0表示最多发送一次,QoS 1表示至少发送一次,QoS 2表示确保消息只有一次到达。
-
支持离线消息:通过保留消息和持久会话,MQTT支持设备离线时的消息保存和转发。
-
简单易用:MQTT协议使用 TCP/IP 提供网络连接,结构简单,易于实现和维护,适合低带宽和不可靠的网络环境。
-
发布/订阅模式:MQTT基于发布/订阅模式,消息通过主题进行分类。客户端可以订阅一个或多个主题,发布者发送消息到特定的主题,所有订阅该主题的客户端都将接收到这些消息,通过提供一对多的消息发布,解除应用程序耦合。
三、 MQTT的工作流程
MQTT的信息基于发布和订阅模式,通过主题进行相应的分类,基于发布订阅模式及其代理服务器的理解示意图:
基于MQTT的发布订阅模式下,其工作流程如下:
其中,MQTT传输的内容包括两个部分:
- 主题(Topic):主题可以理解为信息的主题,订阅者订阅(Subscribe)后,就会收到该主题的内容(payload);
- 负载(payload):可以理解为信息的内容,是指订阅的具体要使用的内容。
四、MQTT的工作模式
MQTT提供三种工作模式来保证数据的传输,三种工作模式和应用场景介绍如下:
- 至多一次:丢掉记录无所谓的场景;
- 至少一次:确保信息到达,但信息可能会重复;
- 只有一次:确保消息到达一次(小型传输,开销小)
五、MQTT的应用场景
MQTT的在如下三种场景下具有明显的优势:
- 带宽低
- 网络延迟高
- 网络通信不稳定
由于MQTT在三大场景下的优势,使得MQTT特别适合物联网(IoT)和类似场景:
-
物联网(IoT):MQTT是物联网领域中最典型的应用之一。在物联网中,大量的设备和传感器需要进行数据的收集、监控和控制。MQTT协议的特性使其成为物联网通信的理想选择。例如,智能家居系统可以使用MQTT来监控和控制家中的各种设备,如智能灯泡、恒温器等。
-
工业控制和远程监测:MQTT在工业控制和远程监测领域也有广泛的应用。它的可靠性和低带宽消耗特性使其非常适合在工业环境中进行实时数据传输和远程控制。例如,工业设备监控可以通过MQTT实时将数据上传至云端或控制中心,用于生产线状态监控、设备维护预警等。
-
即时通讯和实时数据传输:MQTT的低延迟和可靠性使其成为即时通讯和实时数据传输的理想选择。例如,聊天室和实时消息推送应用可以使用MQTT来实现用户之间的实时通讯。此外,MQTT还适用于需要实时数据传输的应用,如实时股票行情、天气数据等。
-
实时位置追踪:MQTT可以用于实时位置追踪应用。移动设备可以发布自己的位置信息,其他用户或系统可以订阅这些信息来获取实时位置数据。这对于车队管理、物流跟踪等应用非常有用。
-
其他场景:MQTT还应用于传感器数据传输、数据传输和同步、远程监控和控制系统等领域。例如,气象站、环境监测等领域可以使用MQTT进行传感器数据的采集和传输;跨平台数据同步、数据备份等场景也可以利用MQTT实现数据的实时同步。
六、python代码实现订阅
> #!/usr/bin/env python
> # 基于Pika实现对MQTT的通信
> import pika
> import sys
> import json
> > channel = conn.channel()
>
> channel.exchange_declare(exchange='test.topic',exchange_type='topic',durable=True) #订阅的topic
>
> result = channel.queue_declare(queue='2570',
> durable=True,auto_delete=False,exclusive=False) queue_name =
> result.method.queue
>
> channel.queue_bind(
> exchange='test.topic', queue=queue_name, routing_key='order.PM02.2570')
>
> print(' [*] Waiting for logs. To exit press CTRL+C')
>
>
> def callback(ch, method, properties, body):
> #print(" [x] %r:%r" % (method.routing_key, body))
> j_text = json.loads(body)
> print(j_text)
> #j_Order = j_text['maintOrder']
> #print(j_Order)
> j_PM = j_text['pmType']
> print(j_PM)> # 执行订阅程序
> channel.basic_consume(
> queue=queue_name, on_message_callback=callback, auto_ack=True) try:
> channel.start_consuming() except Exception as e :
> print(e)
> channel.start_consuming()
参考:
MQTT
MQTT协议
mqtt的应用场景有哪些
相关文章:
Python系列 - MQTT协议
Python系列 - MQTT协议 资源连接 MQTT的介绍和应用场景的示例说明 一、什么是MQTT 百度关于MQTT的介绍如下: MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布订阅范式的消息协议。它工作在 TCP/IP协议之上,是为硬件性能低下的远程设…...
同时在github和gitee配置密钥
同时在github和gitee配置密钥 1. 生成不同的 SSH 密钥 为每个平台生成单独的 SSH 密钥。 # 为 GitHub 生成密钥(默认文件路径为 ~/.ssh/github_id_rsa) ssh-keygen -t rsa -b 4096 -C "your_github_emailexample.com" -f ~/.ssh/github_id_…...
Runway 技术浅析(六):文本到视频(Text-to-Video)
1. 核心组件与工作原理 1.1 自然语言处理(NLP) 1.1.1 文本解析与语义理解 文本到视频的第一步是将用户输入的自然语言文本解析为机器可理解的语义信息。Runway 使用预训练的 NLP 模型,如 GPT-3 和 BERT,这些模型通过大规模文本数…...
云计算vspere 安装过程
1 材料的准备 1 安装虚拟机 vmware workstation 2 安装esxi 主机 3 在esxi 主机上安装windows 2018 dns 服务器 4 在虚拟机上安装windows 2018 服务器 6 安装vcenter 5 登入界面测试 这里讲一下,由于部署vspere 需要在windows 2012 服务器上部…...
QT 实现QStackedWidget切换页面右移动画
1.实现效果 以下是一个QStackedWidget,放了两个QPushButton在上面,点击切换不同的界面。 为了方便查看动画特效,设置了每个界面的背景图片。 2.实现思路 首先截取当前界面的图片,渲染到一个QLabel上,然后设置QPropertyAnimation动画,动画的作用对象就是这个QLabel,不断…...
Android Camera2采集并编码为H.264
前言 本篇博文主要讲述的是基于Android原生MediaCodec通过Camera2 API进行图像数据采集并编码为H.264的实现过程,如果对此感兴趣的不妨驻足观看,也欢迎大家大家对本文中描述不当或者不正确的地方进行指正。如果对于Camera2预览还不熟悉的可以观看博主上…...
DHCP和DNS
DHCP(动态主机配置协议)和DNS(域名系统)是计算机网络中两个重要的协议,它们在网络的管理和使用中发挥着关键作用。 DHCP(动态主机配置协议) 基本功能 自动分配IP地址:DHCP允许网…...
ONES 功能上新|ONES Project 甘特图再度升级
ONES Project 甘特图支持展示工作项标题、进度百分比、依赖关系延迟时间等信息。 应用场景: 在使用甘特图规划项目任务、编排项目计划时,可以对甘特图区域进行配置,展示工作项的工作项标题、进度百分比以及依赖关系延迟时间等维度,…...
<工具 Claude Desktop> 配置 MCP server 连接本地 SQLite, 本机文件夹(目录) 网络驱动器 Windows 11 系统
也是在学习中... 起因: 抖音博客 艾克AI分享 他的视频 #143《Claude开源MCP彻底打破AI的信息孤岛》 提到: Claude开源的MCP太强了,视频后面是快速演示,反正看了好几遍也没弄明白。菜单都不一样,感觉用的不是同一家 Claude. 探…...
GIT的使用方法以及汉化方法
1.下载git软件,可以从官网下载 下载后默认安装即可。 2.找到一个文件夹,或者直接打开gitbash gitbash可以使用cd指令切换目录的 打开后输入 git clone https:[git仓库的网页]即可克隆仓库 就是这个地址 克隆后即可使用代码 如果忘记了命令可以使用 -…...
公因子的数目
给你两个正整数 a 和 b ,返回 a 和 b 的 公 因子的数目。 如果 x 可以同时整除 a 和 b ,则认为 x 是 a 和 b 的一个 公因子 。 输入:a 12, b 6 输出:4 解释:12 和 6 的公因子是 1、2、3、6 。 class Solution {pu…...
数据结构(三)——双向链表的介绍以及实现
前言 前面两期数据结构的文章我们介绍了顺序表和单向链表,那么本篇博文我们将来了解双向链表,作为最好用的一种链表,双向链表有什么特殊之处呢,接下来就让我们一起了解一下吧。 下面是前两篇数据结构的文章: 数据结…...
Webpack开发模式及处理样式资源
一、开发模式介绍 开发模式顾名思义就是我们开发代码时使用的模式。 这个模式下我们主要做两件事: 编译代码,使浏览器能识别运行 开发时我们有样式资源、字体图标、图片资源、html 资源等,webpack 默认都不能处理这些资源,所以我…...
leetcode--设计链表
707.设计链表 你可以选择使用单链表或者双链表,设计并实现自己的链表。 单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。 如果是双向链表,则还需要属性 prev 以指示链表中的…...
【MySQL】:数据库操作
MySQL 数据库基础理论 2.1 数据库系统概述 介绍数据库系统的基本概念、发展历程、分类及 MySQL 在其中的地位与特点。 2.2 MySQL 数据库体系结构 解析 MySQL 的整体架构,包括服务器层与存储引擎层的功能与交互机制,重点探讨 InnoDB、MyISAM 等存…...
刷蓝桥杯历年考题(更新至15届~)
第十五届 CA组省赛 AcWing5980.训练士兵 方法一:树状数组:O(nlogn) self-complete /*先枚举组团,后分析每个士兵,有一个特点,组团费用是固定的,那当然是让所有士兵一块训练,训练完的士兵也不会有损失当还…...
AI与BI的火花:大语言模型如何重塑商业智能的未来
大家好,我是独孤风。 在当今这个数据驱动的时代,企业对于信息的需求如同对于氧气的需求一般至关重要。商业智能(BI)作为企业获取、分析和呈现数据的关键工具,正在经历一场深刻的变革,而这一变革的催化剂正是…...
Qt 详解QtNFC 读写模式
文章目录 Qt NFC 读写模式详解1. NFC 读写模式简介1.1 什么是 NFC 读写模式?主要功能: 1.2 常见应用场景 2. Qt NFC 读写模式原理3. 配置 QtNFC 模块4. NFC 读写操作实现4.1 NFC 标签读取代码示例功能解析 4.2 NFC 标签写入代码示例功能解析 5. 使用注意…...
增删改查文档
列表 : 列表包含 : 模糊查找 分页 列表jsp页面 : 一 :导入外部文件 (举例 : 用户点进来就可以看到菜单,这是预加载属于,使用文档就绪函数实现) 二 : body 上 ① : 文档就绪函数 ${ function() //获取条件查询的字段 //组装对象 //调用文档就绪函数 } ② : 封装ajax方…...
C语言蓝桥杯2023年省赛真题
文章目录 持续更新中...第一题题目描述输入格式输出格式样例输出提示 2 第二题题目描述 第三题题目描述输入格式输出格式样例输入样例输出 第四题题目描述输入格式输出格式样例输入样例输出提示 第四题题目描述输入格式输出格式样例输入样例输出提示 第五题题目描述输入格式输出…...
高性价比塑料链板输送机厂家排行适配指南
随着2026年《工业输送设备安全生产通用规范》正式落地,国内输送设备行业的准入门槛和生产标准迎来新一轮调整,新规对各领域使用的输送设备提出了更明确的合规要求,也给中小企业选购设备提供了清晰的参考标准。2026年输送设备安全生产新规核心…...
离散几何拓扑数论(终稿·全定义完整版一)
离散几何拓扑数论(终稿全定义完整版) 作者:乖乖数学 日期:2026 年 5 月 21 日 体系:离散几何拓扑数论( Discrete Geometric Topological Number Theory)...
Agentic Search能替代GraphRAG吗,结论清晰了
2024 年 GraphRAG 爆火以来,「要不要建图」成了 RAG 系统设计中最常被讨论的决策。建图能显著提升多跳推理性能,但代价高昂——实体抽取、图谱构建、索引维护,每一步都是真金白银。 与此同时,agentic search 系统快速崛起——Sear…...
chatgpt-web-midjourney-proxy的Tauri桌面应用:跨平台AI客户端构建终极指南
chatgpt-web-midjourney-proxy的Tauri桌面应用:跨平台AI客户端构建终极指南 想要在本地轻松体验ChatGPT、Midjourney和GPTs的强大功能吗?chatgpt-web-midjourney-proxy项目的Tauri桌面应用为你提供了完美的解决方案!这款跨平台AI客户端让AI助…...
【大模型12步学习路线 · 第12步 · ①原理篇】多模态 LLM + Multimodal RAG 全景:从 Qwen3-VL 到 ColPali / ColQwen2.5,让 LLM看懂Spec
【大模型12步学习路线 第12步 ①原理篇】多模态 LLM + Multimodal RAG 全景:从 Qwen3-VL 到 ColPali / ColQwen2.5,让 LLM"看懂"Spec 时序图 系列定位:「大模型正确学习顺序」12 步系列 第 12 步 多模态 的 ①原理篇 —— 最后一步,Veri-Copilot v1.0 大结局。 前…...
24V直流电源的大地与正极连接导致的问题
现象: #1, LED控制板的螺丝把24V与机械壳体连接了,壳体放到金属台子上了,电脑的直流地与大地直连。导致烧毁烧糊功率计&电脑; #2, 直流电源的24V与金属壳体短接,其他电源负极与金属台子直接…...
如何打破闭源代码智能模型的垄断?DeepSeek-Coder-V2的技术突围与实践指南
如何打破闭源代码智能模型的垄断?DeepSeek-Coder-V2的技术突围与实践指南 【免费下载链接】DeepSeek-Coder-V2 DeepSeek-Coder-V2: Breaking the Barrier of Closed-Source Models in Code Intelligence 项目地址: https://gitcode.com/GitHub_Trending/de/DeepSe…...
ImageGlass完整指南:高效轻量的Windows图片查看神器
ImageGlass完整指南:高效轻量的Windows图片查看神器 【免费下载链接】ImageGlass 🏞 A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 还在为Windows系统自带的图片查看器功能单一而烦恼…...
Potree加载点云实战:从CloudCompare检查到浏览器3D展示的全链路避坑
Potree点云加载全流程实战:从数据验收到3D可视化的深度指南 点云数据正逐渐成为三维地理信息系统、建筑信息模型和数字孪生领域的核心载体。作为开源点云可视化库的佼佼者,Potree以其高效的Web端渲染能力赢得了众多开发者的青睐。然而在实际项目集成过程…...
擎天租与京东集团达成战略合作,机器人服务加速进入全域场景
5月21日,擎天租宣布与京东集团达成全面战略合作,双方将围绕产品解决方案共建、渠道供应链赋能及规模化采购等方面展开深度合作。此次战略联手,不仅是两家标杆企业在各自优势领域的双向赋能,也将推动RaaS(Robot as a Se…...
