2016-06-24 11 views
4

私はこのPythonスクリプトを使って基本的なPaho(MQTT)サブスクライバを実装していますが、特定の状況下ではon_connectを呼び出しません。Paho(MQTT)クライアントが接続できません

私は、まったく同じコードを持つすべての次のことを試してみました:デスクトップPC(Ubuntuの)上Raspberyパイ、ブローカーで実行

  • を。 作品
  • 同じPC上のPc(Ubuntu)ブローカーで実行しています。 が動作しません。
  • Pc(Ubuntu)、他のPC(Ubuntu)上のブローカで実行しています。 が動作しません。
  • ブローカーとしてPc(Ubuntu)、broker.hivemq.comで実行しています。 作品
  • ブローカーとしてPC(Ubuntuの)、broker.hivemq.com(それはIPです)で実行しています。 作品

私はまた、通常の操作を行います。以前のすべての組み合わせで、端末内

  • mosquitto_sub /パブを。 作品
  • 以前のすべての組み合わせの公式C++ pahoラッパー。 作品

はまた、公式サイトに記載されているすべてのセットアップ方法を試してみました。だから私はラズベリーからそれを実行しない限り、pythonのpahoライブラリは、私の地元のブローカーと一緒になっているようではありません。しかし、同じブローカーを使用することは、C++のpahoライブラリーと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

ちょうどその時neccesaryあなたはまったく同じコードを言うとき – hardillb

+0

を必要に応じて、[はい 'mqtt_client.connect'関数呼び出しでIPアドレスを変更している私はそれを変更しています、チェック。それではないはずです。 –

答えて

6

私は同じ問題を抱えていたし、それを解決しClient's constructorにMQTTプロトコルのバージョンを変更します。

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

プロトコルを指定しないため、デフォルトのプロトコル(MQTTv311)が使用されます。

+1

ありがとう!それは実際に働いた!たぶん私のブローカーはそのプロトコルを使用しようとしていたかもしれません。 –

関連する問題