3秒ごとにサンプルメッセージを発行するRaspberry Piの簡単なスクリプトがあります。私は、コールバックon_connect、on_publish、on_disconnectを宣言しました。このクライアントは正常に接続されますが、on_connectは呼び出されず、publishされ、on_publishが呼び出され、disconnectsおよびon_disconnectが呼び出されます。Paho Python MQTTクライアントは正常に接続されますが、on_connectコールバックは呼び出されません。
は、これが私のスクリプト
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)
で、このマイナーな「バグ」は私が達成したいものを主にあるメッセージの公開を、影響はありませんが、なぜそれが起こるんし、どのように私はそれを解決することができますか?
私は現在、(例では1ではない)を使用していますブローカの最大値を扱うことができます接続されているクライアントの数。データを定期的に送信するクライアントが増えているため、connect-send-disconnectの背後にあるロジックは、より多くのものをブローカに接続できるようにすることです。 – evgi9
@ evgi9そのために、グローバルヘルパー関数([1](https://pypi.python.org/pypi/paho-mqtt/1.1#single)も使用できます) – Kiran