2017-03-25 5 views
0

파이썬에서 mqtt lib를 사용하여 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/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.payloadclient.on_message에 되 돌리려고 할 때 나는 단지 거대한 16 진수 값처럼 생각하는 몇몇 주소를 얻는다. 누구든지 함수 밖의 값을 읽는 방법이나이 값을 반환하는 방법을 말해 줄 수 있습니까?

감사합니다.

답변

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,())