2017-03-25 68 views
0

我正在使用Python中的mqtt lib來通過mqtt發送和接收消息。起初,我只是用這個代碼:如何獲取python中的mqtt連接的消息數據

import paho.mqtt.client as mqtt 


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

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("localhost", 1883, 60) 

client.loop_forever() 

示例代碼工作正常。現在我想實際處理這條消息,但是,我不知道如何訪問消息。當然msg.payload是打印,但一些如何我不能從外部訪問它的功能。我嘗試了一下代碼,但它沒有幫助。例如。當我嘗試將msg.payload的值返回到client.on_message時,我只能得到一些地址,我認爲它像一個巨大的HEX值。任何人都可以告訴我如何讀取函數外的值或如何返回此值?

謝謝!

回答

1

您可以創建一個全局變量並附加您的msg.payload。之後,您可以通過在另一個線程中遍歷該列表來使用它們。

payloads = [] 
def on_message(client, userdata, msg): 
    payloads.append(msg.payload) 
    print(msg.topic + " " + str(msg.payload)) 

# ... 

def funct(): 
    print payloads 

thread.start_new_thread(funct,()) 
相關問題