跳到主要内容

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

分别启动各服务

  1. 创建Docker网络:
docker network create dev-network
  1. 启动MySQL:
./script/dev/services/mysql/start-mysql.sh
  1. 启动MongoDB:
./script/dev/services/mongodb/start-mongodb.sh
  1. 启动Redis:
./script/dev/services/redis/start-redis.sh
  1. 启动EMQX:
./script/dev/services/emqx/start-emqx.sh
  1. 运行后端服务:
go build -o iot-platform-server ./cmd/server/main.go
./iot-platform-server

私有化部署

项目支持多种私有化部署方案:

  • 标准私有化部署
  • 麒麟操作系统部署
  • 定制化项目部署(Esmart、卫生项目等)

主要依赖

依赖包版本用途
irisv12.2.10Web框架
gormv1.25.9ORM框架
mongo-driverv1.15.0MongoDB驱动
go-redisv9.5.1Redis客户端
paho.mqttv1.4.3MQTT客户端
casbinv2.87.1权限管理
livekitv1.12.0实时通信
minio-gov7.0.69对象存储
zapv1.27.0日志库
viperv1.18.2配置管理
validatorv10.19.0数据验证
golang-geov0.7.0地理位置计算

应用场景

  1. 智能设备管理

    • 智能家居设备
    • 工业设备监控
    • 环境监测设备
  2. 位置服务

    • 设备定位追踪
    • 地理围栏
    • 轨迹分析
  3. 数据采集与分析

    • 传感器数据采集
    • 实时数据监控
    • 历史数据分析
  4. 远程控制

    • 设备远程操作
    • 参数配置
    • 固件升级

系统要求

  • Go: 1.22.2+
  • Docker: 20.10+
  • Docker Compose: v2.0+
  • 操作系统: Linux/Windows/macOS

开发指南

环境准备

  1. 安装 Go 1.22.2+
  2. 安装 Docker 和 Docker Compose
  3. 克隆项目代码
  4. 配置 config.yaml

本地开发

  1. 启动依赖服务(MySQL、MongoDB、Redis、EMQX)
  2. 修改配置文件
  3. 运行主程序
  4. 访问 API 文档

测试

  • 单元测试: go test ./...
  • API测试: 使用 openapi/openapi_test.go
  • 集成测试: 参考 docs 目录

安全建议

  1. 修改所有默认密码
  2. 使用强密码策略
  3. 配置防火墙规则
  4. 启用 HTTPS/MQTTS
  5. 定期更新依赖包
  6. 备份数据库

监控与日志

  • 使用 Zap 进行结构化日志记录
  • 支持日志级别配置
  • 可集成第三方监控系统
  • 提供健康检查接口

版本信息

  • 当前版本: 1.0
  • Go版本要求: 1.22.2+
  • 运行模式: debug/release
  • API版本: v1

联系方式


文档生成日期: 2025-12-27