欢迎访问宙启技术站
智能推送

在Python中使用paho.mqtt.client库发布和接收MQTT消息

发布时间:2023-12-28 15:03:31

paho.mqtt.client是一个用于构建MQTT客户端的Python库,支持发布和接收MQTT消息。下面是一个使用paho.mqtt.client库发布和接收MQTT消息的例子。

首先,需要安装paho.mqtt.client库,可以通过在终端执行以下命令进行安装:

pip install paho-mqtt

然后,我们可以开始编写发布和接收MQTT消息的代码。

### 发布MQTT消息的例子

import paho.mqtt.client as mqtt

# 连接成功回调函数
def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
    client.subscribe("test/topic")  # 订阅主题

# 发布消息成功回调函数
def on_publish(client, userdata, mid):
    print("Message published")

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

# 设置连接成功和发布消息成功的回调函数
client.on_connect = on_connect
client.on_publish = on_publish

# 设置MQTT服务端的地址和端口
client.connect("mqtt.example.com", 1883, 60)

# 循环处理网络流量,保持与MQTT代理的连接
client.loop_start()

# 发布消息
client.publish("test/topic", "Hello, MQTT!")

# 停止循环并断开与MQTT代理的连接
client.loop_stop()
client.disconnect()

在上面的例子中,我们首先定义了两个回调函数on_connect和on_publish。当连接成功时,on_connect回调函数会被调用,并订阅"test/topic"主题。而当消息发布成功时,on_publish回调函数会被调用。

然后,我们创建了一个MQTT客户端,并通过client.on_connect和client.on_publish设置了连接成功和发布消息成功的回调函数。

接下来,我们通过client.connect方法连接到MQTT代理,并指定了MQTT代理的地址和端口。

通过调用client.publish方法,我们可以发布一条消息到"test/topic"主题,并传递消息内容。

最后,通过client.loop_start方法开启网络循环,保持与MQTT代理的连接,并通过client.loop_stop和client.disconnect方法停止循环并断开与MQTT代理的连接。

### 接收MQTT消息的例子

import paho.mqtt.client as mqtt

# 连接成功回调函数
def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
    client.subscribe("test/topic")  # 订阅主题

# 接收到消息回调函数
def on_message(client, userdata, msg):
    print("Received message: " + str(msg.payload))

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

# 设置连接成功和接收消息的回调函数
client.on_connect = on_connect
client.on_message = on_message

# 设置MQTT服务端的地址和端口
client.connect("mqtt.example.com", 1883, 60)

# 循环处理网络流量,保持与MQTT代理的连接
client.loop_start()

# 保持程序运行
try:
    while True:
        pass
except KeyboardInterrupt:
    pass

# 停止循环并断开与MQTT代理的连接
client.loop_stop()
client.disconnect()

在上面的例子中,我们同样定义了两个回调函数:on_connect和on_message。当连接成功时,on_connect回调函数会被调用,并订阅"test/topic"主题。而当接收到消息时,on_message回调函数会被调用。

然后,我们创建了一个MQTT客户端,并通过client.on_connect和client.on_message设置了连接成功和接收消息的回调函数。

接下来,通过client.connect方法连接到MQTT代理,并指定了MQTT代理的地址和端口。

通过调用client.loop_start方法开启网络循环,保持与MQTT代理的连接。

在这个例子中,我们使用了一个无限循环来保持程序运行,直到收到KeyboardInterrupt信号(通过按下Ctrl+C)跳出循环,然后停止循环并断开与MQTT代理的连接。

以上就是使用paho.mqtt.client库发布和接收MQTT消息的例子。通过这个库,我们可以方便地创建MQTT客户端,实现发布和接收MQTT消息的功能。