Ich habe ein einfaches Skript auf einem Raspberry Pi, die eine Beispielnachricht alle 3 Sekunden veröffentlicht. Ich habe die Callbacks on_connect, on_publish und on_disconnect deklariert. Dieser Client verbindet sich erfolgreich, aber on_connect wird nicht aufgerufen, publishs und on_publish wird aufgerufen, trennt und on_disconnect wird aufgerufen.Paho Python MQTT-Client verbindet erfolgreich, aber on_connect Callback wird nicht aufgerufen
Das ist mein Skript
import paho.mqtt.client as mqtt
import time
def on_connect(mqttc, userdata, rc):
print("Connected with result code "+str(rc))
if rc!=0 :
mqttc.reconnect()
def on_publish(mqttc, userdata, mid):
print "Published"
def on_disconnect(mqttc, userdata, rc):
if rc != 0:
print("Unexpected disconnection. Reconnecting...")
mqttc.reconnect()
else :
print "Disconnected successfully"
# Setup MQTT
# broker='test.mosquitto.org'
broker = 'iot.eclipse.org'
broker_port=1883
# Create a client instance
mqttc=mqtt.Client(client_id="MyClient")
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
mqttc.on_disconnect = on_disconnect
while 1:
mqttc.connect(broker, broker_port, 60)
# print "Connected." # I don't want this message.
# Why isn't the on_connect callback invoked?
try:
topic = "this/is/a/test/topic"
payload = "test_message"
print "Publishing " + payload + " to topic: " + topic + " ..."
mqttc.publish(topic, payload, 0)
except Exception as e:
print "exception"
log_file=open("log.txt","w")
log_file.write(str(time.time())+" "+e.__str__())
log_file.close()
mqttc.disconnect()
print ""
time.sleep(3)
Obwohl diese kleinen „Fehler“ die Nachricht nicht Verlag beeinflussen, was in erster Linie ist das, was ich erreichen will, warum es passiert und wie kann ich es beheben?
Der Makler, die ich bin derzeit mit (nicht mit dem im Beispiel) kann maximal handhaben Anzahl der angeschlossenen Clients. Da es mehr Clients gibt, die Daten periodisch senden, besteht die Logik hinter connect-send-disconnect darin, mehr von ihnen mit dem Broker verbunden zu lassen. – evgi9
@ evgi9 Dazu können Sie auch globale Hilfsfunktionen verwenden ([1] (https://pypi.python.org/pypi/paho-mqtt/1.1#single)) – Kiran