python 订阅话题_使用Python发送、订阅消息

使用Python发送、订阅消息

使用插件 paho-mqtt

官方文档:http://shaocheng.li/post/blog/2017-05-23

Paho 是一个开源的 MQTT 客户端项目,提供多种语言的 MQTT 客户端实现,包括 C、C++、C#、Java、Python、JavaScript 等,完全支持 MQTT v3.1 和 v3.1.1 。Paho Python Client 是它的 Python 语言版本,支持 Python 2.7 和 3.x 。更多特性可以查看 http://www.eclipse.org/paho/clients/python/ ,源码和文档在 https://github.com/eclipse/paho.mqtt.python 。

安装

在 Python 环境中用 pip install paho-mqtt 命令安装,或者下载源码:

git clone https://github.com/eclipse/paho.mqtt.python.git

cd org.eclipse.paho.mqtt.python.git

python setup.py install

下面是一个简单的例子,连接一个 borker ,订阅系统默认话题,获取 broker 的版本号:

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):

print("Connected with result code "+str(rc))

client.subscribe("$SYS/broker/version")

def on_message(client, userdata, msg):

print(msg.topic+" "+str(msg.payload))

client = mqtt.Client()

client.on_connect = on_connect

client.on_message = on_message

client.connect("iot.eclipse.org", 1883, 60)

client.loop_forever()

保存到 paho-mqtt.py 文件,执行:

$ python paho-mqtt.py

Connected with result code 0

$SYS/broker/version mosquitto version 1.4.10

编程

paho.mqtt 包提供了三个类,Client、Publish 和 Subscribe。Publish 和 Subscribe 提供了简单的方法,一次性的发送或者接收消息,不会保持连接。Client 包含了新建客户端、连接、订阅、发送、回调函数等方法。通常的编程步骤是新建一个 Client 的实例,然后调用它提供的连接、发布和订阅等方法与 broker 通讯:

新建一个 Client 实例

用一个 connect*() 函数连接 broker

用一个 loop*() 函数,维持与 broker 的连接

用 subscribe() 函数订阅一个话题,接收消息

用 publish() 函数发布消息

用 disconnect() 函数断开连接

下面主要介绍 Client 提供的方法,使用前先导入:

import paho.mqtt.client as mqtt

初始化

新建一个 Client 实例:

Client(client_id="", clean_session=True, userdata=None, protocol=MQTTv311, transport="tcp")

这是 Client 类的构造函数,参数的含义:

client_id ,设置客户端的 ID ,应该是一个字符串,连接时向 broker 提交。如果为空,会随机生成一个 id ,此时&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值