123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 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 MessageListener(object):
- """
- """
- log_key = str()
- @staticmethod
- def v001(client, userdata, message):
- """消息处理方法"""
- # --- log ---
- # print(f'MessageListener24: #message.payload: {message.payload}', flush=True)
- # methods.debug_log(f"MessageListener24", f"#message.payload: {message.payload}")
- # --- save log ---
- 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
- f"directSwitch: {log_dict.get('baseControl')[0].get('directSwitch')}", # 前后切换
- f"eStop: {log_dict.get('eStop')[0].get('eStop')}", # 急停开关
- f"gearCaontrol: {log_dict.get('gearCaontrol')[0].get('gearCaontrol')}", # 车辆档位控制
- f"hazardLight: {log_dict.get('hazardLight')[0].get('hazardLight')}", # 双闪灯
- ]
- # --- check ---
- if MessageListener.log_key and MessageListener.log_key == '-'.join(log_list[1:]):
- return
- # --- check --
- if not MessageListener.log_key:
- MessageListener.log_key = '-'.join(log_list[1:])
-
- print(f'MessageListener24: #log_list: {log_list}', flush=True)
- methods.write_text(log_file_path, ' | '.join(log_list) + '\n', 'a')
- @classmethod
- def subscribe001(cls):
- """"""
- # --- check ---
- # if not methods.is_dir(save_dir):
- # out = methods.run_command(f'mkdir -p {save_dir}', callback=True)
- # methods.debug_log('MessageListener46', f"#out: {out}")
- Global.emqx.start_subscribe_loop(
- decorate_method=MessageListener.v001,
- # subscribe_topic='bg/log'
- subscribe_topic='Vehicle/ControlVehicle/Veh001'
- )
- # @classmethod
- # def run_background(cls, background_is=True):
- # """"""
-
- # p1 = threading.Thread(target=cls.subscribe001)
- # p1.start()
- @classmethod
- def run(cls, background_is=True):
- thread_list = [
- threading.Thread(target=cls.subscribe001),
- ]
- for thread in thread_list:
- thread.setDaemon(True)
- thread.start()
- if background_is:
- return
- for thread in thread_list:
- thread.join()
- if __name__ == '__main__':
- # --- test ---
- MessageListener.run()
|