Python连接MQTT服务器订阅和发布主题-Python物联网开发

news2024/11/15 16:02:51

一、前言

        在物联网开发中,掌握MQTT可以说是一项必备的技能,要使用Python连接MQTT服务器、订阅和发布主题,我们需要导入paho-mqtt库。

二、实现代码

        在之前的文章中,我们也介绍了JAVA是如何连接MQTT服务器实现发布和订阅主题的功能的,因此此处不再赘述。

        文章链接:JAVA&Android实现MQTT上位机软件功能-订阅主题与发布主题

        首先,我们需要安装paho-mqtt库,安装方法可以参考:Python使用pip命令安装外部库

        具体程序实现代码:

import paho.mqtt.client as mqtt
import time

# 定义MQTT服务器的地址和端口
mqtt_broker_address = "broker.emqx.io" #此处我们使用免费服务器
mqtt_broker_port = 1883

# 定义订阅和发布的主题
subscribe_topic = "westbeginer/sub"
publish_topic = "westbeginer/pub"


# 定义回调函数,处理收到的消息
def on_message(client, userdata, message):
    print(f"Received message '{message.payload.decode()}'")


# 创建MQTT客户端实例
client = mqtt.Client()

# 设置消息接收的回调函数
client.on_message = on_message

# 连接到MQTT服务器
client.connect(mqtt_broker_address, mqtt_broker_port, keepalive=60)

# 订阅主题
client.subscribe(subscribe_topic)

# 启动MQTT客户端的循环,等待接收消息
client.loop_start()

#发送Hello字符串
message_payload="hello"
client.publish(publish_topic, message_payload)

while True:
    time.sleep(1)


# 断开MQTT连接 不执行
client.loop_stop()
client.disconnect()

        三、功能演示

        我们使用MQTTBox工具,连接免费MQTT服务器后,订阅和发布报文测试功能。

        可以看到,功能完美实现。

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

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

相关文章

详细介绍node中动态数据内容的压缩应用

未使用 compression 压缩文件时 代码演示: const express require("express"); // 在node express框架当中,对node express框架进行一个引入const app express(); // 利用express()调用,对实例化对象进行获取app.get("/&q…

外汇天眼:美国证券交易委员会(SEC)采纳了一系列规定,以加强与特殊目的收购公司(SPACs)相关的投资者保护

美国证券交易委员会(SEC)今天通过了一系列新规和修订,以增强特殊目的收购公司(SPACs)的首次公开募股(IPOs)中的披露,并在SPACs与目标公司之间的后续业务合并交易(de-SPAC…

FinBert模型:金融领域的预训练模型

文章目录 模型及预训练方式模型结构训练语料预训练方式 下游任务实验结果实验一:金融短讯类型分类实验任务数据集实验结果 实验二:金融短讯行业分类实验任务数据集实验结果 实验三:金融情绪分类实验任务数据集实验结果 实验四:金融…

蓝桥杯省赛无忧 课件42 插入排序

01 插入排序的思想 02 插入排序的实现 03 例题讲解 #include <iostream> #include <vector> using namespace std; void insertionSort(vector<int>& arr) {int n arr.size();for (int i 1; i < n; i) {// 选择arr[i]作为要插入的元素int key arr…

linux系统配置本地yum源

配置本地yum源原因&#xff1a;没有网络&#xff0c;无法使用yum更新下载软件&#xff0c;所以验旧配置一个本地yum源 第一&#xff1a;挂载镜像或者拷贝一份目录下有repodate文件的源 1&#xff09;虚拟机cd/dvd需要绑定iso镜像文件如上图 2&#xff09;备份/etc/yum.repo.d目…

【SVD生成视频+可本地部署】ComfyUI使用(二)——使用Stable Video Diffusion生成视频 (2023.11开源)

SVD官方主页 &#xff1a; Huggingface | | Stability.ai || 论文地址 huggingface在线运行demo : https://huggingface.co/spaces/multimodalart/stable-video-diffusion SVD开源代码&#xff1a;Github&#xff08;含其他项目&#xff09; || Huggingface 在Comfyui使用&…

【Midjourney】绘画风格关键词

1.松散素描(Loose Sketch) "Loose sketch"&#xff08;松散素描&#xff09;通常指的是一种艺术或设计中的手绘风格&#xff0c;其特点是线条和形状的表现相对宽松、自由&#xff0c;没有过多的细节和精确度。这样的素描通常用于表达创意、捕捉概念或者作为设计的初步…

清华大学学生一行赴麒麟信安调研交流

1月24日&#xff0c;清华大学信息科学技术学院电子工程系学子组成的社会实践支队一行到访麒麟信安&#xff0c;调研交流长沙市先进计算产业发展情况和未来规划。 在公司展厅&#xff0c;清华大学学子详细了解了麒麟信安的发展历程、国产操作系统产业现状&#xff0c;以及麒麟信…

第三季《乐队风暴》全国总决赛圆满落幕

2024年1月21日&#xff0c;由广东珠江、盛娱星汇海选联合主办的第三季《乐队风暴》全国海选歌手赛道全国总决赛在广州罗格镇MUSIC LIVE&#xff08;太古仓店&#xff09;正式打响&#xff0c;第三季《乐队风暴》全国海选开启以来共有超8000人报名渴望登上绚丽舞台&#xff0c;从…

1.25 day2 C++

自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void show()

草原超声波气象站

TH-CQX9在广袤无垠的草原上&#xff0c;有一种神秘而重要的设施正在默默地守护着这片美丽的土地&#xff0c;它就是草原超声波气象站。这不仅是一个高科技的气象观测平台&#xff0c;更是草原生态保护的重要一环。那么&#xff0c;草原超声波气象站究竟是什么&#xff1f;它又是…

Java 字符串03 String构造方式代码实现和内存分析 (黑马)

第一种方式&#xff1a; 第二种方式&#xff1a; 有参的字符串&#xff1a; 传递字符串 传递字符数组 应用场景&#xff1a;将abc字符串改为Qbc&#xff0c;那么可以将其转换为数组&#xff0c;然后进行修改&#xff0c;最后传入即可获得Qbc&#xff1b; 字节数组&#xff1a;…

python自动化测试面试题

1、自动化代码中,用到了哪些设计模式? 单例设计模式工厂模式PO设计模式数据驱动模式面向接口编程设计模式 2、什么是断言( Assert) ? 断言Assert用于在代码中验证实际结果是不是符合预期结果&#xff0c;如果测试用例执行失败会抛出异常并提供断言日志 3、什么是web自动化…

服务器运维小技巧(二)——如何进行监控告警

服务器运维难度高的原因&#xff0c;很大程度是因为服务器一旦出现问题&#xff0c;生产环境的业务就会受到严重影响&#xff0c;极有可能带来难以承担的后果。因此这份工作要求工程师保持高要求的服务质量&#xff0c;能够快速响应问题&#xff0c;及时解决问题。 但是“及时…

uniapp Android 离线打包之未配置appkey或配置错误

1、去官网申请appKey: 申请Appkey 2、项目中使用appKey: <meta-dataandroid:name"dcloud_appkey"android:value"794534204bbae06989........" />3、参考 官方教程&#xff0c;修改配置&#xff1a; 配置教程 注意&#xff1a; 本地的appId 和 官…

简单快速取消AlertDialog的白色背景框,AlertDialog设置圆角背景

问题描述&#xff1a; 产品需求弹出的提示框是圆角&#xff0c;使用shape 设置圆角背景后&#xff0c;弹出的AlertDialog提示框四个角有白色的背景&#xff0c;据分析这个背景是 AlertDialog 父组件的背景色。 解决方法&#xff1a; 将Dialog的背景设置为透明色&#xff0c;代…

OpenKruise :Kubernetes背后的托底

一、 诞生背景 Kubernetes 自身提供的应用部署管理功能&#xff0c;无法满足大规模应用场景的需求&#xff0c;例如应用发布时的原地升级策略&#xff0c;流式扩容&#xff0c;缩容顺序控制等等。所以OpenKruise的出现弥补了 Kubernetes 在应用部署、升级、防护、运维等领域的不…

【电子通识】传统网络变压器原理与生产流程

网络变压器也称为网络隔离变压器。传统的网络变压器贴片器件大概长的都类似以下这样&#xff1a; 在网络接口上所起的作用主要有信号耦合、高压隔离、阻抗匹配、电磁干扰抑制作用。它主要用在网络交换机、路由器、网卡等产品。 做为数据传输时使用网络变压器可以达到以下效果&a…

Python元组的创建和删除

Python 是一种功能强大而灵活的编程语言&#xff0c;提供了多种数据类型来存储和操作数据。其中&#xff0c;元组&#xff08;Tuple&#xff09;作为一种不可变的数据类型&#xff0c;在许多情况下都发挥着重要的作用。本文将重点探讨如何创建和删除元组&#xff0c;并探讨元组…

代码随想录 Leetcode102. 二叉树的层序遍历

题目&#xff1a; 代码(首刷看解析 2024年1月24日&#xff09;&#xff1a; class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> res;if(root nullptr) return res;queue<TreeNode*> que;TreeNode…