diff --git a/config4.json b/config4.json index fac1330..a65e159 100644 --- a/config4.json +++ b/config4.json @@ -5,11 +5,14 @@ "username": "hjemq_sim_icm", "passwd": "Hj57471000", "publish_topic": "GateWayPublicTopic_Server", - "publish_interval": 5000, + "publish_interval": 10000, "max_publish_count": 0, "publish_qos": 0, "subscribe_qos": 0, "subcriber_topic": "ServerPublicTopic_GateWay", + "FsuCodePrefix": "1111111000", + "FsuCodeStart": 1, + "FsuCodeEnd": 365, "FsuCodes": ["11111110000001","11111110000002","11111110000003","11111110000004"], "publish_data": { "FsuCode": "11010110100999", diff --git a/gwsimulator.py b/gwsimulator.py index 26ce7b0..de996d9 100644 --- a/gwsimulator.py +++ b/gwsimulator.py @@ -80,6 +80,9 @@ class MqttConfigure: self.client_id = f'python-mqtt-{random.randint(0, 1000)}' self.max_publish_count = 0 self.fsuCodes = [] + self.FsuCodePrefix = 1111111000 + self.FsuCodeStart = 1 + self.FsuCodeEnd = 999 class PublishData: @@ -103,7 +106,11 @@ def read_configure(mqtt_conf=None, publish_data=None): mqtt_conf.subscribe_qos = json_data['subscribe_qos'] mqtt_conf.subscriber_topic = json_data['subcriber_topic'] mqtt_conf.client_id = json_data['client_id'] - # 2025.03.11 增加读取多个FsuCode,用于模拟多个不同的设备 + + # 2025.03.27 增加读取多个FsuCode,用于模拟多个不同的设备 + mqtt_conf.FsuCodePrefix = json_data['FsuCodePrefix'] + mqtt_conf.FsuCodeStart = json_data['FsuCodeStart'] + mqtt_conf.FsuCodeEnd = json_data['FsuCodeEnd'] mqtt_conf.fsuCodes = json_data['FsuCodes'] publish_data.publish_data = json_data['publish_data'] except Exception as e: @@ -119,7 +126,7 @@ def pub_connect_mqtt(): def on_disconnect(client, userdata, rc): """断开连接回调""" - logger.info(f"[{time.ctime()}] 连接断开,原因:{client.error_string(rc)}") + logger.info(f"[{time.ctime()}] 连接断开") if rc != 0: logger.info("尝试重新连接...") reconnect() @@ -174,8 +181,6 @@ def sub_connect_mqtt(): # 2025.03.11 增加函数参数,处理制定的fsucode def build_publish_msg(fsu_code=None): pd = publish_data.publish_data - # msg = {"FsuCode": pd["FsuCode"], "type": pd["type"], "IdCodeContent": [], - # "TimeStamp": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())} msg = {"FsuCode": fsu_code, "type": pd["type"], "IdCodeContent": [], "TimeStamp": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())} for one in pd["IdCodeContent"]: @@ -199,12 +204,17 @@ def build_publish_msg(fsu_code=None): def publish(client): msg_count = 0 + # 2025.03.11 增加循环处理多个FsuCode,用于模拟多个不同的设备 + fsu_codes_result = [] + for num in range(mqtt_conf.FsuCodeStart, mqtt_conf.FsuCodeEnd+1): + suffix = f"{num:04d}" + fsu_codes_result.append(mqtt_conf.FsuCodePrefix + suffix) + while True: if mqtt_conf.max_publish_count != 0 and msg_count > mqtt_conf.max_publish_count: break - - # 2025.03.11 增加循环处理多个FsuCode,用于模拟多个不同的设备 - for fsu_code in mqtt_conf.fsuCodes: + # for fsu_code in mqtt_conf.fsuCodes: + for fsu_code in fsu_codes_result: logger.info("Processing fsuCode: " + fsu_code) msg = build_publish_msg(fsu_code) msg_info = client.publish(topic=mqtt_conf.publish_topic, payload=msg, qos=mqtt_conf.publish_qos) @@ -225,7 +235,8 @@ def publish(client): msg_count += 1 if status == mqtt_client.MQTT_ERR_SUCCESS: - logger.info(f"Send `#{msg_count}` message to topic `{mqtt_conf.publish_topic}`: `{msg}` ") + # logger.info(f"Send `#{msg_count}` message to topic `{mqtt_conf.publish_topic}`: `{msg}` ") + logger.info(f"Send `#{msg_count}` message to topic `{mqtt_conf.publish_topic}` successfully") else: logger.error(f"Failed to send `#{msg_count}` message to topic {mqtt_conf.publish_topic}") time.sleep(mqtt_conf.publish_interval/1000)