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
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
I verwendet hivemq Broker, immer noch den gleichen Fehler .. – Stacy
Sind Sie sicher, der Broker läuft am 10.12.114.103 zu der Zeit, als Sie den Test ausgeführt haben? – hardillb