# device_monitor **Repository Path**: doudou0424/device_monitor ## Basic Information - **Project Name**: device_monitor - **Description**: device_monitor - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-28 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 设备监测服务 ## 介绍 使用python编写, 基本模块: - main: 主程序 - monitor_controller: 路由控制器 - monitor_service: 路由服务器 - panel_manager: 生成设备对应的数据结构,方便查询和发送 - usb_monitor: 监测usb存储设备(U盘)、MTP设备(pad)和HUB设备插拔 - rj45_monitor: 监测rj45设备通断,通过接收串口消息获得 - system_monitor: 监测系统状态(目前有:定期检查网口连接状态) - util/network: 网络操作帮助函数 ## 安装 ```shell # 执行安装脚本,**在root用户下执行** # 脚本会自动安装依赖,如果没有网络请参考离线安装依赖包 bash script/install.sh ``` ## 卸载 ```shell # 执行卸载脚本 bash script/install.sh -x ``` ## 服务 ```shell # start systemctl start device_monitor.service # status systemctl status device_monitor.service # stop systemctl stop device_monitor.service ``` ## 离线安装依赖包 1. 制作离线包安装包 在有网络的机器上执行下面的命令,会得到一个`requirement.tar.gz`的压缩包 ```shell bash script/requirement.sh -d ``` 2. 离线安装依赖包 将步骤1中得到的`requirement.tar.gz`压缩包拷贝到要离线安装的机器上,执行下面的命令 ```shell bash script/requirement.sh ``` ## 主机端获取panel信息 主机通过串口与panel连接 主机执行`script/panel_info.py`脚本获取信息 > 注: 使用python3 目前可以获取的消息包括: - panel type - panel ip (可能存在多个) 程序自动遍历主机的所有串口, 判断是否是panel的串口, 之后获取panel的type和ip输出到`stdout` 输出信息以空格作为分隔符, 格式为 `panel_type panel_ip1 panel_ip2 ...` 如果同时插了多块panel, 则进行多行输出, 每行格式同上 如果监测不到panel的串口则不输出内容 ## Changelog ### V1.9 - 修复system_monitor中GPIO初始化状态错误的问题 - 加入信号捕获,优雅退出程序 ### V1.8 - 修复system_monitor中GPIO设置状态错误的问题 - 新增串口工具脚本,用来让串口执行shell命令 ### V1.7 - 加入重启逻辑 - 消除pylint警告 - 加入uv包管理支持 ### V1.6 - 修复panel_info脚本在部分环境下无法运行的问题 - 修复bigtreetech-cb1板子串口默认需要登录的问题 ### v1.5 - 修复错误 ### v1.4 - 新增pad支持 - pip使用国内清华源 - 配置文件支持挂载目录 - 修复卸载不完全的问题 ### v1.3 - 配置文件适配最新的硬件板 - 优化打印输出 - 修复长时间运行出现Too many open files异常堆栈 - 将网络相关操作整合为工具包 ### v1.2 - 新增版本厂商作者打印 - 更改eth名称为network - 修复方口命名错误的问题 ### v1.1 - 修复获取不到网络接口问题 - 改用pyroute2模块进行网络设置,代替之前的命令行模式 - 重写panel_info脚本,将大部分工作转移到panel_info_inner脚本中 - 增加跨域支持 - 新增pip模块打包和安装脚本,支持离线安装