Skip to content

IoT 物联网 PRD

文档信息

项目内容
产品名称PMForge - IoT 物联网
文档版本v2.0
创建日期2026-09-24
最后更新2026-09-24
文档状态评审中
优先级P1

一、功能概述

1.1 功能定位

通俗理解:如果把各种智能设备(传感器、摄像头、控制器)比作"会说话的工具",那 IoT 物联网模块就是"翻译官 + 管家"——它让不同品牌、不同语言的设备都能接入平台说同一种话,同时 24 小时盯着它们的状态,发现问题自动报警、自动处理。

IoT 物联网模块为 PMForge 提供设备接入与管理的完整能力。企业在智慧工厂、智慧楼宇、智慧农业等场景中,往往需要管理成百上千甚至数以万计的设备。这些设备来自不同厂商、使用不同通信协议、上报不同格式的数据。IoT 模块通过"产品 → 物模型 → 设备"三层抽象,将复杂的设备管理标准化:先用"产品"定义一类设备的通用特征,再用"物模型"描述这类设备能做什么(上报什么数据、能接收什么指令),最后批量注册具体设备实例。配合规则引擎实现"温度超标 → 自动启动排风扇 → 发短信给负责人"这样的场景联动,无需写代码就能完成业务编排。

1.2 功能范围与使用频率

功能模块后台前台使用频率说明
产品管理每周数次定义设备模板,新设备接入时操作
物模型管理每周数次描述设备能力(属性/事件/服务)
设备管理每天设备全生命周期管理、远程控制、OTA
设备分组每周数次按区域/楼栋/楼层层级管理设备
规则引擎配置后自动运行场景联动、自动告警、数据转发
设备消息持续运行属性上报、事件上报、服务下发的消息通道
设备监控每天实时数据、历史趋势、告警管理

1.3 业务价值

价值维度具体收益
降低接入门槛标准化物模型定义,新设备接入从数天缩短到数小时
提升运维效率设备状态实时监控、故障自动告警、远程批量操控,减少现场巡检
释放数据价值设备数据自动采集、存储和分析,为业务决策提供数据支撑
加速业务创新可视化规则引擎,无需编码即可实现"如果…就…"的场景联动
统一管理标准产品和物模型的抽象层设计,支持海量设备品类的统一管理

二、用户场景

2.1 用户角色

角色描述核心诉求
IoT 平台管理员负责产品定义和物模型设计快速定义设备能力,灵活管理设备接入标准
运维工程师负责设备日常监控和故障处理实时掌握设备状态,快速定位和解决故障
业务开发者负责规则引擎配置和场景联动低代码实现业务联动,减少开发工作量
数据分析师负责设备数据分析和报表获取结构化设备数据,支持业务分析
企业高管查看 IoT 运营看板全面掌握设备运营状况,辅助决策

2.2 使用场景

场景1:IoT 管理员小王——新产品接入与批量注册设备

前置条件:企业新采购了 200 台工业温湿度传感器,需要在 IoT 平台完成产品定义和设备注册。

操作流程

  1. 小王进入"产品管理",点击"新建产品"
  2. 填写产品名称"工业温湿度传感器",选择品类"传感器",接入协议"MQTT",数据格式"Alink JSON"
  3. 进入"物模型设计",定义两个只读属性(温度、湿度)和一个可写属性(上报周期),再定义一个"温度超限"告警事件
  4. 产品发布后,进入"设备管理",通过 Excel 模板批量导入 200 台设备
  5. 系统为每台设备自动生成 DeviceKey 和 DeviceSecret
  6. 设备出厂后,现场人员用这组密钥完成设备认证上线

期望结果:200 台设备全部注册成功,上线后自动出现在监控面板,数据正常上报。

验收标准(AC)

  1. 产品创建后自动生成唯一的 ProductKey(16 位字母数字组合),不可手动修改
  2. 物模型属性支持 10 种数据类型(int32/float/bool/string/enum/struct 等),配置后可导出为 JSON
  3. Excel 批量导入 200 台设备在 30 秒内完成,导入结果展示成功/失败明细
  4. 设备首次连接平台时自动从未激活变为在线状态,延迟不超过 3 秒
  5. 已发布产品不允许修改接入协议和数据格式,编辑时给出明确提示

场景2:运维工程师小张——实时监控与告警处理

前置条件:某车间已部署温湿度传感器,规则引擎已配置高温告警规则。

操作流程

  1. 小张打开"设备监控"面板,看到所有设备的实时温度/湿度数据
  2. 突然看到 3 号车间的传感器标红——温度 42.5℃,触发了"温度超限"告警
  3. 点击该设备进入详情,查看温度历史趋势曲线,确认是持续上升而非瞬间波动
  4. 通过"服务下发"向关联的排风扇发送"启动"指令(参数:风速=高)
  5. 在告警管理页面处理该告警,填写处理措施"已启动排风扇"
  6. 持续观察温度变化,10 分钟后温度回落到 28℃

期望结果:从发现告警到处理完毕全程在平台上完成,无需跑到现场。

验收标准(AC)

  1. 实时监控面板每 5 秒自动刷新,WebSocket 推送延迟 < 1 秒
  2. 告警触发后 3 秒内在监控面板标红展示,同时推送通知给相关人员
  3. 服务下发指令从点击到设备收到 < 500ms(P99)
  4. 告警处理流程:待处理 → 处理中 → 已处理/已忽略,每步操作记录操作人和时间
  5. 历史趋势图支持选择时间范围(1 小时/24 小时/7 天/30 天),数据点超过 1 万时自动聚合

场景3:业务开发者小陈——规则引擎实现场景联动

前置条件:车间已部署温湿度传感器和排风扇,需要实现"温度超标自动启动排风扇并通知负责人"。

操作流程

  1. 小陈进入"规则引擎",点击"新建规则"
  2. 填写规则名称"车间高温联动控制",关联"工业温湿度传感器"产品
  3. 配置触发条件:当"温度"属性值 > 35 时触发
  4. 配置三个执行动作:① 向设备下发"启动排风扇"服务(风速=高);② 向负责人发短信(内容含设备名称和当前温度);③ 将告警数据写入日志
  5. 启用规则,系统开始实时匹配设备上报数据
  6. 某设备温度达到 36℃ 时,排风扇自动启动,负责人收到短信

期望结果:无需写一行代码,通过可视化配置完成场景联动。

验收标准(AC)

  1. 规则引擎从消息接收到规则匹配 < 100ms,动作执行 < 200ms
  2. 触发条件支持 AND/OR 逻辑组合,最多 10 个条件节点
  3. 执行动作最多 5 个,支持串行和并行两种模式
  4. 同一设备同一规则 1 分钟内最多触发 10 次(防规则风暴),超出后自动限流
  5. 规则日志保留 30 天,可查看每次触发的条件快照和动作执行结果

场景4:运维工程师小张——设备固件 OTA 批量升级

前置条件:某批次传感器存在固件缺陷,需要推送 OTA 升级。

操作流程

  1. 小张进入"设备管理"→"固件升级",上传新版本固件文件
  2. 填写固件版本号 v2.1.3 和变更说明
  3. 选择升级策略"定时升级"(当晚 23:00 执行),升级范围"A 栋所有传感器"分组
  4. 提交升级任务,系统向目标设备推送升级通知
  5. 在升级任务列表中监控进度:已推送 → 已下载 → 升级中 → 升级成功/失败
  6. 对 3 台升级失败的设备查看原因(网络中断),次日重试成功

期望结果:批量升级过程可视、可控、可重试。

验收标准(AC)

  1. OTA 升级支持三种策略:立即升级、定时升级、确认升级(设备端确认后才执行)
  2. 升级范围支持按产品全量、按分组、按百分比(灰度)三种方式
  3. 10,000 台设备推送升级通知 < 30 秒
  4. 升级失败自动重试,重试次数可配置(默认 3 次,间隔 5 分钟)
  5. 升级任务可随时取消(未完成的设备不再推送),已升级的设备不支持回退

场景5:运维工程师小张——设备分组管理与批量操控

前置条件:某智慧楼宇项目有 A/B/C 三栋建筑,每栋 5 层,每层约 20 个设备。

操作流程

  1. 小张创建多级分组:根分组"XX 智慧楼宇" → A 栋/B 栋/C 栋 → 每栋下按楼层建子分组
  2. 将设备分配到对应分组(支持拖拽或批量选择后移动)
  3. 下班时选择"A 栋"分组,通过"批量服务下发"向所有照明设备发送"关灯"指令
  4. 查看分组统计:设备总数 300、在线 285、离线 10、告警 5

期望结果:按建筑-楼层的层级管理设备,批量操作一键完成。

验收标准(AC)

  1. 分组支持最多 5 级层级深度,分组名称在同一父级下不重复
  2. 一个设备只能属于一个分组,移动分组后自动继承新分组的规则
  3. 分组支持跨产品(同一分组下可有传感器、照明、空调等不同产品的设备)
  4. 批量服务下发时,逐一记录每台设备的执行结果,展示成功/失败明细
  5. 分组统计信息实时更新(设备总数、在线数、离线数、告警数)

三、功能需求

3.1 产品管理

3.1.1 产品管理页面(后台)

描述:产品是设备的"模板"——同一类产品(如"工业温湿度传感器")共享相同的通信协议、数据格式和物模型定义。在一个产品下可以创建成百上千个具体的设备实例。

IoT产品管理

功能清单

功能项优先级描述
产品列表查询P0按名称、品类、状态、协议类型筛选,分页展示
创建产品P0填写名称、选择品类/设备类型/接入协议/数据格式
编辑产品P0修改基本信息;已关联设备的产品的关键字段锁定
删除产品P0仅允许删除无关联设备的产品
发布/禁用产品P0发布后不可修改协议和数据格式
产品品类管理P1维护品类树(传感器/照明/安防/家电/工业设备),支持自定义

业务规则

规则说明设计原因
产品名称租户内唯一同一租户下不可创建同名产品避免产品混淆,运维时能快速定位
ProductKey 全局唯一16 位字母数字,系统自动生成作为设备通信的路由标识,必须全局不冲突
已发布产品锁定协议发布后不可修改接入协议和数据格式已有设备按此协议通信,修改会导致所有设备掉线
删除前检查关联设备有关联设备时拒绝删除防止误删导致设备失去模板定义
设备类型决定子设备网关设备可挂载子设备,直连设备不可区分网关场景和普通设备场景

接口列表

接口名称请求方式路径说明
产品分页查询GET/admin-api/iot/product/page按条件分页查询
产品详情GET/admin-api/iot/product/get获取产品详情
创建产品POST/admin-api/iot/product/create新增产品
更新产品PUT/admin-api/iot/product/update编辑产品
删除产品DELETE/admin-api/iot/product/delete删除产品(无关联设备时)
发布产品PUT/admin-api/iot/product/publish发布产品
禁用产品PUT/admin-api/iot/product/disable禁用产品
品类树查询GET/admin-api/iot/product/category/list获取品类树
创建品类POST/admin-api/iot/product/category/create新增品类
更新品类PUT/admin-api/iot/product/category/update编辑品类
删除品类DELETE/admin-api/iot/product/category/delete删除品类

3.2 物模型管理

3.2.1 物模型配置页面(后台)

描述:物模型是对设备能力的"说明书"——告诉平台这个设备能上报什么数据(属性)、会主动报告什么事件(事件)、能接收什么指令(服务)。

通俗理解:物模型就像员工的"岗位说明书"——属性是"需要定期汇报的工作指标",事件是"遇到特殊情况要立即上报",服务是"领导可以下达的工作指令"。

物模型配置

功能清单

功能项优先级描述
物模型列表P0按产品查看,分属性/事件/服务三个标签页
新增属性P0定义标识符、名称、数据类型、访问模式、单位、取值范围
新增事件P0定义标识符、名称、事件类型(信息/告警/故障)、输出参数
新增服务P0定义标识符、名称、调用方式(同步/异步)、输入/输出参数
编辑/删除P0修改或删除物模型定义
物模型导入导出P1JSON 文件批量导入/导出
物模型模板P2常用品类的预置模板,一键导入

数据类型说明

数据类型说明典型用途
int32 / int64整数开关状态、计数器
float / double浮点数温度、湿度、GPS 经纬度
bool布尔值开关状态
string文本设备型号、版本号
enum枚举工作模式(手动/自动/定时)
struct结构体坐标
array数组历史数据列表
datetime时间戳告警发生时间

业务规则

规则说明设计原因
标识符产品内唯一字母开头,由字母/数字/下划线组成标识符是数据路由的 key,重复会导致数据错乱
已发布产品物模型不可删除仅可修改描述等辅助信息已有设备在按此物模型上报数据,删除会导致解析失败
枚举类型至少 2 项每项包含枚举值和描述单个枚举值没有意义
取值范围用于数据校验超出范围的数据标记为异常防止传感器故障产生的异常数据污染业务

接口列表

接口名称请求方式路径说明
属性列表GET/admin-api/iot/thing-model/property/list查询产品属性
创建属性POST/admin-api/iot/thing-model/property/create新增属性
更新属性PUT/admin-api/iot/thing-model/property/update编辑属性
删除属性DELETE/admin-api/iot/thing-model/property/delete删除属性
事件列表GET/admin-api/iot/thing-model/event/list查询产品事件
创建事件POST/admin-api/iot/thing-model/event/create新增事件
更新事件PUT/admin-api/iot/thing-model/event/update编辑事件
删除事件DELETE/admin-api/iot/thing-model/event/delete删除事件
服务列表GET/admin-api/iot/thing-model/service/list查询产品服务
创建服务POST/admin-api/iot/thing-model/service/create新增服务
更新服务PUT/admin-api/iot/thing-model/service/update编辑服务
删除服务DELETE/admin-api/iot/thing-model/service/delete删除服务
导入物模型POST/admin-api/iot/thing-model/importJSON 导入
导出物模型GET/admin-api/iot/thing-model/exportJSON 导出

3.3 设备管理

3.3.1 设备管理页面(后台)

描述:设备管理覆盖设备从"出生"到"退役"的全生命周期:注册 → 激活 → 在线 → 离线 → 禁用/恢复。

设备管理列表

设备详情页

设备详情

功能清单

功能项优先级描述
设备列表查询P0按名称、DeviceName、状态、产品、分组筛选
创建/批量创建设备P0手动创建或 Excel 批量导入,自动分配 DeviceKey/Secret
编辑/删除设备P0修改基本信息;删除时清除关联的消息日志和物模型数据
设备详情P0基本信息 + 物模型实时数据 + 告警 + 操作日志
启用/禁用设备P0禁用后平台拒绝该设备的连接请求
远程控制P1通过服务下发向设备发送指令
属性设置P1向设备写入属性值(如修改上报周期)
固件 OTA 升级P1上传固件、创建升级任务、监控进度、处理失败
设备标签P1自定义 Key-Value 标签,用于分类和检索
设备调试P2模拟设备上报数据、测试服务下发

设备状态流转

设备状态机

名词解释

  • 心跳:设备每隔固定时间向平台发一条"我还活着"的消息。如果平台连续 3 个心跳周期没收到消息,就认为设备离线了。就像值班室每隔 5 分钟打电话确认各岗位安全一样。
  • OTA:Over-The-Air,通过无线网络远程升级设备固件,不用拆设备、不用插 U 盘。

业务规则

规则说明设计原因
DeviceName 产品内唯一同一产品下设备名不重复避免设备身份冲突
每台设备自动分配密钥DeviceKey + DeviceSecret 用于身份认证确保只有合法设备能接入平台
心跳超时自动标记离线默认 3 个心跳周期未收到消息则离线自动感知设备异常,无需人工巡检
禁用设备拒绝连接平台主动拒绝被禁用设备的连接请求存在安全隐患的设备需要立即隔离
删除设备清除关联数据同时清除消息日志和物模型数据避免残留数据占用存储空间
OTA 失败自动重试默认重试 3 次,间隔 5 分钟网络波动导致的失败不应放弃

接口列表

接口名称请求方式路径说明
设备分页查询GET/admin-api/iot/device/page按条件分页查询
设备详情GET/admin-api/iot/device/get获取设备详情
创建设备POST/admin-api/iot/device/create新增设备
批量创建设备POST/admin-api/iot/device/batch-create批量导入设备
更新设备PUT/admin-api/iot/device/update编辑设备
删除设备DELETE/admin-api/iot/device/delete删除设备
启用设备PUT/admin-api/iot/device/enable启用设备
禁用设备PUT/admin-api/iot/device/disable禁用设备
属性设置POST/admin-api/iot/device/property/set设置设备属性值
服务调用POST/admin-api/iot/device/service/invoke调用设备服务
设备标签列表GET/admin-api/iot/device/tag/list查询设备标签
设置设备标签POST/admin-api/iot/device/tag/set设置/更新标签
删除设备标签DELETE/admin-api/iot/device/tag/delete删除指定标签
OTA 创建升级任务POST/admin-api/iot/device/ota/create创建固件升级任务
OTA 任务列表GET/admin-api/iot/device/ota/page查询升级任务
OTA 任务详情GET/admin-api/iot/device/ota/get查看升级进度
OTA 取消任务PUT/admin-api/iot/device/ota/cancel取消升级任务

3.4 设备分组管理

3.4.1 分组管理页面(后台)

描述:设备分组提供"文件夹"式的层级管理——就像电脑里的文件夹可以嵌套子文件夹一样,设备分组也可以按"公司 → 楼栋 → 楼层 → 区域"层层嵌套。

设备分组管理

功能清单

功能项优先级描述
分组树查询P0树形结构展示所有分组
创建/编辑/删除分组P0支持指定父分组形成层级;删除前需移出所有设备
设备分配分组P0将一个或多个设备分配到指定分组
批量移动设备P1设备从一个分组批量移动到另一个
分组统计P1展示设备总数、在线数、离线数、告警数
分组批量操作P1对分组内设备批量下发服务/禁用/启用

业务规则

规则说明设计原因
最多 5 级层级超过 5 级拒绝创建层级过深影响查询性能和用户体验
一设备一分组一个设备只能属于一个分组避免批量操作时的歧义
分组可跨产品同一分组下可有不同产品的设备实际场景中按区域管理,不按产品类型
删除前清空设备分组内有设备时不允许删除防止设备变成"无家可归"的孤儿数据

接口列表

接口名称请求方式路径说明
分组树查询GET/admin-api/iot/device-group/tree获取完整分组树
创建分组POST/admin-api/iot/device-group/create新增分组
更新分组PUT/admin-api/iot/device-group/update编辑分组
删除分组DELETE/admin-api/iot/device-group/delete删除空分组
分组内设备列表GET/admin-api/iot/device-group/device-list查询分组下设备
分配设备到分组POST/admin-api/iot/device-group/assign分配设备
批量移动设备POST/admin-api/iot/device-group/move批量移动
分组统计GET/admin-api/iot/device-group/stats获取统计信息
分组批量服务下发POST/admin-api/iot/device-group/batch-service批量下发服务

3.5 规则引擎

3.5.1 规则配置页面(后台)

描述:规则引擎是 IoT 平台的"自动化大脑"——当设备上报的数据满足某个条件时,自动执行预设的动作。

通俗理解:规则引擎就像家里的"智能音箱场景"——"当我到家(条件),就开灯 + 播放音乐(动作)"。区别是 IoT 的规则引擎面向工业场景,条件更复杂、动作更多样、可靠性要求更高。

规则引擎配置

功能清单

功能项优先级描述
规则列表P0展示所有规则,按名称/状态/产品筛选
创建规则P0定义触发条件 + 执行动作
编辑/删除规则P0修改条件动作配置
启用/禁用规则P0控制规则是否生效
规则日志P1查看触发历史、执行结果、失败原因
场景联动P1多条件 AND/OR 组合,多动作串行/并行
数据流转P2将设备数据转发到 Kafka/HTTP/数据库
规则模板P2常用场景预置模板
规则调试P2模拟数据触发规则,查看执行过程

触发条件类型

条件类型说明配置方式
属性条件设备属性值满足条件选属性 → 运算符(>、<、=、between)→ 阈值
事件条件设备上报特定事件选事件标识符,可配参数条件
状态条件设备状态变化选变更类型(上线/离线/禁用)
定时条件按 cron 表达式定时配置 cron 和时区

执行动作类型

动作类型说明配置方式
服务下发向设备发指令选设备/分组 → 选服务 → 配参数
属性设置写入设备属性选设备/分组 → 选属性 → 设值
消息通知短信/邮件/站内信/Webhook选渠道 → 配接收人 → 编写模板
数据流转转发到外部系统选目标(Kafka/HTTP/DB)→ 配连接信息
规则链触发另一个规则选目标规则
设备禁用自动禁用异常设备选目标设备

业务规则

规则说明设计原因
规则名称租户内唯一同一租户不可重名避免规则管理混乱
最多 10 个条件节点AND/OR 组合过多条件影响匹配性能
最多 5 个执行动作支持串行/并行过多动作增加执行失败风险
触发频率限制同设备同规则 1 分钟最多 10 次防止"规则风暴"——设备抖动导致规则被反复触发
失败自动重试默认 3 次,间隔 5 秒网络抖动不应导致动作丢失
日志保留 30 天超期自动清理平衡排查需求和存储成本

接口列表

接口名称请求方式路径说明
规则分页查询GET/admin-api/iot/rule/page按条件分页查询
规则详情GET/admin-api/iot/rule/get获取规则详情(含条件和动作)
创建规则POST/admin-api/iot/rule/create新增规则
更新规则PUT/admin-api/iot/rule/update编辑规则
删除规则DELETE/admin-api/iot/rule/delete删除规则
启用规则PUT/admin-api/iot/rule/enable启用规则
禁用规则PUT/admin-api/iot/rule/disable禁用规则
规则日志GET/admin-api/iot/rule/log/list查询触发日志
规则模板列表GET/admin-api/iot/rule/template/list获取模板
规则调试POST/admin-api/iot/rule/debug模拟调试

3.6 设备消息

3.6.1 消息管理页面(后台)

描述:设备消息是所有设备与平台之间数据交互的"邮局"——设备上报的数据从这里进入平台,平台下发的指令从这里送达设备。

消息流向

设备消息流向

功能清单

功能项优先级描述
消息日志列表P0按设备、消息类型、时间范围查询
属性上报记录P0查看设备上报的属性数据
事件上报记录P0查看设备上报的事件数据
服务下发记录P0查看服务调用记录和响应结果
消息详情P1查看单条消息的完整报文和处理结果
消息统计P1按类型/设备/产品维度统计消息量和成功率
数据解析配置P1配置原始报文到物模型数据的解析脚本(JS/Python)
消息模拟P2模拟设备上报消息,测试解析和规则

业务规则

规则说明设计原因
消息唯一 ID每条消息有唯一 MessageId用于消息追踪和去重
物模型强校验不符合物模型定义的数据标记为解析失败防止脏数据进入业务系统
服务下发超时默认 5 秒,超时标记调用失败避免无限等待占用资源
消息日志保留 7 天可配置,超期自动归档平衡排查需求和存储成本
解析脚本沙箱执行限制执行时间和内存防止恶意或错误脚本影响系统

接口列表

接口名称请求方式路径说明
消息日志分页GET/admin-api/iot/message/log/page查询消息日志
属性上报记录GET/admin-api/iot/message/property/list查询属性上报
事件上报记录GET/admin-api/iot/message/event/list查询事件上报
服务下发记录GET/admin-api/iot/message/service/list查询服务下发
消息详情GET/admin-api/iot/message/log/get查看消息详情
消息统计GET/admin-api/iot/message/statistics消息统计
数据解析脚本配置POST/admin-api/iot/message/parser/configure配置解析脚本
数据解析测试POST/admin-api/iot/message/parser/test测试解析脚本

3.7 设备监控

3.7.1 监控面板页面(后台)

描述:设备监控是运维人员的"主战场"——实时数据面板、历史趋势图表、告警管理都在这里。

设备监控面板

功能清单

功能项优先级描述
实时监控面板P0展示设备实时属性数据,自动刷新
历史数据查询P0按设备/属性/时间范围查询历史数据
历史趋势图表P0折线图/柱状图展示属性趋势
告警记录管理P0查看/处理/忽略告警
告警规则配置P1配置阈值告警:运算符、阈值、等级、通知方式
数据导出P1导出为 Excel/CSV,单次最大 100 万条
告警统计P1按产品/设备/时间维度统计告警趋势
告警通知P1短信/邮件/站内信/Webhook 多渠道通知
设备地图P2在地图上展示设备分布(适用于含 GPS 的设备)
数据聚合P2按分钟/小时/天聚合(平均值/最大值/最小值/求和)

告警状态流转

告警状态机

业务规则

规则说明设计原因
实时数据 5 秒刷新WebSocket 推送,频率可配置平衡实时性和服务器负载
历史数据保留 90 天可按产品配置过短影响分析,过长增加存储成本
告警等级四级提示/一般/严重/紧急不同等级对应不同通知策略
告警触发自动通知通知接收人可配置确保关键告警不遗漏
数据超 1 万条自动聚合降采样策略前端渲染过多数据点会导致页面卡顿

接口列表

接口名称请求方式路径说明
实时数据查询GET/admin-api/iot/monitor/realtime查询实时属性数据
实时数据订阅WebSocket/ws/iot/monitor/realtimeWebSocket 实时推送
历史数据查询GET/admin-api/iot/monitor/history查询历史数据
历史趋势查询GET/admin-api/iot/monitor/trend趋势数据(支持聚合)
数据导出POST/admin-api/iot/monitor/export导出历史数据
告警规则列表GET/admin-api/iot/monitor/alarm-rule/page查询告警规则
创建告警规则POST/admin-api/iot/monitor/alarm-rule/create新增告警规则
更新告警规则PUT/admin-api/iot/monitor/alarm-rule/update编辑告警规则
删除告警规则DELETE/admin-api/iot/monitor/alarm-rule/delete删除告警规则
告警记录列表GET/admin-api/iot/monitor/alarm/page查询告警记录
处理告警PUT/admin-api/iot/monitor/alarm/handle标记已处理
忽略告警PUT/admin-api/iot/monitor/alarm/ignore忽略告警
告警统计GET/admin-api/iot/monitor/alarm/statistics告警统计

四、非功能需求

4.1 性能要求

指标目标值实现策略
消息处理吞吐单节点 10,000 条/秒基于 Kafka 消息队列异步处理,水平扩展
属性上报延迟接收到入库 < 200ms(P99)内存缓冲 + 批量写入
服务下发延迟发起到设备收到 < 500ms(P99)MQTT QoS 1 保证送达
实时数据推送WebSocket 延迟 < 1 秒基于 Redis Pub/Sub 分发
规则匹配延迟消息接收到匹配 < 100ms规则预编译 + 内存缓存
历史数据查询100 万条聚合查询 < 3 秒时序数据库 + 预聚合
并发连接数单节点 100,000 设备Netty 长连接 + 集群部署
设备上下线感知状态变更到平台感知 < 3 秒心跳检测定时任务
OTA 推送10,000 台设备 < 30 秒批量异步推送

4.2 安全要求

安全项实现方式
设备认证DeviceKey + DeviceSecret,支持一机一密和一型一密
传输加密TLS/DTLS 加密通信
数据加密敏感数据 AES-256 存储加密
接口鉴权RBAC 权限模型,所有接口需对应权限标识
多租户隔离所有数据表含 tenant_id
消息签名设备消息携带签名,平台校验合法性
操作审计设备创建/删除/禁用、规则变更等记录审计日志
脚本沙箱数据解析脚本在隔离环境执行,限制资源

4.3 错误码定义

错误码说明处理建议
IOT_PRODUCT_001产品名称已存在更换产品名称
IOT_PRODUCT_002产品下存在设备,无法删除先删除关联设备
IOT_PRODUCT_003产品已发布,不可修改协议创建新产品
IOT_DEVICE_001DeviceName 已存在系统自动分配或更换名称
IOT_DEVICE_002设备认证失败检查 DeviceKey/Secret 是否正确
IOT_DEVICE_003设备已禁用联系管理员启用设备
IOT_THING_MODEL_001物模型标识符已存在更换标识符
IOT_THING_MODEL_002物模型已被设备引用,不可删除先解除设备关联
IOT_RULE_001规则名称已存在更换规则名称
IOT_RULE_002规则触发频率超限等待限流窗口过期
IOT_GROUP_001分组名称已存在更换分组名称
IOT_GROUP_002分组下存在设备,无法删除先移出设备
IOT_ALARM_001告警规则不存在检查规则 ID

五、数据设计

5.1 数据表总览

IoT 模块共涉及 16 张数据表,分为 6 个数据域:

数据域表名说明
产品域iot_product产品表
产品域iot_product_category产品品类表
物模型域iot_thing_model_property物模型属性表
物模型域iot_thing_model_event物模型事件表
物模型域iot_thing_model_service物模型服务表
设备域iot_device设备表
设备域iot_device_tag设备标签表
设备域iot_device_group设备分组表
设备域iot_device_ota_taskOTA 升级任务表
规则域iot_rule规则表
规则域iot_rule_log规则日志表
消息域iot_message_log消息日志表
消息域iot_message_parser数据解析脚本表
监控域iot_alarm_rule告警规则表
监控域iot_alarm_record告警记录表
监控域iot_device_property_data设备属性数据表(时序)

5.2 数据关系图

IoT表关系

5.3 缓存策略

缓存 Key数据内容过期策略更新时机
iot:product:产品信息不过期产品创建/更新时刷新
iot:thing-model:产品物模型不过期物模型变更时刷新
iot:device:status:设备在线状态心跳周期 ×3设备上下线时更新
iot:group:tree:分组树1 小时分组变更时主动刷新
iot:rule:enabled:产品启用的规则列表不过期规则启用/禁用时刷新

5.4 核心数据表结构

iot_product 产品表

字段名类型必填说明
idbigint主键
product_namevarchar(128)产品名称,租户内唯一
product_keyvarchar(32)产品标识,全局唯一
product_secretvarchar(128)产品密钥
category_idbigint所属品类 ID
device_typetinyint设备类型:0-直连 1-网关 2-网关子设备
protocol_typevarchar(16)接入协议:MQTT/CoAP/HTTP/MODBUS
data_formatvarchar(32)数据格式:ALINK_JSON/MODBUS_CUSTOM/RAW
statustinyint状态:0-开发中 1-已发布 2-已禁用
node_typetinyint节点类型:0-设备 1-网关
descriptionvarchar(512)产品描述
creatorvarchar(64)创建者
create_timedatetime创建时间
updatervarchar(64)更新者
update_timedatetime更新时间
deletedbit(1)逻辑删除
tenant_idbigint租户 ID

iot_device 设备表

字段名类型必填说明
idbigint主键
product_idbigint所属产品 ID
device_namevarchar(128)设备名称,产品内唯一
device_keyvarchar(64)设备标识
device_secretvarchar(128)设备密钥
nicknamevarchar(128)设备别名
statustinyint状态:0-未激活 1-在线 2-离线 3-已禁用
firmware_versionvarchar(32)当前固件版本
group_idbigint所属分组 ID
ip_addressvarchar(64)最近连接 IP
last_online_timedatetime最后在线时间
last_offline_timedatetime最后离线时间
active_timedatetime首次激活时间
descriptionvarchar(512)设备描述
creatorvarchar(64)创建者
create_timedatetime创建时间
updatervarchar(64)更新者
update_timedatetime更新时间
deletedbit(1)逻辑删除
tenant_idbigint租户 ID

iot_device_group 设备分组表

字段名类型必填说明
idbigint主键
parent_idbigint父分组 ID,顶级为 null
group_namevarchar(128)分组名称
group_pathvarchar(512)分组路径(如 /root/A栋/1F)
levelint层级深度(1-5)
sort_orderint排序序号
descriptionvarchar(512)分组描述
creatorvarchar(64)创建者
create_timedatetime创建时间
updatervarchar(64)更新者
update_timedatetime更新时间
deletedbit(1)逻辑删除
tenant_idbigint租户 ID

iot_rule 规则表

字段名类型必填说明
idbigint主键
rule_namevarchar(128)规则名称,租户内唯一
descriptionvarchar(512)规则描述
product_idbigint关联产品 ID
statustinyint状态:0-禁用 1-启用
trigger_typevarchar(16)触发类型:property/event/status/timer
trigger_configtext触发条件配置(JSON)
logic_typevarchar(8)条件逻辑:AND/OR
action_typevarchar(32)动作类型
action_configtext动作配置(JSON)
action_modevarchar(16)执行模式:serial/parallel
retry_countint失败重试次数,默认 3
rate_limitint触发频率限制(次/分钟),默认 10
trigger_countbigint累计触发次数
last_trigger_timedatetime最后触发时间
creatorvarchar(64)创建者
create_timedatetime创建时间
updatervarchar(64)更新者
update_timedatetime更新时间
deletedbit(1)逻辑删除
tenant_idbigint租户 ID

iot_alarm_record 告警记录表

字段名类型必填说明
idbigint主键
alarm_rule_idbigint触发的告警规则 ID
device_idbigint告警设备 ID
product_idbigint所属产品 ID
alarm_leveltinyint告警等级:0-提示 1-一般 2-严重 3-紧急
alarm_contentvarchar(512)告警内容
trigger_valuevarchar(64)触发时的属性值
threshold_valuevarchar(64)告警阈值
statustinyint状态:0-待处理 1-处理中 2-已处理 3-已忽略
handlervarchar(64)处理人
handle_timedatetime处理时间
handle_remarkvarchar(512)处理备注
notify_statustinyint通知状态:0-未发送 1-已发送 2-发送失败
alarm_timedatetime告警发生时间
create_timedatetime记录创建时间
tenant_idbigint租户 ID

iot_device_property_data 设备属性数据表(时序)

字段名类型必填说明
idbigint主键
device_idbigint设备 ID
product_idbigint产品 ID
property_identifiervarchar(64)属性标识符
property_valuevarchar(256)属性值
report_timedatetime上报时间
create_timedatetime入库时间
tenant_idbigint租户 ID

索引设计:复合索引 idx_device_property_time (device_id, property_identifier, report_time);普通索引 idx_product_id、idx_report_time、idx_tenant_id。建议数据量大时迁移至时序数据库(TDengine/InfluxDB)。


六、跨模块联动

6.1 联动关系

联动模块联动方向联动内容
消息通知(02-03)IoT → 消息通知告警触发时通过短信/邮件/站内信通知相关人员
认证授权(01-01)认证 → IoTIoT 接口鉴权依赖系统认证体系
角色权限(01-03)权限 → IoTIoT 功能权限配置依赖 RBAC 权限模型
定时任务(02-03)定时 → IoT心跳检测、日志清理、OTA 定时升级依赖定时任务调度
数据报表(09-02)IoT → 数据报表IoT 设备数据分析和导出复用数据报表模块
监控运维(02-05)IoT → 监控IoT 平台自身的健康监控接入系统监控体系
MES 制造执行(08-04)IoT ↔ MESIoT 设备数据可为 MES 提供设备状态和产能数据

6.2 详细联动说明

6.2.1 IoT → 消息通知(02-03)

联动场景触发条件联动行为数据流向
告警通知设备属性触发告警规则调用消息通知模块发送短信/邮件/站内信IoT 告警记录 → 消息通知模板 → 用户
设备离线通知设备心跳超时变为离线发送离线告警通知给运维人员IoT 设备状态变更 → 消息通知 → 运维人员
OTA 升级结果升级任务完成/失败发送升级结果通知IoT OTA 任务状态 → 消息通知 → 管理员

6.2.2 IoT ↔ MES 制造执行(08-04)

联动场景触发条件联动行为数据流向
设备状态同步IoT 设备状态变更MES 查询设备可用性用于排产IoT 设备状态 → MES 设备管理
环境数据关联IoT 传感器上报环境数据MES 关联生产工单的质量数据IoT 属性数据 → MES 质量追溯

七、附录

7.1 名词解释

术语通俗理解
产品(Product)一类设备的"模板",就像"iPhone 16"是一个产品,每个人手里的具体手机是"设备"
设备(Device)能联网的具体物理实体,就像你手里那台具体的手机
物模型(Thing Model)设备的"岗位说明书"——定义它能汇报什么(属性)、遇到什么事要报告(事件)、能接什么指令(服务)
属性(Property)设备定期汇报的数据,像体温计每隔几分钟报一次温度
事件(Event)设备主动报告的异常情况,像烟雾报警器检测到浓烟时自动报警
服务(Service)平台可以向设备下达的指令,像远程开机、调高风速
DeviceKey/Secret设备的"身份证 + 密码",用来证明"我是谁"
ProductKey/Secret产品的"统一社会信用代码",标识产品身份
心跳(Heartbeat)设备定期向平台喊一声"我还活着",平台听不到就认为设备掉线了
OTA远程升级设备固件,就像手机推送系统更新,不用拆机器
TopicMQTT 协议中的"消息频道",设备在特定频道上收发消息,像微信群聊
透传数据不做任何格式转换直接传递,像原封不动转发别人的消息
Alink JSON设备和平台之间的"标准普通话"——一种 JSON 格式的数据交换协议
规则引擎"如果…就…"的自动化引擎——温度超标就开排风扇,设备离线就发短信
场景联动多个设备通过规则引擎自动协作,像"回家模式"自动开灯+开空调
设备分组按区域/楼层等维度把设备分门别类管理,像电脑文件夹分类
数据解析把设备说的"方言"翻译成平台能懂的"普通话",支持 JS/Python 脚本
告警规则给设备属性设"红线"——超过就报警,像体温超过 37.3℃ 就提示发烧
灰度升级先给一小部分设备升级,没问题再全量推送,像软件内测→公测→正式版
MQTT一种专门为物联网设计的通信协议,轻量、省电、适合设备长时间在线
时序数据按时间顺序排列的数据,像每 5 秒记录一次的温度值,适合用专门的时序数据库存储

7.2 权限标识汇总

模块权限标识说明
产品管理iot:product:query / create / update / delete / publish / category产品 CRUD + 发布 + 品类管理
物模型管理iot:thing-model:query / create / update / delete / import / export物模型 CRUD + 导入导出
设备管理iot:device:query / create / update / delete / enable / disable / control / ota / debug设备全生命周期 + 控制 + OTA + 调试
设备分组iot:device-group:query / create / update / delete / assign分组 CRUD + 设备分配
规则引擎iot:rule:query / create / update / delete / enable / debug规则 CRUD + 启用禁用 + 调试
设备消息iot:message:query / parser消息查看 + 解析脚本管理
设备监控iot:monitor:query / export / alarm-rule / alarm监控数据 + 导出 + 告警规则 + 告警处理