确保你已经安装了paho-mqtt库,如果没有安装,可以使用以下命令进行安装:
pip install paho-mqtt
import paho.mqtt.client as mqtt
import time
# 定义mqtt连接的回调函数
def on_connect(client, userdata, flags, rc):
# 列出mqtt常用的code
rc_status = ["连接成功", "协议版本错误", "无效的客户端标识", "服务器无法使用", "用户名或密码错误", "无授权"]
if rc == 0:
print("Connected successfully")
else:
# 连接失败打印失败原因
print(f"Connection failed with code {rc_status[rc]}")
# 定义数据接收的回调函数
def on_message(client, userdata, msg):
print(f"Received message: {msg.payload.decode()} on topic: {msg.topic}")
# 定义断开连接时的回调函数
def on_disconnect(client, userdata, rc):
print("Disconnected")
if rc != 0:
print("Unexpected disconnection. Reconnecting...")
# 如果连接断开,尝试重新连接
try:
client.reconnect()
except Exception as e:
print(f"Reconnection failed: {e}")
# 连接mqtt
def mqtt_sub():
# mqtt连接信息
mqtt_host = "192.168.0.93"
# 端口号需要是整型
mqtt_port = 1883
mqtt_username = "admin"
mqtt_pwd = "123456"
mqtt_topic = "/test/"
# 以当前时间作为client_id
client_id = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
# 创建MQTT客户端实
client = mqtt.Client(client_id)
# 设置用户名和密码
client.username_pw_set(mqtt_username, mqtt_pwd)
# 设置事件回调函数
client.on_connect = on_connect
client.on_message = on_message
client.on_disconnect = on_disconnect
# 连接到MQTT
client.connect(mqtt_host, mqtt_port, 60)
# 订阅topic
client.subscribe(mqtt_topic )
# 启动客户端循环
client.loop_forever()
if __name__ == '__main__':
mqtt_sub()