123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- 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'
- )
|