使用Mosquitto/python3进行MQTT连接

一、简介

MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件。
在这里插入图片描述

MQTT传输的消息分为主题Topic和负载payload,当订阅指定的Topic后,就会收到该Topic下的消息内容payload。

二、mosquitto使用

安装

https://mosquitto.org/download/

windows:
在这里插入图片描述
linux:

apt install mosquitto

开启broker

C:\Program Files\mosquitto>mosquitto.exe --help
C:\Program Files\mosquitto>mosquitto.exe -p 5555 -v

在这里插入图片描述

开启Subscriber

指定broker并指定"test"的topic进行订阅

C:\Program Files\mosquitto>mosquitto_sub.exe --help
C:\Program Files\mosquitto>mosquitto_sub.exe -h 127.0.0.1 -p 5555 -t  "test"

使用Publisher发送消息

指定"test"的topic发送payload为123的消息:

C:\Program Files\mosquitto>mosquitto_pub.exe --help
C:\Program Files\mosquitto>mosquitto_pub.exe -h 127.0.0.1 -p 5555 -t "test" -m "123"

在这里插入图片描述
此时的Subscriber:
在这里插入图片描述

三、解决TLS证书问题

使用mosquitto_sub时,因为tcp传输问题不成功:
在这里插入图片描述
原因是证书问题,导致TCP握手并不成功,图为携带证书后的结果:
在这里插入图片描述
为解决该问题,首先pip安装如下库:

pip3 install paho-mqtt

使用如下代码:

import ssl
import paho.mqtt.client as mqtt# 定义回调函数,处理接收到的消息
def on_message(client, userdata, msg):print(f"Topic: {msg.topic}, Message: {msg.payload.decode('utf-8')}")# 定义回调函数,处理连接事件
def on_connect(client, userdata, flags, rc):print("Connected with result code " + str(rc))# 订阅主题client.subscribe("your/topic")# 创建 MQTT 客户端
client = mqtt.Client()
# 设置连接和消息回调函数
client.on_connect = on_connect
client.on_message = on_message
# 禁用证书认证
client.tls_set(ca_certs=None, certfile=None, keyfile=None, cert_reqs=ssl.CERT_NONE, tls_version=ssl.PROTOCOL_TLS, ciphers=None)
# 连接到 MQTT 代理服务器
client.connect("your_host_address", 8883, 60)
# 开始处理消息循环
client.loop_start()# 保持连接
while True:pass# 停止消息循环
client.loop_stop()# 断开与 MQTT 代理服务器的连接
client.disconnect()

结果成功订阅:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/238804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CMake保姆级教程】制作动静态链接库、指定动静态库输出路径

文章目录 前言一、动静态链接库的介绍1.1 动态链接库 (DLL)1.2 静态链接库 (LIB) 二、制作静态库三、制作动态库四、指定动静态库输出路径4.1 方式1 - 适用于动态库4.2 方式2 - 都适用 总结 前言 在软件开发中,我们经常听到动态链接库(Dynamic Link Lib…

[LitCTF 2023]PHP是世界上最好的语言!!

[LitCTF 2023]PHP是世界上最好的语言&#xff01;&#xff01; wp 进入页面&#xff0c;发现左边有输入框&#xff0c;下面有 RUN CODE 字样&#xff0c;估计是可以执行命令的。 执行 PHP 代码测试 <?php print(1); ?>将 PHP 一句话木马写入文件 为了蚁剑能连上&am…

全国30米分辨率逐年最大NDVI数据集

全国30米分辨率逐年最大NDVI数据集 中国30m逐年NDVI最大值数据集是基于Google Earth Engine&#xff08;GEE&#xff09;遥感云计算平台&#xff0c;利用美国陆地卫星Landsat 5/7/8/9遥感影像计算的1986年以来的逐年度NDVI最大值数据集。计算过程中对每年度全年所有的Landsat5/…

智能算力进阶C位,揭秘人工智能产业背后的“冰山一角”

作者 | 曾响铃 文 | 响铃说 前几年&#xff0c;在IDC领域&#xff0c;市场谈及最多的还是数据中心&#xff0c;随着人工智能产业的成熟&#xff0c;特别是今年以来大模型的爆发&#xff0c;智算中心逐步替代了数据中心进入大众视野&#xff0c;成为市场热议的关键词&#xff…

hbase用shell命令新建表报错ERROR: KeeperErrorCode = NoNode for /hbase/master

或者HMster开启后几秒消失问题解决 报错如图&#xff1a; 首先jps命令查看当前运行的内容有没有HMaster,如果没有&#xff0c;开启一下hbase,稍微等一会儿&#xff0c;再看一下HMaster,如果仍和下图一样没有&#xff0c;就基本找到问题了 本人问题原因&#xff1a;hbase-site…

redis 从0到1完整学习 (四):字符串 SDS 数据结构

文章目录 1. 引言2. redis 源码下载3. 字符串数据结构4. 参考 1. 引言 前情提要&#xff1a; 《redis 从0到1完整学习 &#xff08;一&#xff09;&#xff1a;安装&初识 redis》 《redis 从0到1完整学习 &#xff08;二&#xff09;&#xff1a;redis 常用命令》 《redis…

【每日一题】美丽塔 II

Tag 【单调栈】【数组】【2023-12-21】 题目来源 2866. 美丽塔 II 题目解读 题目意思相对明确&#xff0c;所谓的美丽塔数组就是山状数组&#xff0c;即有一个高度为 maxHeight[i] 的山峰&#xff0c;山峰两侧的高度要小于 maxHeight[i] 并且小于各自的允许高度。需要找出满…

Simulink仿真中Sine Wave产生的正弦波形不规则,怎么解决

在使用simulink仿真时&#xff0c;使用Sine Wave模块产生的正弦波形不是正弦的&#xff0c;如下所示&#xff1a; 这个是由于simulink仿真中自动计算步长很长的原因导致的&#xff0c;此时需要将自动的步长更改&#xff0c;操作步骤如下所示&#xff1a; 1.点击设置按钮&#…

Unresolved plugin: ‘org.apache.maven.plugins‘解决报错

新建springboot项目报Unresolved plugin: ‘org.apache.maven.plugins:maven-surefire-plugin:3.1.2’ 缺什么插件 引入什么插件的依赖就行 <dependency><groupId>org.apache.maven.plugins</groupId><artifactId>maven-install-plugin</artifact…

如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 1

本系列将分成三个部分&#xff0c;您将学习如何使用 Helm 在 Kubernetes 上集成 Prometheus 和 Grafana&#xff0c;以及如何在 Grafana 上创建一个简单的控制面板。Prometheus 和 Grafana 是 Kubernetes 最受欢迎的两种开源监控工具。学习如何使用 Helm 集成这两个工具&#x…

STM32的以太网外设+PHY(LAN8720)使用详解(6):以太网数据接收及发送

0 工具准备 1.野火 stm32f407霸天虎开发板 2.LAN8720数据手册 3.STM32F4xx中文参考手册1 以太网数据接收及发送 1.1 以太网数据接收&#xff08;轮询&#xff09; 1.1.1 检查是否接收到一帧完整报文 使用轮询的方式接收以太网数据是一种简单但是效率低下的方法&#xff0c;…

2023 下半年系统架构设计师学习进度

文章目录 复习计划&#xff1a;每周350分钟第一周&#xff08;339分钟&#xff09;第二周&#xff08;265分钟&#xff09;第三周&#xff08;171分钟&#xff09;第四周&#xff08;214分钟&#xff09;第五周&#xff08;274分钟&#xff09;第六周&#xff08;191分钟&#…

im6ull学习归纳总结(一)APP——04_文件IO

4.1文件从何而来 如图所示文件可以是 1真实文件保存在设备上 2内核提供的虚拟文件 3设备节点 4.2文件的访问方式 4.2.1通用IO模型&#xff1a;open/read/write/lseek/close 实验1 copy文件 代码 #include <sys/types.h> #include <sys/stat.h> #include <fc…

大模型杀入HR赛道,AI能扮演好企业的“人才捕手”吗?

导读&#xff1a;生成式AI如何让HR回归本质。 当很多人焦虑未来会“被AI夺走工作”时&#xff0c;HR行业本身也在AI浪潮推动下发生巨变。 AI技术现已应用于人力资源管理的各个环节中。根据领英发布的《2024全球人才趋势报告》&#xff0c;61%的HR已经在使用AI相关技术辅助日常工…

Python密码魔法:制作个性化、安全性满分的密码生成器秘籍!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 密码是保护个人信息安全的关键&#xff0c;而一个强密码生成器能够帮助用户创建高度安全的密码。本文将介绍如何使用 Python 制作一个简单而功能强大的密码生成器&#xff0c;涵盖了各种生成密码的方法、密码强度…

Linux数据库主从复制(单主单从)

MySQL主从复制的优点包括&#xff1a; 1、横向扩展解决方案 - 在多个从站之间分配负载以提高性能。在此环境中&#xff0c;所有写入和更新都必须在主服务器上进行。但是&#xff0c;读取可以在一个或多个从设备上进行。该模型可以提高写入性能&#xff08;因为主设备专用于更新…

【接口测试】如何定位BUG的产生原因

我们从在日常功能测试过程中对UI的每一次操作说白了就是对一个或者多个接口的一次调用&#xff0c;接口的返回的内容(移动端一般为json)经过前端代码的处理最终展示在页面上。http接口是离我们最近的一层接口&#xff0c;web端和移动端所展示的数据就来自于这层&#xff0c;那么…

用C爬取人人文库并分析实现免积分下载资料

最近有个学妹学习遇到问题&#xff0c;想要的学习资料都在文库中&#xff0c;因为资料太多太杂&#xff0c;想要一篇篇找太难了&#xff0c;主要是太浪费精力了。因此&#xff0c;听说这个事情我能解决&#xff0c;立马找到我&#xff0c;给我一杯奶茶就把我收买了&#xff0c;…

【Seata源码学习 】 扫描@GlobalTransaction注解 篇一

1. SeataAutoConfiguration 自动配置类的加载 基于SpringBoot的starter机制&#xff0c;在应用上下文启动时&#xff0c;会加载SeataAutoConfiguration自动配置类 # Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfigurationio.seata.spring.boot.aut…

DPDK单步跟踪(3)-如何利用visual studio 2019和visual gdb来单步调试dpdk

准备工作 因为时间的关系&#xff0c;我想到哪说到哪&#xff0c;可能没那么高的完成度。 但其实有心的人&#xff0c;看到这个标题&#xff0c;就关了本文自己能做了。 why和how to build debug version DPDK,见前两篇。这里我们准备开始。 首先&#xff0c;你有一台linux机…