MessageListenerC001.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. from hub import methods, Global
  2. import threading
  3. import time
  4. import json
  5. import os
  6. # --- for linux
  7. # save_dir = f"/home/server/logs"
  8. # --- for windows
  9. # save_dir = r'C:\SRI-DINO.Server-py\logs' # sri内网测试环境
  10. save_dir = r'C:\logs' # sri内网测试环境
  11. class LocalClass(object):
  12. last_log_key = str()
  13. def method_c001(client, userdata, message):
  14. """消息处理方法"""
  15. """
  16. {
  17. 'basControl': {
  18. 'directSwitch': 1,
  19. 'eStop': 0,
  20. 'gearControl': 0,
  21. 'hazardLight': 0,
  22. 'keyStatus': 0,
  23. 'parkControl': 0,
  24. 'silencedAlarm': 0,
  25. 'travelLight': 2,
  26. 'travelMode': 0,
  27. 'vehicleHorn': 0
  28. },
  29. 'cockpitID': 'Cop001',
  30. 'driverControl': {
  31. 'accPedal': '0 AND 0 || 0 AND -1',
  32. 'brakePedal': '2 AND 2',
  33. 'steeringWheel': '1 AND 0',
  34. 'turnMode': 0,
  35. 'turnSignal': 0
  36. },
  37. 'errCode': {
  38. 'errAccPedal': 0,
  39. 'errBasOperation': '',
  40. 'errBrakePedal': 0,
  41. 'errEndTool': 0,
  42. 'errHandle': 0,
  43. 'errOther': '',
  44. 'errSteeringWheel': 0
  45. },
  46. 'taskControl': {
  47. 'baseLegControl': '103 AND 24',
  48. 'baseLegSwitch': 0,
  49. 'bypassSwitch': 0,
  50. 'cabLift': 0,
  51. 'coopSignal': 3,
  52. 'enableHydraulic': 1,
  53. 'endJoint': '1 AND 0',
  54. 'esCabLift': 0,
  55. 'suckerSelect': 0,
  56. 'taskJoint_1': '5 AND 0',
  57. 'taskJoint_2': '0 AND 0',
  58. 'taskJoint_3': '0 AND 0',
  59. 'toolControl': '0 AND 0',
  60. 'workLight': 0
  61. },
  62. 'timeStamp': 576301601,
  63. 'userID': 'Ego',
  64. 'vehicleID': '0538'
  65. }
  66. """
  67. # --- print ---
  68. methods.debug_log(f"MessageListenerC001|19", f"#message.payload: {message.payload}")
  69. log_dict = json.loads(message.payload)
  70. # try:
  71. # log_dict = json.loads(message.payload)
  72. # methods.debug_log(f"MessageListenerC001|19", f"#message.payload: {repr(log_dict)}")
  73. # except Exception as e:
  74. # pass
  75. # --- save ---
  76. file_name = methods.now_string('v001-%Y-%m-%d-%H.log')
  77. log_file_path = os.path.join(save_dir, file_name)
  78. log_dict = json.loads(message.payload)
  79. log_list = [
  80. f"timestamp: {methods.ts_to_string(int(log_dict.get('timestamp')) / 1000)}", # 时间
  81. f"userID: {log_dict.get('userID')}", # 用户id
  82. f"VehicleID: {log_dict.get('VehicleID')}", # 车id
  83. ]
  84. # --- check ---
  85. log_key = '-'.join(log_list[1:])
  86. if LocalClass.last_log_key and LocalClass.last_log_key == log_key:
  87. # methods.debug_log(f"MessageListener24", f"#86: {LocalClass.last_log_key == log_key}")
  88. return
  89. # --- update --
  90. LocalClass.last_log_key = log_key
  91. # --- save ---
  92. methods.debug_log(f"MessageListener24", f"#log_list: {log_list}")
  93. methods.write_text(log_file_path, ' | '.join(log_list) + '\n', 'a')
  94. def subscribe_c001():
  95. """"""
  96. Global.emqx.start_subscribe_loop(
  97. decorate_method=method_c001,
  98. subscribe_topic='Cockpit/CanBus/CanId001/Cop001'
  99. )