我正在制作一个 Python 程序来将 MQTT 客户端连接到 HiveMQ。无论何时,我都尝试使用 loop_start() 它与 loop_forever() 相同的代理连接和断开连接。我试图在一个新线程上运行它,但它没有用。
我正在使用以下东西:
Ubuntu Python 3.10 Paho-MQTT - 来自 GitHub 的最新版本。
这是我的python代码
# Import dependencies
from threading import Thread
from utils import SysConfig, SysLogger
from mqtt.client import Client, MQTTv5, ssl
# Utilities
sys_config = SysConfig(False)
sys_logger = SysLogger()
# Get credentials
HOST = sys_config.read_value('mqtt', 'host')
PORT = sys_config.read_value('mqtt', 'port')
USERNAME = sys_config.read_value('auth', 'name')
PASSWORD = "HelloWorld@100"
# Global client
mqtt_client = Client(client_id=USERNAME, userdata=None, protocol=MQTTv5)
# On connection established
def on_connect(client, userdata, flags, rc, properties=None):
isRunning = True
sys_logger.log_info("Connected to MQTT cloud server")
# On subscribe
def on_subscribe(client, userdata, mid, granted_qos, properties=None):
print("Subscribed: " + str(mid) + " " + str(granted_qos))
# On disconnect
def on_disconnect(client, userdata, flags, rc, properties=None):
sys_logger.log_info("Disconnected to server")
# Define callbacks
mqtt_client.on_connect = on_connect
mqtt_client.on_subscribe = on_subscribe
mqtt_client.on_disconnect = on_disconnect
try:
sys_logger.log_info("Starting MQTT server")
mqtt_client.tls_set(tls_version=ssl.PROTOCOL_TLS)
mqtt_client.username_pw_set(USERNAME, PASSWORD)
mqtt_client.connect(host=HOST, port=int(PORT))
while True:
mqtt_client.loop_start()
except Exception as sys_error:
sys_logger.log_error(f"Failed to start MQTT server. System returned {str(sys_error)}")
请帮帮我 提前致谢。