--- title: 秀杰 DTU 管理平台 description: DTU 设备全生命周期管理平台 outline: deep --- # 秀杰 DTU 管理平台 面向 DTU(数据传输单元)设备全生命周期的开源管理平台,覆盖设备生产、出厂、代理商划拨、终端客户绑定、配置下发、固件 OTA 升级、指令下发与运行监控的完整闭环。 | 项 | 值 | | --- | --- | | 代码仓 | | | 许可证 | Apache-2.0 | | 状态 | 已发布 | | 技术栈 | GoFrame v2、Vue 3 + Vite + TypeScript、Vben Admin 5.x、Ant Design Vue、MySQL 8、Redis、TDengine(可选)、asynq、VitePress | ## 功能概览 | 模块 | 说明 | | --- | --- | | 生产中心 | 产品、硬件型号、工厂、生产批次、设备生产与导入导出 | | 研发中心 | 固件管理、固件版本、OTA 升级任务 | | 配置中心 | 产品通用模型、配置分组、配置版本与下发状态 | | 代理中心 | 代理商设备列表、下级代理、设备划拨与划拨历史、我的订单 | | 系统管理 | 用户、角色、菜单、部门、字典、参数、租户、监控 | | 设备接入 | HTTP / TCP 双通道接入,指令下发、事件上报、UART 隧道 | ## 目录结构 ```text . ├── server/ # GoFrame 后端服务 │ ├── api/ # 接口定义 │ ├── internal/ # 业务逻辑 │ ├── config/ # 配置文件 │ └── storage/ # 数据库初始化脚本 ├── vue/ # 前端 pnpm monorepo │ └── apps/web-antd/ ├── docs_ui/ # VitePress 文档站 ├── docker/ # Docker 部署配置 ├── deploy/ # systemd / nginx 部署样例 └── tools/ # 设备联调与压测脚本 ``` ## 快速开始 环境要求:Go 1.25+、Node.js 24+ 与 pnpm 10+、MySQL 8、Redis 7。 ### 1. 初始化数据库 ```sh mysql -u root -p -e "CREATE DATABASE xiujie_dtu DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" mysql -u root -p xiujie_dtu < server/storage/data/xiu_admin.sql mysql -u root -p xiujie_dtu < server/storage/data/xiu_dtu_init.sql mysql -u root -p xiujie_dtu < server/storage/data/xiu_dtu_menu.sql mysql -u root -p xiujie_dtu < server/storage/data/xiu_dtu_roles.sql ``` ### 2. 配置后端 ```sh cp server/config/config_default.yaml server/config/config.yaml ``` 按实际环境修改 `config.yaml` 中的数据库、Redis 连接信息。JWT 签名密钥通过环境变量注入,长度不少于 32 位,未提供时服务会拒绝签发与校验令牌。 ### 3. 启动后端 ```sh cd server go run main.go ``` 后端默认监听:控制台接口 `:5689`、设备 HTTP 接口 `:5692`、设备 TCP 接入 `:5690`。 ### 4. 启动前端 ```sh cd vue pnpm install pnpm dev ``` 前端开发地址 `http://localhost:5688`。默认管理员账号 `admin`,首次登录后请立即修改。 ### 5. 启动文档站(可选) ```sh cd docs_ui npm install npm run docs:dev ``` 文档站地址 `http://localhost:5687`。 ## 设备联调 `tools/` 下提供设备侧联调与压测脚本: ```sh # HTTP 通道联调 BASE_URL="http://127.0.0.1:5692" \ DEVICE_KEY="202606270101010001" \ PRODUCT_KEY="DTU_TEST" \ PROJECT_KEY="PROJECT_KEY_TEST" \ ./tools/test-device-http-v4.sh # TCP 通道联调(含心跳与指令监听) TCP_HOST="127.0.0.1" \ DEVICE_KEY="202606270101010001" \ PRODUCT_KEY="DTU_TEST" \ PROJECT_KEY="PROJECT_KEY_TEST" \ python3 tools/test-device-tcp-v4.py --heartbeat --listen-command # 2 万设备压测 BASE_URL="http://127.0.0.1:5689" TCP_HOST="127.0.0.1" \ FACTORY_CODE="TEST_FACTORY_ROLE" PH_CODE="HW_V1" \ PRODUCT_KEY="DTU_TEST" PROJECT_KEY="PROJECT_KEY_TEST" \ python3 tools/stress-2w-devices.py --count 20000 --device-key-template 'SIM{index:012d}' ``` 协议细节见代码仓文档站的「通信协议」章节。 ## Docker 部署 ```sh cp docker/dtu_iot/.env.example docker/dtu_iot/.env # 编辑 .env,填入实际域名、数据库与 Redis 口令 cd docker/dtu_base && ./deploy.sh # 初始化 MySQL / Redis / TDengine cd ../dtu_iot && ./deploy.sh # 部署业务服务 ``` 镜像构建与推送: ```sh export DOCKER_USERNAME='your-registry-user' export DOCKER_PASSWORD='your-registry-token' make docker-build docker-push ```