换电站解析程序

This commit is contained in:
MATRIX\29620 2025-02-20 16:33:07 +08:00
parent 6bbe6bac71
commit 94ce47a4fe
2 changed files with 145 additions and 0 deletions

View File

@ -0,0 +1,104 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
主程序入口负责初始化各个组件并启动MQTT客户端
"""
import os
import sys
import signal
import time
import argparse
from config.config_manager import ConfigManager
from utils.logger import setup_logger
from mqtt.mqtt_client import MQTTClient
from message.message_router import MessageRouter
from handlers.state_handler import StateHandler
from handlers.event_handler import EventHandler
from handlers.request_handler import RequestHandler
from handlers.response_handler import ResponseHandler
from handlers.keepalive_handler import KeepaliveHandler
def parse_arguments():
"""解析命令行参数"""
parser = argparse.ArgumentParser(description='玖行充换电云平台与站控系统通信程序')
parser.add_argument('-c', '--config', default='config/config.yaml',
help='配置文件路径')
parser.add_argument('-l', '--log-level', default='INFO',
choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'],
help='日志级别')
return parser.parse_args()
def setup_signal_handlers(mqtt_client):
"""设置信号处理器,优雅地关闭程序"""
def signal_handler(sig, frame):
print("\n正在关闭MQTT客户端...")
mqtt_client.disconnect()
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
def main():
"""主函数"""
args = parse_arguments()
# 初始化日志
logger = setup_logger('main', args.log_level)
logger.info("启动玖行充换电云平台与站控系统通信程序")
# 加载配置
config_manager = ConfigManager(args.config)
config = config_manager.get_config()
# 初始化消息路由器
message_router = MessageRouter()
# 初始化各类处理器
state_handler = StateHandler(config)
event_handler = EventHandler(config)
request_handler = RequestHandler(config)
response_handler = ResponseHandler(config)
keepalive_handler = KeepaliveHandler(config)
# 注册处理器到路由器
message_router.register_handler('state', state_handler)
message_router.register_handler('event', event_handler)
message_router.register_handler('request', request_handler)
message_router.register_handler('response', response_handler)
message_router.register_handler('keepalive', keepalive_handler)
# 初始化MQTT客户端
mqtt_client = MQTTClient(
broker=config['mqtt']['broker'],
port=config['mqtt']['port'],
client_id=config['mqtt']['client_id'],
username=config['mqtt']['username'],
password=config['mqtt']['password'],
use_tls=config['mqtt']['use_tls'],
message_router=message_router
)
# 设置信号处理器
setup_signal_handlers(mqtt_client)
# 连接MQTT服务器
mqtt_client.connect()
# 主循环
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
logger.info("接收到退出信号,正在关闭程序...")
mqtt_client.disconnect()
if __name__ == "__main__":
main()

View File

@ -0,0 +1,41 @@
# 文件结构
# -----------------
# main.py # 主程序入口
# config/
# __init__.py
# config_manager.py # 配置管理器
# config.yaml # 配置文件
# mqtt/
# __init__.py
# mqtt_client.py # MQTT客户端
# encryption/
# __init__.py
# encryption.py # 加密/解密模块
# message/
# __init__.py
# message_parser.py # 消息解析器
# message_router.py # 消息路由器
# handlers/
# __init__.py
# base_handler.py # 基础处理器类
# state_handler.py # 状态类处理器
# event_handler.py # 事件类处理器
# request_handler.py # 请求类处理器
# response_handler.py # 响应类处理器
# keepalive_handler.py # 心跳处理器
# models/
# __init__.py
# base_model.py # 基础数据模型
# station_model.py # 站控相关数据模型
# battery_model.py # 电池相关数据模型
# charging_model.py # 充电相关数据模型
# swapping_model.py # 换电相关数据模型
# utils/
# __init__.py
# logger.py # 日志工具
# helpers.py # 辅助函数
# tests/ # 单元测试
# __init__.py
# test_mqtt_client.py
# test_encryption.py
# test_message_parser.py