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 варианта

  1. Используйте тот же шаблон, что и подписчик, и введите publish в on_connect обратный вызов, чтобы убедиться, что соединение установлено, прежде чем пытаться опубликовать.

  2. Используйте функцию быстрого доступа к одной публикации, которая включена в библиотеку 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

Другие вопросы по тегам