python操作mqtt

概述

python操作mqtt主要通过paho-mqtt 库实现,支持mqtt 3.1/ 3.1.1协议。

连接操作

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

transport:设置为“websockets”通过WebSockets发送MQTT。 保留默认的“tcp”使用原始TCP。

代码示例

broker = '192.168.31.88'
port = 1883
topic = "/python/mqtt"
client_id = 'python-mqtt-{}'.format(random.randint(0, 1000))

 # ClientId不能重复,也可不传入
 client = mqtt.Client(client_id)   
 # 匿名登录不需要设置
 client.username_pw_set("admin", "123456")  # 必须设置,否则会返回「Connected with result code 4」
 client.on_connect = on_connect
 client.on_message = on_message
 client.connect(HOST, PORT, 60)
 # 订阅主题
 client.subscribe("test")
  client.loop_forever()

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("test")

def on_message(client, userdata, msg):
    print(msg.topic+" "+msg.payload.decode("utf-8"))
    # 消息处理
def publich():
        result = client.publish(topic, msg)
        # result: [0, 1]
        status = result[0]
        if status == 0:
            print("Send `{}` to topic `{}`".format(msg,topic))
        else:
            print("Failed to send message to topic {}".format(topic)

可设置选项

ws_set_options(self, path="/mqtt", headers=None)
# 重发消息时间
message_retry_set(retry)

回调函数

on_connect()
on_disconnect()
on_message() 收到订阅消息时.
on_publish() 消息已传输到代理时被调用
on_subscribe()
on_unsubscribe()
on_log() 当客户端有日志信息时调用

维持与mqtt代理之间的连接

loop()

定期调用处理网络事件

loop(timeout=1.0, max_packets=1)

示例

run = True
while run:
    client.loop()

loop_start()

在后台启动一个线程来自动调用loop()
调用loop_stop()来停止后台线程

client.connect("iot.eclipse.org")
client.loop_start()

loop_forever()

网络循环的阻塞形式,直到客户端调用disconnect()时才会返回。它会自动处理重新连接。

loop_forever(timeout=1.0, max_packets=1, retry_first_connection=False)

消息发送

publish(topic, payload=None, qos=0, retain=False)

retain:是否是retain消息

订阅主题

subscribe(topic, qos=0)

订阅一个或多个主题。

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值