|
@@ -8,19 +8,21 @@ import os
|
|
|
|
|
|
from lib.UserWorkRecord import UserWorkRecord
|
|
from lib.UserWorkRecord import UserWorkRecord
|
|
|
|
|
|
-class LocalClass(object):
|
|
|
|
- last_log_key = str()
|
|
|
|
|
|
+# class LocalClass(object):
|
|
|
|
+# last_log_key = str()
|
|
|
|
+
|
|
|
|
+topic_info_dict = {} # {<topic_name>: <last_log_key>}
|
|
|
|
|
|
def method_v001(_client, _userdata, message):
|
|
def method_v001(_client, _userdata, message):
|
|
"""消息处理方法"""
|
|
"""消息处理方法"""
|
|
# --- debug ---
|
|
# --- debug ---
|
|
- methods.debug_log(f"TopicListener|17", f"#message.payload: {message.payload}")
|
|
|
|
|
|
+ # methods.debug_log(f"TopicListener|17", f"#message.payload: {message.payload}")
|
|
# return
|
|
# return
|
|
|
|
|
|
# --- check ---
|
|
# --- check ---
|
|
# if not methods.is_dir(Global.save_dir):
|
|
# if not methods.is_dir(Global.save_dir):
|
|
# out = methods.run_command(f'mkdir -p {Global.save_dir}', callback=True)
|
|
# out = methods.run_command(f'mkdir -p {Global.save_dir}', callback=True)
|
|
- # methods.debug_log('MessageListener46', f"#out: {out}")
|
|
|
|
|
|
+ # methods.debug_log('TopicListener|25', f"#out: {out}")
|
|
|
|
|
|
# --- check ---
|
|
# --- check ---
|
|
try:
|
|
try:
|
|
@@ -30,15 +32,15 @@ def method_v001(_client, _userdata, message):
|
|
vehicle_id = log_dict.get('VehicleID')
|
|
vehicle_id = log_dict.get('VehicleID')
|
|
cockpit_id = log_dict.get('cockpitID')
|
|
cockpit_id = log_dict.get('cockpitID')
|
|
except Exception as exception:
|
|
except Exception as exception:
|
|
- methods.debug_log("method_v001|41", f"#message.payload: {message.payload}")
|
|
|
|
- methods.debug_log("method_v001|41", f"#exception: {exception.__class__.__name__}")
|
|
|
|
- methods.debug_log("method_v001|41", f"#traceback: {traceback.format_exc()}")
|
|
|
|
|
|
+ methods.debug_log("TopicListener|35", f"#message.payload: {message.payload}")
|
|
|
|
+ methods.debug_log("TopicListener|35", f"#exception: {exception.__class__.__name__}")
|
|
|
|
+ methods.debug_log("TopicListener|35", f"#traceback: {traceback.format_exc()}")
|
|
return
|
|
return
|
|
|
|
|
|
# --- check ---
|
|
# --- check ---
|
|
log_uuid = UserWorkRecord.get_log_uuid(user_uuid, log_time, vehicle_id, cockpit_id)
|
|
log_uuid = UserWorkRecord.get_log_uuid(user_uuid, log_time, vehicle_id, cockpit_id)
|
|
if not log_uuid:
|
|
if not log_uuid:
|
|
- methods.debug_log(f"MessageListenerV001|error50", f"user_uuid: {user_uuid}, log_time: {log_time}")
|
|
|
|
|
|
+ methods.debug_log(f"TopicListener|error50", f"user_uuid: {user_uuid}, log_time: {log_time}")
|
|
return
|
|
return
|
|
|
|
|
|
# --- fill log_list ---
|
|
# --- fill log_list ---
|
|
@@ -94,16 +96,21 @@ def method_v001(_client, _userdata, message):
|
|
|
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
+ # --- get ---
|
|
|
|
+ topic = _client.casper_info.get('topic')
|
|
|
|
+ last_log_key = topic_info_dict.get(topic)
|
|
|
|
+
|
|
# --- check ---
|
|
# --- check ---
|
|
log_key = '-'.join(log_list[1:])
|
|
log_key = '-'.join(log_list[1:])
|
|
- if LocalClass.last_log_key and LocalClass.last_log_key == log_key:
|
|
|
|
|
|
+ if last_log_key and last_log_key == log_key:
|
|
return
|
|
return
|
|
|
|
|
|
# --- update --
|
|
# --- update --
|
|
- LocalClass.last_log_key = log_key
|
|
|
|
|
|
+ # last_log_key = log_key
|
|
|
|
+ topic_info_dict[topic] = log_key
|
|
|
|
|
|
# --- save ---
|
|
# --- save ---
|
|
- # methods.debug_log(f"MessageListenerV001|113", f"#log_list: {log_list}")
|
|
|
|
|
|
+ # methods.debug_log(f"TopicListener|113", f"#log_list: {log_list}")
|
|
log_file_path = os.path.join(Global.save_dir, f'{log_uuid}.log')
|
|
log_file_path = os.path.join(Global.save_dir, f'{log_uuid}.log')
|
|
methods.write_text(log_file_path, ' | '.join(log_list) + '\n', 'a')
|
|
methods.write_text(log_file_path, ' | '.join(log_list) + '\n', 'a')
|
|
|
|
|
|
@@ -165,6 +172,8 @@ def method_c001(_client, _userdata, message):
|
|
}
|
|
}
|
|
"""
|
|
"""
|
|
# --- debug ---
|
|
# --- debug ---
|
|
|
|
+ # methods.debug_log(f"TopicListener|168", f"#_client: {_client.casper_info} | {type(_client.casper_info)}")
|
|
|
|
+ # methods.debug_log(f"TopicListener|168", f"#_client: {_userdata} | {type(_userdata)}")
|
|
# methods.debug_log(f"TopicListener|168", f"#message.payload: {message.payload}")
|
|
# methods.debug_log(f"TopicListener|168", f"#message.payload: {message.payload}")
|
|
# return
|
|
# return
|
|
|
|
|
|
@@ -172,9 +181,9 @@ def method_c001(_client, _userdata, message):
|
|
try:
|
|
try:
|
|
log_dict = json.loads(message.payload)
|
|
log_dict = json.loads(message.payload)
|
|
except Exception as exception:
|
|
except Exception as exception:
|
|
- methods.debug_log("method_c001|79", f"#message.payload: {message.payload}")
|
|
|
|
- methods.debug_log("method_c001|79", f"#exception: {exception.__class__.__name__}")
|
|
|
|
- methods.debug_log("method_c001|79", f"#traceback: {traceback.format_exc()}")
|
|
|
|
|
|
+ methods.debug_log("TopicListener|79", f"#message.payload: {message.payload}")
|
|
|
|
+ methods.debug_log("TopicListener|79", f"#exception: {exception.__class__.__name__}")
|
|
|
|
+ methods.debug_log("TopicListener|79", f"#traceback: {traceback.format_exc()}")
|
|
return
|
|
return
|
|
|
|
|
|
# --- check ---
|
|
# --- check ---
|
|
@@ -185,7 +194,7 @@ def method_c001(_client, _userdata, message):
|
|
cockpit_id = log_dict.get('cockpitID')
|
|
cockpit_id = log_dict.get('cockpitID')
|
|
log_uuid = UserWorkRecord.get_log_uuid(user_uuid, log_time, vehicle_id, cockpit_id)
|
|
log_uuid = UserWorkRecord.get_log_uuid(user_uuid, log_time, vehicle_id, cockpit_id)
|
|
if not log_uuid:
|
|
if not log_uuid:
|
|
- methods.debug_log(f"MessageListenerC001|error92", f"user_uuid: {user_uuid}, log_time: {log_time}")
|
|
|
|
|
|
+ methods.debug_log(f"TopicListener|error92", f"user_uuid: {user_uuid}, log_time: {log_time}")
|
|
return
|
|
return
|
|
|
|
|
|
# --- fill log_list ---
|
|
# --- fill log_list ---
|
|
@@ -239,16 +248,21 @@ def method_c001(_client, _userdata, message):
|
|
|
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
+ # --- get ---
|
|
|
|
+ topic = _client.casper_info.get('topic')
|
|
|
|
+ last_log_key = topic_info_dict.get(topic)
|
|
|
|
+
|
|
# --- check ---
|
|
# --- check ---
|
|
log_key = '-'.join(log_list[1:])
|
|
log_key = '-'.join(log_list[1:])
|
|
- if LocalClass.last_log_key and LocalClass.last_log_key == log_key:
|
|
|
|
|
|
+ if last_log_key and last_log_key == log_key:
|
|
return
|
|
return
|
|
|
|
|
|
# --- update --
|
|
# --- update --
|
|
- LocalClass.last_log_key = log_key
|
|
|
|
|
|
+ # last_log_key = log_key
|
|
|
|
+ topic_info_dict[topic] = log_key
|
|
|
|
|
|
# --- save ---
|
|
# --- save ---
|
|
- # methods.debug_log(f"MessageListenerC001|158", f"#log_list: {log_list}")
|
|
|
|
|
|
+ # methods.debug_log(f"TopicListener|158", f"#log_list: {log_list}")
|
|
log_file_path = os.path.join(Global.save_dir, f'{log_uuid}.log')
|
|
log_file_path = os.path.join(Global.save_dir, f'{log_uuid}.log')
|
|
methods.write_text(log_file_path, ' | '.join(log_list) + '\n', 'a')
|
|
methods.write_text(log_file_path, ' | '.join(log_list) + '\n', 'a')
|
|
|
|
|
|
@@ -265,7 +279,9 @@ class TopicListener:
|
|
def subscribe(self):
|
|
def subscribe(self):
|
|
|
|
|
|
|
|
|
|
|
|
+ topic_info_dict[self.subscribe_topic] = str()
|
|
|
|
|
|
|
|
+
|
|
if self.method_name == 'method_v001':
|
|
if self.method_name == 'method_v001':
|
|
method = method_v001
|
|
method = method_v001
|
|
elif self.method_name == 'method_c001':
|
|
elif self.method_name == 'method_c001':
|
|
@@ -275,6 +291,9 @@ class TopicListener:
|
|
|
|
|
|
|
|
|
|
client = Global.emqx_factory.Client(host=Global.emqx_host, port=Global.emqx_port)
|
|
client = Global.emqx_factory.Client(host=Global.emqx_host, port=Global.emqx_port)
|
|
|
|
+ client.casper_info = {
|
|
|
|
+ 'topic': self.subscribe_topic
|
|
|
|
+ }
|
|
client.start_subscribe_loop(
|
|
client.start_subscribe_loop(
|
|
decorate_method=method,
|
|
decorate_method=method,
|
|
subscribe_topic=self.subscribe_topic
|
|
subscribe_topic=self.subscribe_topic
|