Pyho клиент Python не работает должным образом с Mosquitto Broker
Я пытаюсь использовать библиотеку paho python, предоставленную Eclipse, для подключения к серверу Mosquitto для публикации и подписки сообщений. В настоящее время у меня запущен демон Mosquitto, и я могу публиковать и подписываться, а брокеры точно управляют темами. Моя проблема в том, что когда я пытаюсь использовать библиотеку Paho, я могу подключиться к серверу Mosquitto (брокер), но не могу получить темы, на которые я подписан. Код издателя и получателя работает нормально, но, возможно, мне чего-то не хватает. Я буду благодарен, если кто-то мне поможет.
Мои коды издателя / подписчика:
Абонент:
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+ str(rc))
client.subscribe("test")
def on_message(client, userdata, msg):
print("Recieved message " + str(msg.payload) + " " + msg.topic + "Qos= " + str(msg.qos))
client.disconnect()
client = mqtt.Client()
client.connect("localhost", 1883, 60)
client.on_connect = on_connect
client.on_massage = on_message
client.loop_forever()
Издательство:
import paho.mqtt.client as mqtt
client = mqtt.Client()
client.connect("localhost", 1883, 60)
client.publish("test", "Hello World!")
client.disconnect();
1 ответ
Ваш издатель не ждет завершения подключения, прежде чем пытаться опубликовать, а затем снова отключается, не дожидаясь завершения публикации.
У вас есть 2 варианта
Используйте тот же шаблон, что и подписчик, и введите
publish
вon_connect
обратный вызов, чтобы убедиться, что соединение установлено, прежде чем пытаться опубликовать.Используйте функцию быстрого доступа к одной публикации, которая включена в библиотеку Paho
например
import paho.mqtt.publish as publish
publish.single("test", "HelloWorld", hostname="localhost")
РЕДАКТИРОВАТЬ:
Также куча опечаток в вашем подписчике
client.on_massage = on_message
должно быть client.on_message
Также все message
должно быть msg
а также pyload
должно быть payload