# DeviceManager **Repository Path**: ai-training-project/device-manager ## Basic Information - **Project Name**: DeviceManager - **Description**: DeviceManager 是一个用于与设备通信并上传传感器数据的中间件软件 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-09 - **Last Updated**: 2024-06-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### README.md ```markdown # DeviceManager DeviceManager 是一个用于与设备通信并上传传感器数据的中间件软件,采用 Go 语言开发,并使用本地 JSON 文件进行数据存储。中间件通过配置设备 IP 地址和端口,开启多线程与设备进行 TCP 或 HTTP 通信,并将获取的传感器数据封装成 JSON 格式通过 HTTP 方式上传给主站。中间件具备一个 WEB 管理页面,通过管理页面可以配置传感器设备的 IP 和端口,并能够通过传感器访问成功的时间来判断传感器是否在线。 ## 项目结构 ## 项目结构 ``` DeviceManager/ ├── config/ │ └── config.go ├── communication/ │ ├── tcp.go │ ├── udp.go │ ├── mqtt.go │ └── http.go ├── storage/ │ ├── storage.go │ └── models.go ├── data/ │ └── json.go ├── web/ │ ├── static/ │ │ ├── index.html │ │ └── config.html │ ├── server.go │ └── handlers.go ├── logger/ │ └── logger.go ├── go.mod └── main.go ``` ## 文件说明 ### `config/config.go` 用于加载和管理系统配置,包括数据库配置、WEB 端口配置、主站配置、轮询时间配置、最大线程数配置和日志保留时间配置。 ### `communication/tcp.go` 实现与设备的 TCP 通信,处理连接、数据接收和发送。 ### `communication/udp.go` 实现与设备的 UDP 通信,处理连接、数据接收和发送。 ### `communication/mqtt.go` 实现与设备的 MQTT 通信,处理 MQTT 请求和响应。 ### `communication/http.go` 实现与设备的 HTTP 通信,处理 HTTP 请求和响应。 ### `sql/init.go` 初始化 SQLite 数据库,创建所需的表(设备表、日志表和配置表)。 ### `sql/process.go` 提供对设备表的操作函数,包括插入设备和更新设备最后活跃时间。 ### `sql/data.go` 提供从数据库中获取设备信息的函数。 ### `data/json.go` 提供数据解析和封装函数,将传感器数据解析为 JSON 格式或从 JSON 格式创建数据。 ### `web/server.go` 启动 WEB 服务器,提供管理和监控中间件的 WEB 界面。 ### `web/handlers.go` 定义 WEB 界面的处理函数,包括设备列表的获取和系统配置的管理。 ### `logs/logger.go` 初始化日志记录系统,提供日志记录函数,记录系统运行过程中的日志信息。 ### `main.go` 项目的入口,加载配置,初始化数据库和日志系统,启动 WEB 服务器。 ## 运行项目 1. 安装 Go 语言环境(版本 1.16 及以上)。 2. 克隆项目到本地: ```sh git clone https://github.com/yourusername/DeviceManager.git ``` 3. 进入项目目录: ```sh cd DeviceManager ``` 4. 初始化项目依赖: ```sh go mod tidy ``` 5. 运行项目: ```sh go run main.go -config=config.json ``` 其中 `config.json` 是您的配置文件路径,包含必要的系统配置。 ## 配置文件示例 ```json { "database_type": "sqlite", "sqlite_path": "data/DeviceManager.db", "mysql_connection_string": "", "web_port": "8080", "main_station_url": "http://example.com", "polling_interval": 300, "max_threads": 10, "log_retention_days": 90 } ``` ## 贡献 欢迎对本项目提出问题、建议和贡献代码。 ## 许可证 本项目使用 MIT 许可证,详情请参阅 LICENSE 文件。 ``` 这样一个README文件可以帮助开发者快速了解项目的目的、结构以及各个文件的用途,并指导他们如何运行和配置项目。