IOT-Platform 项目文档
项目概述
IOT-Platform 是一个通用的物联网管理平台(General IOT Management Platform),提供完整的设备管理、数据采集、实时监控和API服务。该平台具有高度的可扩展性和灵活性,可适配多种物联网应用场景。
技术栈
- 开发语言: Go 1.22.2
- Web框架: Kataras Iris v12.2.10
- 数据库:
- MySQL (GORM ORM)
- MongoDB
- Redis
- 消息队列: MQTT (Eclipse Paho)
- 实时通信: LiveKit Protocol & Server SDK
- 对象存储: MinIO
- 权限管理: Casbin v2
- 日志: Uber Zap
- 配置管理: Viper
- API文档: OpenAPI
项目结构
iot-platform/
├── cmd/ # 命令行入口
│ ├── server/ # 主服务器程序
│ └── file-server/ # 文件服务器
├── config/ # 配置文件
│ ├── config.yaml # 主配置文件
│ ├── server.key # SSL密钥
│ └── server.pem # SSL证书
├── docs/ # 文档目录
│ ├── api/ # API文档
│ ├── mqtt/ # MQTT协议文档
│ ├── others/ # 其他文档
│ └── sql/ # 数据库脚本
├── internal/ # 内部业务逻辑
│ ├── server/ # HTTP服务器逻辑
│ └── tcpserver/ # TCP服务器逻辑
├── openapi/ # OpenAPI接口
│ ├── openapi.go # OpenAPI实现
│ ├── client.go # 客户端SDK
│ └── openapi_test.go # 接口测试
├── pkg/ # 公共包
│ ├── algo/ # 算法库
│ ├── db/ # 数据库操作
│ ├── email/ # 邮件服务
│ ├── hexutil/ # 十六进制工具
│ ├── httpclient/ # HTTP客户端
│ ├── log/ # 日志管理
│ ├── map/ # 地图相关功能
│ ├── mqtt/ # MQTT通信
│ ├── routines/ # 协程管理
│ └── util/ # 工具函数
├── script/ # 部署脚本
│ ├── private-deploy/ # 私有化部署脚本
│ ├── private-deploy-kylinos/ # 麒麟系统部署
│ ├── private-esmart/ # Esmart项目部署
│ ├── private-weisheng/ # 卫生项目部署
│ ├── prod/ # 生产环境脚本
│ └── tool/ # 工具脚本
├── .dockerignore
├── .gitignore
├── go.mod
├── go.sum
└── README.md
核心功能
1. 设备管理
- 设备注册与认证
- 设备状态监控
- 设备数据采集
- 设备远程控制
- 设备分组管理
2. 数据服务
- 实时数据采集
- 历史数据存储
- 数据查询与分析
- 数据导出功能
- 地理位置服务
3. API服务
- RESTful API
- OpenAPI 规范
- 客户端SDK
- API文档自动生成
- 接口测试工具
4. 通信协议
- HTTP/HTTPS API
- MQTT消息通信
- TCP长连接
- WebSocket实时推送
5. 权限管理
- 基于Casbin的RBAC
- JWT身份认证
- 多租户支持
- 细粒度权限控制
6. 文件服务
- 文件上传下载
- MinIO对象存储
- 文件管理
- 图片处理
配置说明
服务器配置
server:
host: "0.0.0.0"
port: "2443"
logLevel: "debug"
jwtSignKey: "sercrethatmaycontainch@r32length"
jwtExpirationPeriod: 72
数据库配置
- MongoDB: 存储设备数据、日志和非结构化数据
- MySQL: 存储用户、权限等结构化数据
- Redis: 缓存、会话管理和实时数据
MQTT配置
mqtt:
broker: "mqtts://my-emqx-container:8883"
clientID: "iot-platform-client_id"
username: "super-emqx"
password: "u12233upw"
部署方式
使用 Docker Compose 运行
启动服务:
./script/dev/start.sh
停止服务:
./script/dev/stop.sh
分别启动各服务
- 创建Docker网络:
docker network create dev-network
- 启动MySQL:
./script/dev/services/mysql/start-mysql.sh
- 启动MongoDB:
./script/dev/services/mongodb/start-mongodb.sh
- 启动Redis:
./script/dev/services/redis/start-redis.sh
- 启动EMQX:
./script/dev/services/emqx/start-emqx.sh
- 运行后端服务:
go build -o iot-platform-server ./cmd/server/main.go
./iot-platform-server
私有化部署
项目支持多种私有化部署方案:
- 标准私有化部署
- 麒麟操作系统部署
- 定制化项目部署(Esmart、卫生项目等)
主要依赖
| 依赖包 | 版本 | 用途 |
|---|---|---|
| iris | v12.2.10 | Web框架 |
| gorm | v1.25.9 | ORM框架 |
| mongo-driver | v1.15.0 | MongoDB驱动 |
| go-redis | v9.5.1 | Redis客户端 |
| paho.mqtt | v1.4.3 | MQTT客户端 |
| casbin | v2.87.1 | 权限管理 |
| livekit | v1.12.0 | 实时通信 |
| minio-go | v7.0.69 | 对象存储 |
| zap | v1.27.0 | 日志库 |
| viper | v1.18.2 | 配置管理 |
| validator | v10.19.0 | 数据验证 |
| golang-geo | v0.7.0 | 地理位置计算 |
应用场景
-
智能设备管理
- 智能家居设备
- 工业设备监控
- 环境监测设备
-
位置服务
- 设备定位追踪
- 地理围栏
- 轨迹分析
-
数据采集与分析
- 传感器数据采集
- 实时数据监控
- 历史数据分析
-
远程控制
- 设备远程操作
- 参数配置
- 固件升级
系统要求
- Go: 1.22.2+
- Docker: 20.10+
- Docker Compose: v2.0+
- 操作系统: Linux/Windows/macOS
开发指南
环境准备
- 安装 Go 1.22.2+
- 安装 Docker 和 Docker Compose
- 克隆项目代码
- 配置 config.yaml
本地开发
- 启动依赖服务(MySQL、MongoDB、Redis、EMQX)
- 修改配置文件
- 运行主程序
- 访问 API 文档
测试
- 单元测试:
go test ./... - API测试: 使用
openapi/openapi_test.go - 集成测试: 参考 docs 目录
安全建议
- 修改所有默认密码
- 使用强密码策略
- 配置防火墙规则
- 启用 HTTPS/MQTTS
- 定期更新依赖包
- 备份数据库
监控与日志
- 使用 Zap 进行结构化日志记录
- 支持日志级别配置
- 可集成第三方监控系统
- 提供健康检查接口
版本信息
- 当前版本: 1.0
- Go版本要求: 1.22.2+
- 运行模式: debug/release
- API版本: v1
联系方式
文档生成日期: 2025-12-27