# iot_dtu_c **Repository Path**: superYZG/iot_dtu_c ## Basic Information - **Project Name**: iot_dtu_c - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-18 - **Last Updated**: 2025-07-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DTU数据传输单元系统文档 ## 📚 文档结构 本目录包含DTU系统的完整文档,主要文档如下: - **[README.md](README.md)** - 主文档(本文档),包含系统概述、快速开始、API说明等 - **[CLION_DEBUG.md](CLION_DEBUG.md)** - CLion调试配置详细指南 - **[FLASH_GUIDE.md](FLASH_GUIDE.md)** - 开发板刷写详细指南 > **注意**: 新功能和更新将优先在主文档(README.md)中记录,专门文档用于详细的操作指南。 ## 📋 目录 - [项目概述](#项目概述) - [快速开始](#快速开始) - [系统架构](#系统架构) - [DTU版本](#dtu版本) - [编译构建](#编译构建) - [开发调试](#开发调试) - [刷写部署](#刷写部署) - [Web API](#web-api) - [功能特性](#功能特性) - [常用命令](#常用命令) ## 🎯 项目概述 本项目实现了一个完整的工业级DTU(数据传输单元)系统,采用C语言开发,具有高可靠性、模块化设计和丰富的功能特性。 ### 核心功能 - **多网络支持**: 以太网、WiFi、4G/LTE - **双串口通信**: RS485、RS232 - **Modbus协议**: 完整的Modbus RTU/TCP支持 - **多协议推送**: MQTT、HTTP、TCP、UDP - **Web管理**: 现代化Web管理界面 - **AT命令**: 完整的AT命令系统 - **配置管理**: JSON配置文件支持 ### 项目结构 ``` iot-dtu-c/ ├── CMakeLists.txt # CMake构建配置 ├── main.c # 主程序入口 ├── cmake-build-debug/ # CMake构建目录 ├── config/ # 配置文件目录 ├── include/ # 头文件目录 ├── src/ # 源文件目录 │ ├── core/ # 核心模块 │ ├── config/ # 配置管理 │ ├── network/ # 网络管理 │ ├── web/ # Web服务器 │ ├── at_command/ # AT命令系统 │ ├── modbus/ # Modbus协议 │ ├── data_collect/ # 数据采集 │ ├── data_push/ # 数据推送 │ └── mqtt/ # MQTT客户端 ├── web_ui/ # Web界面文件 ├── tests/ # 测试程序 ├── scripts/ # 构建和刷写脚本(精简版) └── docs/ # 项目文档 ``` ## 🚀 快速开始 ### 1. 编译系统 ```bash # 使用构建脚本(推荐) ./scripts/build.sh --wifi # 编译发布版本(用于刷写开发板) ./scripts/build.sh --wifi --release ``` ### 2. 运行系统 ```bash # 测试模式运行 ./cmake-build-debug/bin/iot_dtu_c --test-mode # 正常模式运行 ./cmake-build-debug/bin/iot_dtu_c -c config/dtu.conf.example ``` ### 3. 访问Web界面 - Web管理界面:http://localhost:10020 - API基础URL:http://localhost:10020/api ## 🏗️ 系统架构 ### 模块架构 ``` ┌─────────────────────────────────────────┐ │ Web管理界面 │ ├─────────────────────────────────────────┤ │ Web API服务 │ ├─────────────────────────────────────────┤ │ 配置管理 │ 网络管理 │ 数据采集 │ ├─────────────────────────────────────────┤ │ AT命令 │ Modbus │ 数据推送 │ ├─────────────────────────────────────────┤ │ 核心系统 (DTU Core) │ └─────────────────────────────────────────┘ ``` ### 网络架构 ``` Internet/Cloud │ ┌──▼──┐ │ 4G │ (4G版本) └──┬──┘ │ ┌──▼──┐ │WiFi │ (WiFi版本) └──┬──┘ │ ┌──▼──┐ │ ETH │ (所有版本) └──┬──┘ │ ┌──▼──┐ │ DTU │ └──┬──┘ │ ┌─────▼─────┐ │ RS485/232 │ └───────────┘ ``` ## 📦 DTU版本 系统支持三种硬件版本,每种版本具有不同的网络连接能力: | 版本 | 网络接口 | 适用场景 | 编译参数 | |------|---------|---------|----------| | **Ethernet** | 仅以太网 | 有线网络环境 | `--ethernet` | | **WiFi** | WiFi + 以太网 | 无线网络环境 | `--wifi` | | **4G** | 4G + 以太网 | 移动网络环境 | `--4g` | ### 版本特性对比 - **Ethernet版本**:最稳定,适合工业环境 - **WiFi版本**:灵活部署,适合办公环境 - **4G版本**:广域覆盖,适合远程监控 ### 编译不同版本 ```bash # 编译纯网口版本(默认) ./scripts/build.sh --ethernet # 编译WiFi+网口版本 ./scripts/build.sh --wifi # 编译4G+网口版本 ./scripts/build.sh --4g ``` ## 🔧 编译构建 ### 构建脚本使用 ```bash # 查看帮助 ./scripts/build.sh --help # 编译不同DTU版本 ./scripts/build.sh --ethernet # 纯网口版本(默认) ./scripts/build.sh --wifi # WiFi+网口版本 ./scripts/build.sh --4g # 4G+网口版本 # 编译发布版本(用于刷写开发板) ./scripts/build.sh --wifi --release # 清理重新构建 ./scripts/build.sh --clean --4g ``` > 📖 **详细脚本使用指南**: [scripts/README.md](SCRIPTS.md) ### CMake手动构建 ```bash # 基本编译流程 cd cmake-build-debug cmake .. make # 清理重新构建 rm -rf cmake-build-debug mkdir cmake-build-debug cd cmake-build-debug cmake -G "Unix Makefiles" .. make # 生成编译命令数据库(CLion支持) cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. cp compile_commands.json .. ``` ### 构建选项 - `CMAKE_BUILD_TYPE`: Debug/Release - `DTU_ENABLE_TESTS`: 启用测试程序 - `DTU_VERSION`: ethernet/wifi/4g - `DTU_ENABLE_SSL`: 启用SSL支持 ## 🐛 开发调试 ### CLion调试配置 详细的CLion调试配置请参考:[CLion调试配置指南](CLION_DEBUG.md) **快速配置**: 1. **运行配置设置**: ``` Name: DTU Debug Target: iot_dtu_c Program arguments: --test-mode Working directory: /path/to/iot-dtu-c ``` 2. **推荐断点位置**: - `main.c:473` - 系统启动完成 - `dtu_web.c:115` - Web UI路径设置 - `dtu_web.c:351` - Web服务器线程启动 ### 常见问题解决 - **404 File not found**: 检查工作目录设置 - **端口被占用**: 使用`lsof -i :10020`查找占用进程 - **编译错误**: 运行`./scripts/build.sh --clean`重新编译 ## 📱 刷写部署 详细的刷写指南请参考:[DTU开发板刷写指南](FLASH_GUIDE.md) ### 快速刷写 ```bash # 查看帮助 ./scripts/flash_board.sh --help # 自动检测并刷写 ./scripts/flash_board.sh --wifi # 刷写到指定开发板 ./scripts/flash_board.sh --wifi esp32 # ESP32开发板 ./scripts/flash_board.sh --4g linux -i 192.168.1.100 # Linux开发板 # 重新编译并刷写 ./scripts/flash_board.sh --build --4g esp32 ``` > 📖 **详细刷写指南**: [FLASH_GUIDE.md](FLASH_GUIDE.md) | [脚本使用指南](SCRIPTS.md) ### 支持的开发板 | 开发板类型 | 支持状态 | 说明 | |-----------|---------|------| | ESP32系列 | 🔄 需要移植 | 需要使用ESP-IDF重新开发 | | 树莓派 | ✅ 支持 | 需要ARM交叉编译或本地编译 | | Orange Pi | ✅ 支持 | 需要ARM交叉编译或本地编译 | | STM32系列 | 🔄 需要移植 | 需要使用STM32CubeMX重新开发 | ### 硬件连接 - 使用Type-C数据线连接开发板和电脑 - 确保使用支持数据传输的线缆 - 连接后开发板应该被识别为串口设备 ## 🌐 Web API ### 基础信息 - **基础URL**: `http://device_ip:10020/api` - **认证方式**: Session认证 - **数据格式**: JSON - **字符编码**: UTF-8 ### API接口列表 ``` GET/POST /api/status - 系统状态 GET/POST /api/config - 系统配置 GET/POST /api/network - 网络配置 GET/POST /api/serial - 串口配置 GET/POST /api/collect - 数据采集配置 GET/POST /api/push - 数据推送配置 GET/POST /api/system - 系统设置 POST /api/login - 用户登录 POST /api/logout - 用户登出 ``` ### 通用响应格式 #### 成功响应 ```json { "result": "success", "data": { // 具体数据内容 } } ``` #### 错误响应 ```json { "error": { "code": 400, "message": "错误描述" } } ``` ### 详细API说明 #### 1. 系统状态 - /api/status ```bash # 获取系统状态 GET /api/status # 响应示例 { "system": { "uptime": 3600, "memory_usage": 45.2, "cpu_usage": 12.5 }, "network": { "ethernet": "connected", "wifi": "disconnected", "lte": "not_available" }, "services": { "web_server": "running", "modbus": "running", "mqtt": "connected" } } ``` #### 2. 网络配置 - /api/network ```bash # 获取网络配置 GET /api/network # 保存网络配置 POST /api/network Content-Type: application/json { "dhcp_enable": false, "ip": "192.168.1.100", "netmask": "255.255.255.0", "gateway": "192.168.1.1", "dns1": "8.8.8.8", "dns2": "8.8.4.4", "wifi_ssid": "MyWiFi", "wifi_password": "password123", "wifi_security": 2, "lte_apn": "cmnet", "lte_username": "", "lte_password": "" } ``` #### 3. 串口配置 - /api/serial ```bash # 获取串口配置 GET /api/serial # 保存串口配置 POST /api/serial Content-Type: application/json { "rs485_device": "/dev/ttyUSB0", "rs485_baudrate": 9600, "rs485_databits": 8, "rs485_stopbits": 1, "rs485_parity": "N", "rs485_timeout": 1000, "rs232_device": "/dev/ttyUSB1", "rs232_baudrate": 9600, "rs232_databits": 8, "rs232_stopbits": 1, "rs232_parity": "N", "rs232_timeout": 1000 } ``` #### 4. 数据采集配置 - /api/collect ```bash # 获取采集配置 GET /api/collect # 保存采集配置 POST /api/collect Content-Type: application/json { "auto_collect": true, "interval": 30, "retry_count": 3, "retry_interval": 5 } ``` #### 5. 数据推送配置 - /api/push ```bash # 获取推送配置 GET /api/push # 保存推送配置 POST /api/push Content-Type: application/json { "protocol": 0, "format": 0, "server_host": "mqtt.example.com", "server_port": 1883, "username": "user", "password": "pass", "topic": "dtu/data", "client_id": "DTU001", "timeout": 30, "retry_count": 3, "retry_interval": 5, "enable_ssl": false, "enable_compression": false, "keepalive": 60, "clean_session": true } ``` ### 使用示例 ```bash # 查看系统状态 curl http://localhost:10020/api/status # 保存网络配置 curl -X POST -H "Content-Type: application/json" \ -d '{"dhcp_enable":false,"ip":"192.168.1.100"}' \ http://localhost:10020/api/network # 查看串口配置 curl http://localhost:10020/api/serial # 测试推送配置 curl -X POST -H "Content-Type: application/json" \ -d '{"protocol":0,"server_host":"mqtt.test.com"}' \ http://localhost:10020/api/push ``` ## ✨ 功能特性 ### 已实现功能 ✅ 1. **JSON配置文件支持**: 所有配置自动保存到JSON文件 2. **完整的Web API接口**: RESTful API设计 3. **网络配置自动应用**: 保存后自动连接网络 4. **双串口配置支持**: RS485和RS232独立配置 5. **多协议数据推送**: MQTT/HTTP/TCP/UDP支持 6. **现代化Web界面**: 响应式设计,版本适配 7. **系统设置优化**: 移除日志文件,资源优化 ### 网络功能 - **以太网**: DHCP/静态IP配置 - **WiFi**: SSID、密码、安全类型配置 - **4G/LTE**: APN、用户名、密码配置 - **自动切换**: 网络故障时自动切换备用网络 ### 数据采集 - **Modbus RTU**: 完整的Modbus协议支持 - **双串口**: RS485和RS232同时支持 - **采集配置**: 间隔、重试、超时配置 - **设备管理**: 多设备地址支持 ### 数据推送 - **MQTT**: 完整的MQTT客户端功能 - **HTTP**: POST/PUT请求,支持认证 - **TCP/UDP**: 原始协议推送 - **SSL/TLS**: 加密传输支持 ## 📝 常用命令 ### 系统管理 ```bash # 启动系统 ./cmake-build-debug/bin/iot_dtu_c --test-mode # 查看进程 ps aux | grep iot_dtu_c # 停止系统 pkill iot_dtu_c # 查看端口 lsof -i :10020 ``` ### 开发调试 ```bash # 编译调试版本 ./scripts/build.sh --wifi --debug # 运行测试模式 ./cmake-build-debug/bin/iot_dtu_c --test-mode # 刷写到开发板测试 ./scripts/flash_board.sh --wifi esp32 # 代码格式化 find src -name "*.c" -o -name "*.h" | xargs clang-format -i ``` ### 网络测试 ```bash # 测试Web服务 curl http://localhost:10020/ # 测试API接口 curl http://localhost:10020/api/status # 监控网络连接 netstat -an | grep 10020 ``` ### 配置管理 ```bash # 查看配置文件 cat config/dtu.conf.example # 备份配置 cp config/dtu.conf config/dtu.conf.backup # 恢复配置 cp config/dtu.conf.backup config/dtu.conf ``` --- ## 📝 更新日志 ### 2024-12-19 - CLion调试配置文件路径彻底修复 - 🎯 **根本解决**: 彻底解决了CLion调试时配置文件路径问题 - ✅ **多路径支持**: 支持从项目根目录、cmake-build-debug等多个目录启动 - ✅ **智能路径搜索**: 自动搜索`config/dtu_config.ini`、`../config/dtu_config.ini`等多个路径 - ✅ **CLion完美兼容**: CLion调试时正确读取配置文件,显示真实配置值 - ✅ **命令行兼容**: 命令行运行完全正常,不影响现有功能 - ✅ **生产环境保持**: 生产环境配置文件路径功能完全正常 ### 2024-12-19 - 脚本精简和文档优化 - 🧹 **脚本精简**: 删除无用脚本,只保留核心的`build.sh`和`flash_board.sh` - ✅ **优化帮助信息**: 重新设计脚本帮助界面,更加清晰和实用 - ✅ **统一脚本风格**: 统一两个脚本的界面风格和参数格式 - ✅ **新增脚本文档**: 创建专门的[脚本使用指南](SCRIPTS.md) - ✅ **更新相关文档**: 同步更新主文档和刷写指南中的脚本引用 - ✅ **简化维护成本**: 减少脚本数量,便于后续维护和更新 ### 2024-12-19 - 生产环境配置文件路径优化 - 🎯 **生产环境适配**: 完美解决了编译后部署的配置文件路径问题 - ✅ **智能路径选择**: 开发环境使用`config/dtu_config.ini`,生产环境使用同级目录`dtu_config.ini` - ✅ **自动配置创建**: 生产环境首次运行时自动创建默认配置文件 - ✅ **简化部署流程**: 只需复制可执行文件即可,配置文件自动生成 - ✅ **完整持久化**: 生产环境配置修改和重启恢复完全正常 - ✅ **兼容性保证**: 开发和生产环境都能正常工作,无需额外配置 ### 2024-12-19 - 配置文件路径问题修复 - 🐛 **路径问题修复**: 解决了CLion调试时配置文件路径错误的问题 - ✅ 添加了多路径自动检测功能,支持不同工作目录 - ✅ 增加了详细的调试日志,显示配置文件路径和工作目录 - ✅ 更新了CLion调试配置文档,强调工作目录的重要性 - ✅ 删除了无用的default_config常量,完全依赖INI文件 - ✅ 验证了配置持久化在各种环境下都能正常工作 ### 2024-12-19 - 代码结构优化和清理 - 🧹 **代码清理**: 删除了所有无用的JSON配置相关代码 - ✅ 移动头文件到正确位置:`include/dtu_ini.h` - ✅ 删除无用的数据结构:`config_item_t`, `config_type_t` - ✅ 删除无用的函数:JSON解析、配置项管理等 - ✅ 简化配置管理器结构,只保留必要字段 - ✅ 验证清理后的代码正常工作,配置持久化功能完整 ### 2024-12-19 - INI配置文件持久化 - 🎯 **重大改进**: 实现了真正的配置持久化,支持断点重启 - ✅ 创建了`config/dtu_config.ini`配置文件,替代内存配置 - ✅ 实现了完整的INI文件读写功能模块(`dtu_ini.c/h`) - ✅ 支持所有配置项的持久化保存:设备信息、串口、网络、采集、推送、Modbus设备 - ✅ 新增Modbus设备配置API (`/api/modbus`, `/api/modbus/test`) - ✅ 配置修改后立即保存到文件,重启后自动加载 - ✅ 支持MQTT下发的设备采集指令持久化存储 ### 2024-12-19 - JSON解析修复 - 🐛 修复了`get_json_string_value`函数的解析错误 - ✅ 解决了包含特殊字符的字符串值解析问题(如`/dev/tty.usbserial-1120`) - ✅ 优化了JSON解析逻辑,正确处理键值对的定位 - ✅ 测试验证了所有API接口的JSON数据保存功能 ### 2024-12-19 - 文档整理 - 合并了多个重复文档到主文档(README.md) - 删除了重复内容:API.md、COMMANDS.md、IMPLEMENTATION.md、FEATURE_SUMMARY.md、DTU_VERSIONS.md - 保留了专门的操作指南:CLION_DEBUG.md、FLASH_GUIDE.md - 统一了文档结构,新功能将优先在主文档中记录 ### 2024-12-19 - 功能完善 - ✅ 实现JSON配置文件支持 - ✅ 完善Web API接口(串口、采集、推送、系统配置) - ✅ 网络配置自动应用功能 - ✅ 双串口配置支持(RS485/RS232) - ✅ 多协议数据推送(MQTT/HTTP/TCP/UDP) - ✅ 现代化Web界面,支持DTU版本适配 - ✅ 系统优化,移除日志文件支持 **注意**: 本文档会持续更新,新功能和改进将优先在此文档中记录。如有问题请参考相关章节或联系开发团队。