2017-04-12 5 views
0

habe ich den folgenden Code, und ich bekomme diese Fehlermeldung:MQTT Verbindungsaufbau zwischen verschiedenen Systemen mit paho-MQTT-pthon:

Time out error : [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host failed to respond. 

ich ausgeschaltet auch die Firewall in den Systemen ich verwende, noch ich bekommen Dieser Fehler.

#!/usr/bin/env python3 

import paho.mqtt.client as mqtt 

# This is the Publisher 

client = mqtt.Client() 
client.connect("10.12.114.103",1883,60) 
client.publish("topic/test", "Hello world!"); 
client.disconnect(); 
+1

Der MQTT Broker @ 10.12.114.103:1883 hilft nicht beantworten, versuche mit MQTTfx oder einem ähnlichen Werkzeug Verbindung zu überprüfen, dass der Makler arbeitet – Adirio

+0

I verwendet hivemq Broker, immer noch den gleichen Fehler .. – Stacy

+0

Sind Sie sicher, der Broker läuft am 10.12.114.103 zu der Zeit, als Sie den Test ausgeführt haben? – hardillb

Antwort

0

Das Problem ist wahrscheinlich nicht mit Ihrem Python-Code, wie ich eine leicht modifizierte Version mit hivemq öffentlichen Test-Server versucht, und es hat gut funktioniert. Hier ist die Version, die ich versucht:

#!/usr/bin/env python3 

import paho.mqtt.client as mqtt 

# This is the Publisher 

def on_log(client, userdata, level, buf): 
    print(level, buf) 

client = mqtt.Client() 
client.on_log = on_log 
client.connect("broker.hivemq.com",1883,60) 
client.publish("topic/test", "Hello world!"); 
client.disconnect(); 

Bitte beachte, dass ich es modifiziert, um die Log-Ausgabe zurück, die beim Debuggen dies nützlich wäre. Das Skript zurückgegeben:

16 Sending PUBLISH (dFalse, q0, r0, m1, 'topic/test', ... (12 bytes) 

Welches ist, was ich von einer erfolgreichen Verbindung erwarten würde. Ich habe auch Ihren Code mit dem Mosquitto Testserver überprüft und es hat gut funktioniert.

Offenbar akzeptiert Ihr Broker Ihren Verbindungsversuch nicht. Wenn Sie einen öffentlichen Testserver ausprobiert haben und es immer noch nicht funktioniert hat, deutet dies darauf hin, dass etwas Ihren Datenverkehr auf Port 1883 stört.

Ich denke, dies ist ein Brokerproblem, aber ich habe bemerkt, dass Sie nicht verwenden Alle Netzwerk-Loop-Funktionen (wie client.loop_start), die laut der Paho-Dokumentation zu unvorhersehbarem Verhalten führen können. Sie könnten versuchen, eine Schleife wie diese Zugabe zu sehen, ob die

client = mqtt.Client() 
client.on_log = on_log 
client.connect("broker.hivemq.com",1883,60) 
client.loop_start 
client.publish("topic/test", "Hello world!"); 
client.disconnect(); 
client.loop_stop 
+0

Ich erhalte den Fehler "Connection Refused" - "Es konnte keine Verbindung hergestellt werden, da der Zielcomputer dies aktiv abgelehnt hat" – Stacy

+0

Mein Verständnis dieses Fehlers ist, dass der Broker die Verbindung einfach nicht akzeptiert. Haben Sie den Beispielcode mit einem der Testmakler getestet? Hat es funktioniert? – blp

+0

Ich versuchte mit "broker.hivemq.com" für die ich den obigen Fehler bekomme. Aber wenn ich mit einem Vermittler im selben lokalen Wirt mich verbinde, wird es in Verbindung gebracht. – Stacy

Verwandte Themen