Я пытаюсь напечатать сообщение с помощью MQTT, сохраняя его в переменной с именем test и печатая эту переменную.Мне нужно, чтобы эта переменная была доступна по всему сценарию.Некоторые примеры в Интернете показывают мне пример, подобный приведенному ниже, но test просто печатает ''.
Из моего изучения глобальных переменных и функций кажется, что "on_message" нужно вызывать перед "печатью теста", но я не уверен, как к этому подойти.
import paho.mqtt.client as mqtt
MQTT_SERVER = "localhost"
MQTT_PATH = "test_channel"
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
# Subscribing in on_connect() means that if we lose the connection and
# reconnect then subscriptions will be renewed.
client.subscribe(MQTT_PATH)
test = ''
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
global test
test = msg.payload
#print(msg.topic+" "+str(msg.payload))
# more callbacks, etc
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(MQTT_SERVER, 1883, 60)
# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
# Other loop*() functions are available that give a threaded interface and a
# manual interface.
client.loop_start()
print test