2016-06-24 4 views
4

Я использую этот скрипт python для реализации базового абонента Paho (MQTT), но при определенных обстоятельствах он не вызывает on_connect.Клиент Paho (MQTT) не может подключиться

Я попытался следующие, все с точно таким же кодом:

  • Запуск в пи Raspbery, брокер на настольном ПК (Ubuntu). Работы.
  • Запуск в ПК (Ubuntu), брокер на том же ПК. Не работает.
  • Запуск в ПК (Ubuntu), брокер на другой ПК (Ubuntu). Не работает.
  • Запуск на ПК (Ubuntu), broker.hivemq.com в качестве брокера. Работы.
  • Запуск на ПК (Ubuntu), broker.hivemq.com (это IP) в качестве брокера. Работы.

я обычно делаю:

  • mosquitto_sub/паб в терминале во всех предыдущих комбинациях. Работы.
  • Официальный C++ paho wrapper во всех предыдущих комбинациях. Работы.

Также пробовал все методы настройки, перечисленные на официальном сайте. Таким образом, библиотека paho python, похоже, не ладит с моим местным брокером, если я не запустил его из моей малины. Но использование одного и того же брокера хорошо работает с библиотекой paho C++ и при использовании MQTT с терминала. Какие-нибудь идеи о том, что может произойти?

 import paho.mqtt.client as mqtt 

    def on_connect(mqtt_client, obj, flags, rc): 
     mqtt_client.subscribe("test") 
     print "on_connect" 

    def on_message(mqtt_client, obj, msg): 
     print "on_message" 

    mqtt_client = mqtt.Client() 
    mqtt_client.on_connect = on_connect 
    mqtt_client.on_message = on_message 
    mqtt_client.connect("127.0.0.1",1883) 
    mqtt_client.loop_forever() 
+0

Просто проверяя, когда вы говорите точно такой же код, вы меняете ip-адрес в вызове функции 'mqtt_client.connect' по мере необходимости – hardillb

+0

Да, я меняю его, когда необходимо. Это не должно быть так. –

ответ

6

У меня была та же проблема, и изменения версии протокола MQTT в Client's constructor решил.

mqtt_client = mqtt.Client("", True, None, mqtt.MQTTv31) 

Поскольку вы не укажете протокол, он использует значение по умолчанию: MQTTv311.

+1

Спасибо! Это действительно сработало! Возможно, мой брокер пытался использовать этот протокол. –

Смежные вопросы