Python快速實現MQTT主題訂閱和消息接收
源自於 https://www.cooooder.com/archives/20210303
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
"""
回呼函數:當MQTT代理回應用戶端連接請求時觸發
:param client: 回檔返回的用戶端實例
:param userdata: Client()或user_data_set()中設置的私有使用者資料
:param flags: MQTT代理發送的回應標識
:param rc: 連接結果
0:連接成功
1:連接被拒絕 - 協議版本
2: 連接被拒絕 - 用戶端識別字無效
3:連接被拒絕 - 伺服器不可用
4:連接被拒絕 - 用戶名或密碼錯誤
5:連接被拒絕 - 未授權6-255:當前未使用
:return:
"""
print("Connected with result code "+str(rc))
# 在on_connect()中進行消息訂閱,是因為如果丟失連接進行重連,主題也會重新被訂閱
client.subscribe("alex9ufo/house/#")
def on_message(client, userdata, message):
"""
回呼函數:當接收到MQTT代理發佈的消息時觸發
:param client: 回檔返回的用戶端實例
:param userdata: Client()或user_data_set()中設置的私有使用者資料
:param message: MQTTMessage的一個實例,這是一個包含主題,有效負載,qos,retain的類
:return:
"""
print(message.topic+" "+str(message.payload))
mq_client = mqtt.Client(client_id='alex9ufo_pts')
mq_client.on_connect = on_connect
mq_client.on_message = on_message
# 連接到EMQX Broker MQTT代理
mq_client.connect("broker.hivemq.com", 1883, 60)
# 阻塞式自動處理收發資料、自動處理重新連接,所有的資料處理邏輯都在預先設定好的回呼函數中進行的
mq_client.loop_forever()
>>> %Run -c $EDITOR_CONTENT
Connected with result code 0
alex9ufo/house/main-light b'Hello, World!'
alex9ufo/house/main-light b'Hello, World!'
沒有留言:
張貼留言