首页 / Java 平台(cloud-java) / iot 设备
iot 设备
产品与物模型、设备档案、绑定流程(Saga)、分享、规则与 OTA。
职责概览
IoT 业务模块 独立端口 48095 / gRPC 49095,管理产品与物模型、设备档案、设备绑定(Saga)、预绑定、设备分享、数据规则、场景规则、OTA 与设备消息。
模块分 api / core / server 三层,其中 core 承载消息总线(local / Redis Stream / RocketMQ / NATS)与共享 gRPC 代码。
接口清单
| 分组 | Controller | 说明 |
|---|---|---|
| 产品 | IotProductController、IotProductCategoryController、AppIotProductController | 产品与品类管理 |
| 物模型 | IotThingModelController、AppIotThingModelController | 物模型定义(属性/事件/服务) |
| 设备 | IotDeviceController、IotDevicePropertyController、IotDeviceMessageController、IotDeviceGroupController、AppIotDeviceController、AppTestDeviceController | 设备档案、属性、消息、分组;App 设备管理与测试设备 |
| 绑定 | IotBindingTaskController、IotDevicePreBindController、IotBindSessionController、AppIotBindingController | 绑定任务、预绑定、绑定会话(Saga 中间状态) |
| 分享 | IotDeviceShareController、AppIotDeviceShareController | 设备分享(from/to 用户 + 状态 + 有效期) |
| 规则 | IotDataRuleController、IotDataSinkController | 数据规则与数据出口配置 |
| OTA | IotOtaFirmwareController、IotOtaTaskController、IotOtaTaskRecordController | 固件、升级任务与任务记录 |
| 统计/告警 | IotStatisticsController、IotAlertRecordController、IotAlertConfigController | 设备统计与 IoT 告警 |
| 公共数据 | IotDeviceCdController、IotProductCdController、IotDeviceGroupCdController、IotProductCategoryCdController | 字典/公共数据接口 |
关键实现
绑定 Saga
- 创建绑定任务(
iot_binding_task)并发布 Seat 预占请求(RocketMQ topicentrax-subscription-binding-saga-v1) IotBindingSagaListener接收seat.reserved / payment-required / reserve-failed / paid.activation-completed / seat.released结果IotBindingTaskService.handleSubscriptionResult驱动任务状态;失败由IotBindingRetryJob重试- 业务提交后由
IotBindingOutboxJob可靠发布 Outbox 消息
消息与规则
| 消费者/实现 | 说明 |
|---|---|
IotDeviceMessageSubscriber | 设备消息订阅(物模型上报、状态变更) |
IotDataRuleMessageSubscriber、IotSceneRuleMessageSubscriber | 数据规则与场景规则触发 |
messagebus(local / Redis Stream / RocketMQ / NATS) | 消息总线多实现,按 profile 启用 |
IotOtaUpgradeJob | OTA 升级任务调度(@XxlJob) |
数据与维护注意
核心表:iot_*(23 张),关键表 iot_bind_session、iot_binding_task、iot_device_share、iot_device、Outbox/Inbox 表。
- 绑定任务幂等约束:租户内
task_no、pay_order_no与未完成 session/pre-bind/device guard 唯一。 - 设备归属以绑定流程结果为准,不以单行
owner_user_id替代完整流程。 - 设备密钥、产品密钥属敏感信息,不得写日志;消息总线切换实现时确认消费者注册与 Stream/Group 配置。