提交 04cfae97 authored 作者: 陈泽健's avatar 陈泽健

处理MQTT创建客户端实例时补充账号密码的配置。

上级 b755252c
......@@ -13,12 +13,14 @@ import paho.mqtt.client as mqtt
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
class Mqtt:
def __init__(self, broker_address, port):
def __init__(self, broker_address, port, username=None, password=None):
"""
初始化 MQTT 客户端
:param broker_address: MQTT 代理地址
:param port: MQTT 代理端口
:param username: MQTT 登录用户名(可选)
:param password: MQTT 登录密码(可选)
"""
self.lock = None
self.broker_address = broker_address
......@@ -27,21 +29,37 @@ class Mqtt:
self._received_message_lock = threading.Lock()
self.received_message = None
self.message_type = None
self.username = username
self.password = password
def connect(self):
"""
连接到 MQTT 服务器
连接到 MQTT 服务器,并支持账号密码登录
"""
try:
self.client = mqtt.Client()
# 如果提供了用户名和密码,则设置认证信息
if self.username and self.password:
self.client.username_pw_set(self.username, self.password)
self.client.on_connect = self.on_connect # 设置连接回调
self.client.on_message = self.on_message # 设置消息回调
self.client.connect(self.broker_address, self.port) # 连接到代理
self.client.loop_start() # 启动网络循环
logging.info("MQTT 客户端连接成功")
except Exception as e:
logging.error(f"连接到MQTT服务器时发生错误: {e}")
raise
def print_current_config(config):
"""
打印当前MQTT消息配置信息
"""
print("当前配置信息:")
for key, value in config.items():
print(f"{key}: {value}")
def disconnect(self):
"""
断开与 MQTT 服务器的连接
......
......@@ -303,4 +303,5 @@
86. 2025-05-25:
- 增加兰州项目定制自动化处理,调试兰州自动化的JSON数据运行。
87. 2025-05-26:
- 使用crate_csv_test脚本生成安卓信息上报与心跳上报的csv文件,并使用MQTT脚本模拟两千台设备上报消息至预定系统。
\ No newline at end of file
- 使用crate_csv_test脚本生成安卓信息上报与心跳上报的csv文件,并使用MQTT脚本模拟两千台设备上报消息至预定系统。
- 处理MQTT创建客户端实例时补充账号密码的配置。
\ No newline at end of file
......@@ -31,7 +31,10 @@ if __name__ == "__main__":
interval_between_repeats = 1 # 每次重复之间的间隔时间(秒)
# 创建 MQTT 客户端实例
mqtt_client = Mqtt(broker_address, port)
mqtt_client = Mqtt(broker_address, port, username, password)
# 设置 MQTT 服务器的用户名和密码
mqtt_client.connect()
try:
# 连接到 MQTT 服务器
......@@ -44,7 +47,8 @@ if __name__ == "__main__":
# 遍历配置文件中的每一行数据
for config in configs:
# 构建消息内容-
#打印当前MQTT消息配置信息
Mqtt.print_current_config(config)
# 构建消息内容
topic = config["topic"]
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论