Я использую следующий код из проекта MQTT Paho для подписки на сообщения от моего mqtt broker. Я проверил соединение, используя mosquitto_sub
, и я получаю там сообщения. Однако, когда я запускаю следующий код, он не получает никаких сообщений и не выводится вывод. Я проверил тему и хост.Клиент MQTT не получает сообщения
import paho.mqtt.client as mqtt
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, 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("test")
# The callback for when a PUBLISH message is received from the server.
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()
Следующая ошибка регистрируется брокером:
Invalid protocol "MQTT" in CONNECT from ::1.
Socket read error on client (null), disconnecting.
РЕДАКТИРОВАНИЕ Благодаря @hardillb за указание на устаревшую версию MQTT.
Все работало после того, как я сделал следующий:
- SUDO APT-получить продувочный mosquitto
- SUDO APT-надстройки репозитория PPA: mosquitto-DEV/mosquitto-PPA
- Sudo APT-получить обновление
- Sudo APT-получить установку mosquitto
Когда вы говорите, что не работает, вы вообще ничего не получаете? И на какой платформе вы работаете? – hardillb
Нет вывода вообще. – Andrei
Если вы даже не получили сообщение «Connected with result code ...», вам следует проверить журналы брокера, чтобы узнать, показывает ли он, почему клиент не подключился. Код, который вы опубликовали, отлично работает здесь – hardillb