操作步骤
创建规则
- 登录物联网核心套件控制台。
- 进入“实例列表”,点击 实例名称 ,进入实例详情页面。
- 在实例详情页面的左侧导航栏,在“规则引擎”下选择 规则列表,进入规则列表页面。
-
点击 创建规则 按钮,在弹窗中填写配置信息:
- 名称:必填,租户下唯一,2~32字符,可为汉字、大小写英文、数字、中线、下划线及括号,不可使用其他特殊字符
- 描述:可选,0~128,任意字符
- 填写配置信息后点击 确定,完成规则的创建,“规则列表”会列出新创建的规则。
调试规则
规则创建完成后,需要进行配置后才能实时接收处理设备消息。
设置数据来源
规则引擎以设备通过MQTT消息作为数据源,需要在规则中配置需要规则处理的消息发布主题,规则生效后会实时接收对应主题的消息进行转换和转发。
-
点击规则列表操作栏的 编辑调试 按钮,进入编辑调试页面。
-
设置数据来源
在数据来源输入框中输入需要订阅的设备消息来源topic。
支持通配符订阅,可以使用#、+通配符
如$iot/+/events表示订阅$iot/device01/events、$iot/device02/events...等所有第2层为任意值,其他部分相同的topic;
$iot/device01/user/#表示订阅$iot/device01/user/abc、 $iot/device01/user/def/ghi等所有以$iot/device01/user/开头的topic
使用输入框右侧的“topic模板”功能,可以快速选择需要订阅的数据来源,选择相应的设备模板>勾选指定的主题模板>查询选定指定设备,选择完毕后点击载入按钮,即可获得完整的数据来源topic
特别注意:
- 平台对单规则消息有1000TPS的限制,即每秒最多可以接收处理1000条消息,如需更高配额可发起工单申请。
设置数据目的地
数据目的地是用于接收规则处理消息结果的其他云产品,用于指明消息处理结果的去向,可以设置MQTT主题、消息队列、存储、计算等产品作为数据目的地。
-
点击 添加目的地 按钮,在弹出的弹窗中选择目的地类型并填写目的地配置信息。点击 确定,保存数据目的地,单个规则最多支持添加10个配置不同的目的地(注:目的类型相同时配置信息不能完全相同)。
- 各类型数据目的地配置说明:
目的地类型 | 配置项 | 说明 |
MQTT主题 | IoT Core | 必选,接收消息的IoT Core,可以选择当前账号下有操作权限的所有IoT Core实例 |
Topic | 必填,目的地主题可以是选定IoT Core下任何合法(不能包含通配符#、+)的主题,规则引擎有权限将消息转发到指定IoT Core下任何有效主题 | |
Qos | 必选,规则引擎向目的地Topic发布消息时的Qos当前仅支持Qos=1,即至少发布一次,因此使用时需要特别注意订阅目的地Topic可能接收到重复消息 | |
百度消息服务BMS | 区域 | 必选,百度消息服务BMS(百度kafka)实例所在的区域选择使用与消费服务(服务器或业务应用)相同的区域可以减少网络延迟,建议根据实际情况在百度消息服务中创建实例后在此进行选择。 百度消息服务开通创建说明及支持的区域详见百度消息服务帮助文档 |
存储主题 | 必选,需要将消息发往的kafka主题如下拉列表中无可选项,请检查在上一项中所选区域下是否已创建百度消息服务实例,如已创建可点击右侧“刷新”按钮进行刷新;如未创建可点击“创建kafka”按钮,跳转到百度消息服务控制台进行创建 注:规则引擎将消息写入kafka时暂不支持指定分区 | |
时序数据库TSDB | 区域 | 必选,时序数据库TSDB实例所在的区域选择使用与业务服务(服务器或业务应用)相同的区域可以减少数据查询时的网络延迟,建议根据实际情况创建TSDB实例后在此进行选择。 时序数据库创建说明及支持的区域详见时序数据库帮助文档 |
数据库名称 | 必选,需要将数据存储到的TSDB实例如下拉列表中无可选项,请检查在上一项中所选区域下是否已创建TSDB实例,如已创建可点击右侧”刷新“按钮进行刷新;如未创建可点击”创建时序数据库“按钮,跳转到时序数据库控制台进行创建 注:数据写入TSDB是要求必须符合TSDB的写入格式要求,详细规范请参阅 数据目的地>存储到时序数据库 章节 | |
函数计算CFC | 区域 | 必选,函数所在的区域选择使用与业务服务(服务器或业务应用)相同的区域可以减少数据查询时的网络延迟,建议根据实际情况创建函数后在此进行选择。 函数计算CFC使用说明及支持的区域详见函数计算CFC帮助文档 |
函数名称 | 必选,处理消息的函数如下拉列表中无可选项,请检查在上一项中所选区域下是否已创建有函数,如已创建可点击右侧”刷新“按钮进行刷新 | |
函数版本 | 必选,函数的版本 | 用户KAFKA | 存储主题 | 必选,写入消息的自定义kafka主题 存储主题需要在目的地管理中添加后才能在此处进行选择,数目目的地管理使用说明详见数据目的地管理帮助文档 |
指定key | 可选,可指定规则输出结果中的JSON对象最外层的一个key作为写入Kafka的key值 |
特别注意:
- 消息写入目的地时,写入性能受目的地云产品限制,当写入速率超过目的地云产品性能限制时可能触发目的地产品限制导致写入失败,写入失败的消息将被丢弃,请务必确保经过规则过滤每秒写入目的地产品的TPS和吞吐在目的地产品允许范围之内。
配置数据筛选
数据筛选是规则对设备消息进行过滤和转换的配置信息,定义符合何种条件的数据转化为何种格式后转发到最终的数据目的地。支持使用查询语法编写过滤条件和查询语句,语法和函数支持详见《数据查询语法和函数》章节。
测试输入
输入规则待处理消息的示例,建议以设备实际上报数据格式一致,当测试输入有内容时,后续过滤条件、查询语句发生变化时,「结果预览」处将实时显示查询结果。
示例:
{
"reqId":"442c1da4-9d3a-4f9b-a6e9-bfe858e4ac43",
"timestamp":1465376157007,
"deviceName":"device001",
"productName":"product001",
"properties":{
"temperature":35,
"humidity":22
},
"other":{
"Misc":null
}
}
过滤条件
设置消息转发的条件,支持从原始消息中直接选择变量或使用查询语法构建布尔表达式。
示例:properties.temperature>20 and properties.humidity<30 含义:过滤原始消息中的 properties下temperature值大于20且humidity小于30 的消息,转发到规则的数据目的地
示例:
properties.temperature>20 and properties.humidity<30
特别注意:
- 只有符合过滤条件的数据才会向下进入数据查询(格式转换)环节,过滤条件为空或返回结果为true时视为数据符合条件,返回结果为false时,消息将被过滤掉。
- 当过滤条件有输入时,「匹配结果」会实时显示表达式的返回结果。
查询语句
通过查询语句可以将符合过滤条件的数据转换为期望的目标格式。
示例:
{
"device":{
"product":productName,
"device":deviceName
},
"time":timestamp
}
操作技巧:编写查询语句时,可以复制一条与目标格式一致的消息到「查询语句」输入框内,之后将value替换为查询表达式。
执行上述配置后得到的结果:
{
"device":{
"product":"product001",
"device":"device001"
},
"time":1465376157007
}
特别注意:
- 当查询语句为空时,规则默认执行透传操作,即消息会原文转发到数据目的地。
- 当查询语句为 $ 时同样表示透传,但只对JSON格式数据有效,非JSON格式消息会被视为错误格式,不被查询语句处理而丢弃。
数据查询模板
数据查询模板是针对常用复杂数据格式转换场景提供的查询语句模板,当前主要对数据写入TSDB格式转换提供了面向不同源数据格式的数据格式转换模板,通过点击「数据查询模板」按钮,选择与你的数据源格式相符的模板可以快速复制查询语句到输入框,之后可以针对实际的消息示例,修改数据模板来最终得到目标格式。
保存配置
填写完配置信息,点击“保存”按钮返回规则列表,在对应规则操作“启用”规则开始运行,此时可在目的地产品中查看数据,验证是否符合预期。
查看规则
查看详情
查看规则基本信息,可以对规则基本信息、配置信息等操作。
-
在“规则列表”页面,点击规则名称,进入规则详情页页面。
- 点击页面右上方的编辑调试按钮,可快速进入规则编辑页进行配置修改
启用规则
- 当规则处于非“运行中”状态时,在“规则列表”页面点击规则右侧“启用”,可启用规则。
- 启动成功或失败时均会有相应提示,如启用失败,请进入编辑调试页面检查规则的配置信息是否有错误。
禁用规则
- 当规则处于“运行中”状态时,在“规则列表”页面点击规则右侧禁用,可禁用规则。
- 禁用成功或失败时均会有相应提示,如禁用失败,请尝试刷新页面,查看规则状态。
- 规则被禁用后会立即停止接收、处理、转发消息。
删除规则
勾选需要删除的规则,点击删除按钮,点击确定,将删除选择的规则。规则只有在禁用状态下才可以被删除。