提交 2dce467d authored 作者: 陈泽健's avatar 陈泽健

同步更新预定系统MQTT模块的代码处理至MQTT通用工具中。

上级 c35646dc
1. 2025-05-27:
- 同步更新预定系统MQTT模块的代码处理至MQTT通用工具中。
\ No newline at end of file
...@@ -13,12 +13,14 @@ import paho.mqtt.client as mqtt ...@@ -13,12 +13,14 @@ import paho.mqtt.client as mqtt
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
class Mqtt: class Mqtt:
def __init__(self, broker_address, port): def __init__(self, broker_address, port, username=None, password=None):
""" """
初始化 MQTT 客户端 初始化 MQTT 客户端
:param broker_address: MQTT 代理地址 :param broker_address: MQTT 代理地址
:param port: MQTT 代理端口 :param port: MQTT 代理端口
:param username: MQTT 登录用户名(可选)
:param password: MQTT 登录密码(可选)
""" """
self.lock = None self.lock = None
self.broker_address = broker_address self.broker_address = broker_address
...@@ -27,21 +29,37 @@ class Mqtt: ...@@ -27,21 +29,37 @@ class Mqtt:
self._received_message_lock = threading.Lock() self._received_message_lock = threading.Lock()
self.received_message = None self.received_message = None
self.message_type = None self.message_type = None
self.username = username
self.password = password
def connect(self): def connect(self):
""" """
连接到 MQTT 服务器 连接到 MQTT 服务器,并支持账号密码登录
""" """
try: try:
self.client = mqtt.Client() 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_connect = self.on_connect # 设置连接回调
self.client.on_message = self.on_message # 设置消息回调 self.client.on_message = self.on_message # 设置消息回调
self.client.connect(self.broker_address, self.port) # 连接到代理 self.client.connect(self.broker_address, self.port) # 连接到代理
self.client.loop_start() # 启动网络循环 self.client.loop_start() # 启动网络循环
logging.info("MQTT 客户端连接成功")
except Exception as e: except Exception as e:
logging.error(f"连接到MQTT服务器时发生错误: {e}") logging.error(f"连接到MQTT服务器时发生错误: {e}")
raise raise
def print_current_config(config):
"""
打印当前MQTT消息配置信息
"""
print("当前配置信息:")
for key, value in config.items():
print(f"{key}: {value}")
def disconnect(self): def disconnect(self):
""" """
断开与 MQTT 服务器的连接 断开与 MQTT 服务器的连接
...@@ -171,6 +189,7 @@ class Mqtt: ...@@ -171,6 +189,7 @@ class Mqtt:
try: try:
self.client.publish(topic, message) self.client.publish(topic, message)
logging.info(f"{datetime.now()} - 已发布消息到主题: {topic} - 调用者: {self.__class__.__name__}.publish") logging.info(f"{datetime.now()} - 已发布消息到主题: {topic} - 调用者: {self.__class__.__name__}.publish")
logging.info(f"{datetime.now()} - 发送的消息为: {message} - 调用者: {self.__class__.__name__}.publish")
except Exception as e: except Exception as e:
logging.error(f"{datetime.now()} - 消息发布失败: {e} - 失败的主题: {topic}, 消息: {message} - 调用者: {self.__class__.__name__}.publish") logging.error(f"{datetime.now()} - 消息发布失败: {e} - 失败的主题: {topic}, 消息: {message} - 调用者: {self.__class__.__name__}.publish")
raise raise
...@@ -309,7 +328,7 @@ class Mqtt: ...@@ -309,7 +328,7 @@ class Mqtt:
"conferenceId": int(config['conferenceId']), "conferenceId": int(config['conferenceId']),
"defaultQrCodeUrl": "http://192.168.5.218:8888/group1/M00/00/21/wKgFyGNBWZmADtnNAAAwrxR0X8s016.png", "defaultQrCodeUrl": "http://192.168.5.218:8888/group1/M00/00/21/wKgFyGNBWZmADtnNAAAwrxR0X8s016.png",
"aliasName": "zt", "aliasName": "zt",
"serverBaseUrl": "http://192.168.5.218:8996/", "serverBaseUrl": "https://192.168.5.218/exapi",
"localBindTime": current_time, "localBindTime": current_time,
"generalField": "{\"conferencePhone\":\"\",\"chooseTimeType\":1,\"meetingTopicSwitch\":\"1\",\"meetingContentSwitch\":\"1\",\"meetingReverseTypeSwitch\":\"1\",\"seatArrangeSwitch\":\"1\",\"meetingVoteSwitch\":\"1\",\"floorPlanPath\":\"\",\"jumpToPaperless\":2,\"approvalList\":[],\"isLeaderJoin\":false,\"meetingPublishScreenSwitch\":\"1\"}" "generalField": "{\"conferencePhone\":\"\",\"chooseTimeType\":1,\"meetingTopicSwitch\":\"1\",\"meetingContentSwitch\":\"1\",\"meetingReverseTypeSwitch\":\"1\",\"seatArrangeSwitch\":\"1\",\"meetingVoteSwitch\":\"1\",\"floorPlanPath\":\"\",\"jumpToPaperless\":2,\"approvalList\":[],\"isLeaderJoin\":false,\"meetingPublishScreenSwitch\":\"1\"}"
}, },
...@@ -330,7 +349,7 @@ class Mqtt: ...@@ -330,7 +349,7 @@ class Mqtt:
"freeAndTotalMemory": "1176M/1997M", "freeAndTotalMemory": "1176M/1997M",
"internalAvailableSize": 4306395136, "internalAvailableSize": 4306395136,
"internalTotalSize": 4877451264, "internalTotalSize": 4877451264,
"ipAddress": "192.168.5.129", "ipAddress": "192.168.5.111",
"macAddress": config['macAddress'], "macAddress": config['macAddress'],
"networkType": "NETWORK_ETHERNET", "networkType": "NETWORK_ETHERNET",
"processCpuUsage": "0.82%", "processCpuUsage": "0.82%",
...@@ -340,7 +359,7 @@ class Mqtt: ...@@ -340,7 +359,7 @@ class Mqtt:
"sdkVersionCode": 25, "sdkVersionCode": 25,
"sdkVersionName": "7.1.2", "sdkVersionName": "7.1.2",
"sysDate": "Tue Oct 22 18:24:52 GMT+08:00 2024", "sysDate": "Tue Oct 22 18:24:52 GMT+08:00 2024",
"sysDateStr": current_time, "sysDatestr": current_time,
"sysElapsedRealtime": "342:26:11", "sysElapsedRealtime": "342:26:11",
"sysLanguage": "zh", "sysLanguage": "zh",
"sysSupportedSensors": ["Accelerometer sensor", "Gyroscope sensor", "sysSupportedSensors": ["Accelerometer sensor", "Gyroscope sensor",
...@@ -387,18 +406,57 @@ class Mqtt: ...@@ -387,18 +406,57 @@ class Mqtt:
"action": config['action'], "action": config['action'],
"thirdMessageDTO": [{ "thirdMessageDTO": [{
"thirdPartyMeetingId": config['thirdPartyMeetingId'], "thirdPartyMeetingId": config['thirdPartyMeetingId'],
"messageCompere": "张三", "messageCompere": "admin@fc",
"thirdPartyUserId": "jiaojiao", "thirdPartyUserId": "admin@fc",
"conferenceName": config['conferenceName'], "conferenceName": config['conferenceName'],
"thirdPartyRoomId": config['thirdPartyRoomId'], "thirdPartyRoomId": config['thirdPartyRoomId'],
"messageName": config['messageName'], "messageName": config['messageName'],
"startTime": config['startTime'], "startTime": config['startTime'],
"endTime": config['endTime'], "endTime": config['endTime'],
"companyNumber": config['companyNumber'], "companyNumber": config['companyNumber'],
"participantList": ["JiaoJiao", "JiaYu", "DuiFangZhengZaiZhangTouFa", "DuoTangMaLaBan"] "participantList": ["admin@fc" , "test40", "test41", "test42", "test43", "test44", "test45", "test46", "test47", "test48", "test49",
"test50", "test51", "test52", "test53", "test54", "test55", "test56", "test57", "test58", "test59",
"test60", "test61", "test62", "test63", "test64", "test65", "test66", "test67", "test68", "test69",
"test70", "test71", "test72", "test73", "test74", "test75", "test76", "test77", "test78", "test79",
"test80", "test81", "test82", "test83", "test84", "test85", "test86", "test87", "test88", "test89",
"test90", "test91", "test92", "test93", "test94", "test95", "test96", "test97", "test98", "test99",
"test100", "test101", "test102", "test103", "test104", "test105", "test106", "test107", "test108", "test109",
"test110", "test111", "test112", "test113", "test114", "test115", "test116", "test117", "test118", "test119",
"test120", "test121", "test122", "test123", "test124", "test125", "test126", "test127", "test128", "test129",
"test130", "test131", "test132", "test133", "test134", "test135", "test136", "test137", "test138", "test139",
"test140"],
"signInBeforeMinutes": config['signInBeforeMinutes'],
"signEndTime": config['signEndTime'],
"enableSignOut": config['enableSignOut'],
"signOutMinutesAfterSignIn": config['signOutMinutesAfterSignIn'],
"signOutAfterEndMinutes": config['signOutAfterEndMinutes']
}] }]
}) })
# 北京富创项目的门口屏底图更新
elif "/iot/v1/device/service/request/doorscreenBackgroundImageUpdate" in topic:
message = {
"action": "doorscreenBackgroundImageUpdate",
"companyNumber": config['companyNumber'],
"conferenceNumber": config['conferenceNumber'],
"data": {}
}
# 根据 updateMethod 设置不同的背景图片字段
if config.get('updateMethod') == 'restoreDefault':
message['data']['updateMethod'] = 'restoreDefault'
elif config.get('updateMethod') == 'single':
message['data']['updateMethod'] = 'single'
# 判断背景图的类型是Base64还是URL
if "backgroundImageType" == "backgroundImageBase64":
message['data']['backgroundImageBase64'] = config['backgroundImageValue']
elif 'backgroundImageType' == "backgroundImageURL":
message['data']['backgroundImageURL'] = config['backgroundImageValue']
return json.dumps(message)
def send_and_receive_messages(self, topic: str, message: str, num_times: int = 1, timeout: int = 5, def send_and_receive_messages(self, topic: str, message: str, num_times: int = 1, timeout: int = 5,
interval: float = 0.2): interval: float = 0.2):
......
This source diff could not be displayed because it is too large. You can view the blob instead.
topic,clientId,appToken,companyNumber,cnum,conferenceId,macAddress,authCode,clientId,deviceId
rebootResponseTopic,48134e6047a19a01,AND-2CT-0101,CN-2CT-UBAINS,4b521415d42650a0da515114aa36ab88,220,20:59:20:00:28:01,AND-2CT-0101,48134e6047a19a01,aa44e258a4e1e001
rebootResponseTopic,48134e6047a19a02,AND-2CT-0102,CN-2CT-UBAINS,6828f107eddcd6c80537e554f1ba6393,221,20:59:20:00:28:02,AND-2CT-0102,48134e6047a19a02,aa44e258a4e1e002
rebootResponseTopic,48134e6047a19a03,AND-2CT-0103,CN-2CT-UBAINS,694eba1b6f1995d4f7c085c77788ca68,222,20:59:20:00:28:03,AND-2CT-0103,48134e6047a19a03,aa44e258a4e1e003
rebootResponseTopic,48134e6047a19a04,AND-2CT-0104,CN-2CT-UBAINS,acab665450c5bb91e11881e749934b63,223,20:59:20:00:28:04,AND-2CT-0104,48134e6047a19a04,aa44e258a4e1e004
rebootResponseTopic,48134e6047a19a05,AND-2CT-0105,CN-2CT-UBAINS,842380cf2573785aa3e74f61c3921e1b,224,20:59:20:00:28:05,AND-2CT-0105,48134e6047a19a05,aa44e258a4e1e005
rebootResponseTopic,48134e6047a19a06,AND-2CT-0106,CN-2CT-UBAINS,4c02ca0fc3f0947ab2658b6d6b98bbfc,225,20:59:20:00:28:06,AND-2CT-0106,48134e6047a19a06,aa44e258a4e1e006
rebootResponseTopic,48134e6047a19a07,AND-2CT-0107,CN-2CT-UBAINS,24d712de79b9907304874c1ab158cbab,226,20:59:20:00:28:07,AND-2CT-0107,48134e6047a19a07,aa44e258a4e1e007
rebootResponseTopic,48134e6047a19a08,AND-2CT-0108,CN-2CT-UBAINS,ef89042cce57dab36475a32f86d515b1,227,20:59:20:00:28:08,AND-2CT-0108,48134e6047a19a08,aa44e258a4e1e008
rebootResponseTopic,48134e6047a19a09,AND-2CT-0109,CN-2CT-UBAINS,278b2caed091574f88673c784e2e3c70,228,20:59:20:00:28:09,AND-2CT-0109,48134e6047a19a09,aa44e258a4e1e009
rebootResponseTopic,48134e6047a19a10,AND-2CT-0110,CN-2CT-UBAINS,d1f392aaa472a42399a2e071298ffca8,229,20:59:20:00:28:10,AND-2CT-0110,48134e6047a19a10,aa44e258a4e1e010
rebootResponseTopic,48134e6047a19a11,AND-2CT-0111,CN-2CT-UBAINS,67ff1af148c6c09ee380a2160b14dd47,230,20:59:20:00:28:11,AND-2CT-0111,48134e6047a19a11,aa44e258a4e1e011
rebootResponseTopic,48134e6047a19a12,AND-2CT-0112,CN-2CT-UBAINS,c80b3f6669bae8acce37f4902a0243b8,231,20:59:20:00:28:12,AND-2CT-0112,48134e6047a19a12,aa44e258a4e1e012
rebootResponseTopic,48134e6047a19a13,AND-2CT-0113,CN-2CT-UBAINS,0b94554e203736514af9de41d68b5f37,232,20:59:20:00:28:13,AND-2CT-0113,48134e6047a19a13,aa44e258a4e1e013
rebootResponseTopic,48134e6047a19a14,AND-2CT-0114,CN-2CT-UBAINS,dc7c8d24f0e2b5e545223199dc76818b,233,20:59:20:00:28:14,AND-2CT-0114,48134e6047a19a14,aa44e258a4e1e014
rebootResponseTopic,48134e6047a19a15,AND-2CT-0115,CN-2CT-UBAINS,0a5846605b9d3b99a6623b8230870a5b,234,20:59:20:00:28:15,AND-2CT-0115,48134e6047a19a15,aa44e258a4e1e015
rebootResponseTopic,48134e6047a19a16,AND-2CT-0116,CN-2CT-UBAINS,5b5801447c15748408fa4ca6e2277f5a,235,20:59:20:00:28:16,AND-2CT-0116,48134e6047a19a16,aa44e258a4e1e016
rebootResponseTopic,48134e6047a19a17,AND-2CT-0117,CN-2CT-UBAINS,968c3946b598c7bb6419ac496c2000f4,236,20:59:20:00:28:17,AND-2CT-0117,48134e6047a19a17,aa44e258a4e1e017
rebootResponseTopic,48134e6047a19a18,AND-2CT-0118,CN-2CT-UBAINS,24437bdc20f50f62d353e432899e6c87,237,20:59:20:00:28:18,AND-2CT-0118,48134e6047a19a18,aa44e258a4e1e018
rebootResponseTopic,48134e6047a19a19,AND-2CT-0119,CN-2CT-UBAINS,5409a552f9c917b486d48df5912da1de,238,20:59:20:00:28:19,AND-2CT-0119,48134e6047a19a19,aa44e258a4e1e019
rebootResponseTopic,48134e6047a19a20,AND-2CT-0120,CN-2CT-UBAINS,9c6e5bdce14c3af47d6427e69a70a680,239,20:59:20:00:28:20,AND-2CT-0120,48134e6047a19a20,aa44e258a4e1e020
rebootResponseTopic,48134e6047a19a21,AND-2CT-0121,CN-2CT-UBAINS,5d3637f9a2137ca91fae4cfa9eb14161,240,20:59:20:00:28:21,AND-2CT-0121,48134e6047a19a21,aa44e258a4e1e021
rebootResponseTopic,48134e6047a19a22,AND-2CT-0122,CN-2CT-UBAINS,4c8f155cacbeaeae83c6599fc119f731,241,20:59:20:00:28:22,AND-2CT-0122,48134e6047a19a22,aa44e258a4e1e022
rebootResponseTopic,48134e6047a19a23,AND-2CT-0123,CN-2CT-UBAINS,a1c1e33712c298ff68b1bea640d03027,242,20:59:20:00:28:23,AND-2CT-0123,48134e6047a19a23,aa44e258a4e1e023
rebootResponseTopic,48134e6047a19a24,AND-2CT-0124,CN-2CT-UBAINS,1e0f1843056a1c4a45a80b7edad52f04,243,20:59:20:00:28:24,AND-2CT-0124,48134e6047a19a24,aa44e258a4e1e024
rebootResponseTopic,48134e6047a19a25,AND-2CT-0125,CN-2CT-UBAINS,a4b52db6122128240c922b3ee9b4abed,244,20:59:20:00:28:25,AND-2CT-0125,48134e6047a19a25,aa44e258a4e1e025
rebootResponseTopic,48134e6047a19a26,AND-2CT-0126,CN-2CT-UBAINS,f1b2d3698a082def3c7253ab0204e2e8,245,20:59:20:00:28:26,AND-2CT-0126,48134e6047a19a26,aa44e258a4e1e026
rebootResponseTopic,48134e6047a19a27,AND-2CT-0127,CN-2CT-UBAINS,fbbd92eb329781f78d5a3cc0f077b0d0,246,20:59:20:00:28:27,AND-2CT-0127,48134e6047a19a27,aa44e258a4e1e027
rebootResponseTopic,48134e6047a19a28,AND-2CT-0128,CN-2CT-UBAINS,b5c4ec7f5febbe786775b6a4e69b0d13,247,20:59:20:00:28:28,AND-2CT-0128,48134e6047a19a28,aa44e258a4e1e028
rebootResponseTopic,48134e6047a19a29,AND-2CT-0129,CN-2CT-UBAINS,35dc71aa75e70725cb239052a2f17c36,248,20:59:20:00:28:29,AND-2CT-0129,48134e6047a19a29,aa44e258a4e1e029
rebootResponseTopic,48134e6047a19a30,AND-2CT-0130,CN-2CT-UBAINS,63fdb9a82a270e58f5e3bb7b64da43d9,249,20:59:20:00:28:30,AND-2CT-0130,48134e6047a19a30,aa44e258a4e1e031
/uams/android/broadcast,,,,,,,,48134e6047a19a01,aa44e258a4e1e001
/uams/android/broadcast,,,,,,,,48134e6047a19a02,aa44e258a4e1e002
/uams/android/broadcast,,,,,,,,48134e6047a19a03,aa44e258a4e1e003
/uams/android/broadcast,,,,,,,,48134e6047a19a04,aa44e258a4e1e004
/uams/android/broadcast,,,,,,,,48134e6047a19a05,aa44e258a4e1e005
/uams/android/broadcast,,,,,,,,48134e6047a19a06,aa44e258a4e1e006
/uams/android/broadcast,,,,,,,,48134e6047a19a07,aa44e258a4e1e007
/uams/android/broadcast,,,,,,,,48134e6047a19a08,aa44e258a4e1e008
/uams/android/broadcast,,,,,,,,48134e6047a19a09,aa44e258a4e1e009
/uams/android/broadcast,,,,,,,,48134e6047a19a10,aa44e258a4e1e010
/uams/android/broadcast,,,,,,,,48134e6047a19a11,aa44e258a4e1e011
/uams/android/broadcast,,,,,,,,48134e6047a19a12,aa44e258a4e1e012
/uams/android/broadcast,,,,,,,,48134e6047a19a13,aa44e258a4e1e013
/uams/android/broadcast,,,,,,,,48134e6047a19a14,aa44e258a4e1e014
/uams/android/broadcast,,,,,,,,48134e6047a19a15,aa44e258a4e1e015
/uams/android/broadcast,,,,,,,,48134e6047a19a16,aa44e258a4e1e016
/uams/android/broadcast,,,,,,,,48134e6047a19a17,aa44e258a4e1e017
/uams/android/broadcast,,,,,,,,48134e6047a19a18,aa44e258a4e1e018
/uams/android/broadcast,,,,,,,,48134e6047a19a19,aa44e258a4e1e019
/uams/android/broadcast,,,,,,,,48134e6047a19a20,aa44e258a4e1e020
/uams/android/broadcast,,,,,,,,48134e6047a19a21,aa44e258a4e1e021
/uams/android/broadcast,,,,,,,,48134e6047a19a22,aa44e258a4e1e022
/uams/android/broadcast,,,,,,,,48134e6047a19a23,aa44e258a4e1e023
/uams/android/broadcast,,,,,,,,48134e6047a19a24,aa44e258a4e1e024
/uams/android/broadcast,,,,,,,,48134e6047a19a25,aa44e258a4e1e025
/uams/android/broadcast,,,,,,,,48134e6047a19a26,aa44e258a4e1e026
/uams/android/broadcast,,,,,,,,48134e6047a19a27,aa44e258a4e1e027
/uams/android/broadcast,,,,,,,,48134e6047a19a28,aa44e258a4e1e028
/uams/android/broadcast,,,,,,,,48134e6047a19a29,aa44e258a4e1e029
/uams/android/broadcast,,,,,,,,48134e6047a19a30,aa44e258a4e1e031
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -8,7 +8,7 @@ logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %( ...@@ -8,7 +8,7 @@ logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(
def on_connect(client, userdata, flags, rc): def on_connect(client, userdata, flags, rc):
logging.info("已连接到MQTT服务器") logging.info("已连接到MQTT服务器")
# 订阅多个主题 # 订阅多个主题
topics = ["/androidPanel/", "/uams/android/broadcast", "/material/client/79f18c1a9a3bcfb1/"] topics = ["/androidPanel/", "/uams/android/broadcast", "/material/client/79f18c1a9a3bcfb1/", "rebootResponseTopic"]
for t in topics: for t in topics:
client.subscribe(t) client.subscribe(t)
...@@ -17,17 +17,16 @@ def on_message(client, userdata, msg): ...@@ -17,17 +17,16 @@ def on_message(client, userdata, msg):
if __name__ == "__main__": if __name__ == "__main__":
# 5.218测试环境 192.168.5.218 1883 # 5.218测试环境 192.168.5.218 1883
broker_address = "192.168.5.218"
broker_address = "192.168.5.235" username = "mqtt@cmdb" # 你的MQTT用户名
password = "mqtt@webpassw0RD" # 你的MQTT密码
port = 1883 port = 1883
username = "mqtt@cmdb"
password = "mqtt@webpassw0RD"
# 创建 MQTT 客户端实例 # 创建 MQTT 客户端实例
mqtt_client = mqtt.Client() mqtt_client = mqtt.Client()
# 设置用户名和密码 # 设置用户名和密码
mqtt_client.username_pw_set(username=username, password=password) mqtt_client.username_pw_set(username, password) # 添加账号密码验证
# 设置回调函数 # 设置回调函数
mqtt_client.on_connect = on_connect mqtt_client.on_connect = on_connect
......
...@@ -2,50 +2,57 @@ from hytest import * ...@@ -2,50 +2,57 @@ from hytest import *
# 获取当前脚本的绝对路径 # 获取当前脚本的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__)) current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建预定系统的绝对路径 # 构建预定系统的绝对路径
base_path = os.path.abspath(os.path.join(current_dir, '..','..')) 预定系统_path = os.path.abspath(os.path.join(current_dir, '..','..','..'))
# 添加路径 # 添加路径
sys.path.append(base_path) sys.path.append(预定系统_path)
# 导入模块 # 导入模块
try: try:
from MQTT通用工具.base.Mqtt_Send import * from 预定系统.Base.Mqtt_Send import *
except ModuleNotFoundError as e: except ModuleNotFoundError as e:
print(f"ModuleNotFoundError: {e}") print(f"ModuleNotFoundError: {e}")
print("尝试使用绝对路径导入") print("尝试使用绝对路径导入")
from MQTT通用工具.base.Mqtt_Send import * from 预定系统.Base.Mqtt_Send import *
# 获取当前脚本所在的目录 # 获取当前脚本所在的目录
current_dir = os.path.dirname(os.path.abspath(__file__)) current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建CSV文件的绝对路径 # 构建CSV文件的绝对路径
csv_file_path = os.path.join(current_dir, '../测试数据/预定系统-门口屏/MQTT安卓上报与心跳上报.csv') csv_file_path = os.path.join(current_dir, '../../测试数据/MQTT模块/MQTT安卓上报_2000条.csv')
# csv_file_path = os.path.join(current_dir, '../../测试数据/MQTT模块/MQTT心跳上报_2000条.csv')
if __name__ == "__main__": if __name__ == "__main__":
# 读取配置文件 # 读取配置文件
configs = Mqtt.read_config_from_csv(csv_file_path) configs = Mqtt.read_config_from_csv(csv_file_path)
broker_address = "192.168.5.218" broker_address = "192.168.5.218"
username = "mqtt@cmdb" # 你的MQTT用户名
password = "mqtt@webpassw0RD" # 你的MQTT密码
port = 1883 port = 1883
num_repeats = 100 # 重复执行的次数 num_repeats = 200 # 重复执行的次数
interval_between_repeats = 0.2 # 每次重复之间的间隔时间(秒) interval_between_repeats = 1 # 每次重复之间的间隔时间(秒)
# 创建 MQTT 客户端实例 # 创建 MQTT 客户端实例
mqtt_client = Mqtt(broker_address, port) mqtt_client = Mqtt(broker_address, port, username, password)
# 设置 MQTT 服务器的用户名和密码
mqtt_client.connect()
try: try:
# 连接到 MQTT 服务器 # 连接到 MQTT 服务器
mqtt_client.connect() mqtt_client.connect()
logging.info('连接成功') print('连接成功')
for repeat in range(num_repeats): for repeat in range(num_repeats):
logging.info(f"开始第 {repeat + 1} 次上报") logging.info(f"开始第 {repeat + 1} 次上报")
# 遍历配置文件中的每一行数据 # 遍历配置文件中的每一行数据
for config in configs: for config in configs:
# 构建消息内容- #打印当前MQTT消息配置信息
Mqtt.print_current_config(config)
# 构建消息内容 # 构建消息内容
topic = config["topic"] topic = config["topic"]
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
logging.info(config) print(config)
message = Mqtt.build_message(config, current_time, topic) message = Mqtt.build_message(config, current_time, topic)
# 发送消息 # 发送消息
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论