В настоящее время я работаю над небольшим MQTT-Projekt, где я хочу подключить Raspberry Pi к ПК с Windows.Связь между этими двумя работает отлично, но проблема в том, что компьютер (где включен MQTT-Broker) запускается позже, чем pi, и поэтому соединение должно быть отложено.
Я сделал цикл while вокругclient.connect()
метод, поэтому он будет пытаться подключаться каждые 2 секунды.Но в моем случае он пытается, например, 5 раз, а затем останавливается.
Я также реализую поток, который запускает таймер, который проверяет, получил ли я сообщение.Проблема с таймером заключается в том, что он иногда скачет с 20 секунд до 100.
Я думаю, что я неправильно понял темы и допустил ошибку, но не знаю, где.
Мой код выглядит так:
import threading
import time
import paho.mqtt.client as mqtt
shutdown = 0
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("CoreElectronics/test")
client.subscribe("CoreElectronics/topic")
def on_message(client, userdata, msg):
global shutdown
shutdown = time.time()
print(msg.topic+" "+str(msg.payload))
def check_connect():
try:
client.connect("192.168.xx.xx", 1883, 60)
return True
except:
print("No connection")
return False
def timer_count():
global shutdown
shutdown = time.time()
elapsed = 0
while elapsed < 10:
elapsed = time.time()-shutdown
print("no Message")
time.sleep(2)
t1 = threading.Thread(target = timer_count)
t1.start()
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
while(True):
if check_connect():
break;
else:
time.sleep(2)
client.loop_forever()
При запуске этой программы выводится:
No Message
No Connection
No Message
No Message
No Message
No Message
Но в моем случае она должна печатать обе вещи одновременно все время.После того, как он не распечатывает No Connection
, он также не подключается к Broker
, когда работает ...