Python快速实现MQTT双向订阅发布

提要:本人在物联网开发中,需要使用MQTT技术,以此记录,也可让新手系统快速的入门应用。本文应用为双向订阅发布通信。

一、MQTT基础知识

MQTT简介、基础、认识有很多相关文章,本文不再赘述,但对于没有方向的同学,可以参考我的学习路线,推荐MQTT官网了解相关原理知识–MQTT官网,再看**官网推荐相关系列文章即可使任何人都可以快速掌握MQTT,而无需阅读整个MQTT规范。它解释了MQTT概念的核心,其功能和其他基本信息。**
个人总结:

  • MQTT是用于物联网(IoT)的OASIS标准消息传递协议。
  • 它被设计为一种非常轻量级的发布/订阅消息传送。
  • MQTT中Broker存储数据,转发数据,客户端和服务端是解耦的
  • 订阅发布方通过主题匹配,Broker进行消息转发,也可以解决层级关系,eg: myhome/底楼/客厅/温度
  • 服务质量:级别0:尽力而为。级别1:至少一次。级别2:恰好一次。

二、准备条件

1. MQTT通过Broker存储数据,转发数据,所以要启动一个Broker软件,本人使用[EMQ X Broker官网]

(https://www.emqx.cn/downloads#broker),
1.1 找到对应系统,下载对应版本。比如Windows,以下以此为例
在这里插入图片描述
或者Ubuntu对应下图操作即可
Ubuntu对应步骤
1.2 将 emqx-windows-4.2.9.zip解压,本文解压至桌面C:\Users\Administrator\Desktop\emqx
1.3 在windows命令行,进入你解压的 emqx\bin 目录下cd进入emqx\bin
1.4 在emqx\bin目录下,输入启动服务命令 emqx.cmd start,查询端口是否正在监听netstat -ano | findstr "1883",出现下图即成功
启动成功
1.5 启动服务器后,可以使用网页查看相应状态,包括主题。发送的数据等,浏览器打开http://127.0.0.1:18083,使用默认管理账号admin/public即可登录查看,在设置里还能改成中文界面。

2.使用Python语言进行开发,需要安装依赖包pip install paho-mqtt

在这里插入图片描述

三、MQTT在Python代码快速实现

此代码为双向通信,即一端即为发布者又为订阅者,根据主题不同来区分。如果不需要双向通信,可以不写对应回调函数,以及对应推送或者订阅方法。
根据个人需求更改发布者数据:topic主题,订阅者订阅此主题,即可接到发布者发布的数据;sensor_data即为发送的数据,可以为任意格式,根据个人需求更改

 # 发布MQTT信息
        sensor_data = "ni hao ......from topic-demo"
        client.publish(topic="demo", payload=sensor_data, qos=2)

根据个人需求更改订阅者数据:topic主题,此为test主题,订阅者订阅此主题,即可接到发布者发布的数据;

# 订阅主题 实现双向通信中接收功能,qs质量等级为2
client.subscribe(("test", 2))
  1. A端代码
import paho.mqtt.client as mqtt
import time


# 当代理响应订阅请求时被调用。
def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("连接成功"
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值