from hub import methods, Global import threading import time import json import os # --- for linux # save_dir = f"/home/server/logs" # --- for windows # save_dir = r'C:\SRI-DINO.Server-py\logs' # sri内网测试环境 save_dir = r'C:\logs' # sri内网测试环境 class LocalClass(object): last_log_key = str() def method_c001(client, userdata, message): """消息处理方法""" """ { 'basControl': { 'directSwitch': 1, 'eStop': 0, 'gearControl': 0, 'hazardLight': 0, 'keyStatus': 0, 'parkControl': 0, 'silencedAlarm': 0, 'travelLight': 2, 'travelMode': 0, 'vehicleHorn': 0 }, 'cockpitID': 'Cop001', 'driverControl': { 'accPedal': '0 AND 0 || 0 AND -1', 'brakePedal': '2 AND 2', 'steeringWheel': '1 AND 0', 'turnMode': 0, 'turnSignal': 0 }, 'errCode': { 'errAccPedal': 0, 'errBasOperation': '', 'errBrakePedal': 0, 'errEndTool': 0, 'errHandle': 0, 'errOther': '', 'errSteeringWheel': 0 }, 'taskControl': { 'baseLegControl': '103 AND 24', 'baseLegSwitch': 0, 'bypassSwitch': 0, 'cabLift': 0, 'coopSignal': 3, 'enableHydraulic': 1, 'endJoint': '1 AND 0', 'esCabLift': 0, 'suckerSelect': 0, 'taskJoint_1': '5 AND 0', 'taskJoint_2': '0 AND 0', 'taskJoint_3': '0 AND 0', 'toolControl': '0 AND 0', 'workLight': 0 }, 'timeStamp': 576301601, 'userID': 'Ego', 'vehicleID': '0538' } """ # --- print --- methods.debug_log(f"MessageListenerC001|19", f"#message.payload: {message.payload}") log_dict = json.loads(message.payload) # try: # log_dict = json.loads(message.payload) # methods.debug_log(f"MessageListenerC001|19", f"#message.payload: {repr(log_dict)}") # except Exception as e: # pass # --- save --- file_name = methods.now_string('v001-%Y-%m-%d-%H.log') log_file_path = os.path.join(save_dir, file_name) log_dict = json.loads(message.payload) log_list = [ f"timeStamp: {methods.ts_to_string(int(log_dict.get('timeStamp')) / 1000)}", # 时间 f"userID: {log_dict.get('userID')}", # 用户id f"vehicleID: {log_dict.get('vehicleID')}", # 车id ] # --- check --- log_key = '-'.join(log_list[1:]) if LocalClass.last_log_key and LocalClass.last_log_key == log_key: # methods.debug_log(f"MessageListener24", f"#86: {LocalClass.last_log_key == log_key}") return # --- update -- LocalClass.last_log_key = log_key # --- save --- methods.debug_log(f"MessageListener24", f"#log_list: {log_list}") methods.write_text(log_file_path, ' | '.join(log_list) + '\n', 'a') def subscribe_c001(): """""" Global.emqx.start_subscribe_loop( decorate_method=method_c001, subscribe_topic='Cockpit/CanBus/CanId001/Cop001' )