Skip to content

数据流转 ​

这篇解决什么 ​

设备上行之后,怎么原样转到 HTTP / MQTT / 库表 / 消息队列,不要和场景联动混成一条规则。读完能对上 iot_data_rule、iot_data_sink 和订阅组 iot_data_rule_consumer。

规则管「听谁」;目的管「送到哪」。前端在 views/iot/rule/data/。历史菜单路径 iot/rule/databridge 只是兼容入口,实际还是数据流转页。

示意图:消息总线同一条设备主题,流转和场景各有自己的 consumer group。

从哪改 ​

名称说明仓库路径
规则 API/iot/data-ruleruoyi-office/yudao-module-iot/yudao-module-iot-server/.../IotDataRuleController.java
目的 API/iot/data-sinkIotDataSinkController.java
规则表源配置 + 目的 id 列表@TableName("iot_data_rule")
目的表类型 + JSON 配置@TableName("iot_data_sink")
消费topic 设备消息,group iot_data_rule_consumerIotDataRuleMessageSubscriber
前端规则 / 目的两个页ruoyi-office-vben/apps/web-antd/src/views/iot/rule/data/

SourceConfig.method 取上行 method,常见 thing.property.post / thing.event.post。deviceId 填具体设备,或 0(IotDeviceDO.DEVICE_ID_ALL)表示该产品下全部设备。identifier 空表示该 method 下任意标识。

属性上报会拆 params 里每个属性 key 分别匹配。多条规则命中同一 sinkId 会去重,避免重复推。当前是匹配后转发,没有脚本改字段。

目的类型见 IotDataSinkTypeEnum:HTTP 1、TCP 2、WebSocket 3、MQTT 10、Database 20、Redis 21、RocketMQ 30、RabbitMQ 31、Kafka 32。每种有对应 Iot*DataRuleAction。

字段 ​

名称说明仓库路径
sourceConfigsmethod / productId / deviceId / identifierIotDataRuleDO.SourceConfig
sinkIds目的编号列表IotDataRuleDO
type / config目的类型与连接参数IotDataSinkDO
status启用才参与匹配CommonStatusEnum

先建目的再挂规则

规则只存 sinkIds。目的没启用或配置错,规则开启也不会发出去。删目的前先查 getDataRuleListBySinkId。

和场景联动分开改

流转是「转发到外部」。告警、设属性、调服务走 场景联动。两边都订同一条设备消息,互不影响。

java
@RequestMapping("/iot/data-rule")
public class IotDataRuleController { }

@TableName(value = "iot_data_rule", autoResultMap = true)
public class IotDataRuleDO extends BaseDO { }

配置与操作 ​

走 规则引擎 → 数据桥梁(4051,历史 path data-bridge,页在 views/iot/rule/data/)。先建目的 /iot/data-sink(HTTP 1 / MQTT 10 / 库 20 / MQ 30–32 等),再在规则里挂 sinkIds。源 deviceId=0 表示该产品全部设备。status 启用才匹配。

和场景联动各订各的 consumer group。没有脚本改字段。删目的前先查规则引用。开启见 IoT 功能设计。

数据流转

本系统截图:规则引擎 → 数据桥梁。先建目的再挂规则。

相关篇 ​

联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版