百度云物联网组件图
- 设备通过MQTT等协议将数据上报到百度云平台,百度云通过主题来将设备分发给其他设备,并且可以通过规则引擎来将数据发送给时序数据库对象存储等等其他云服务,来实现我们想要的各种功能。
规则引擎
一、规则引擎简介
- 使用规则引擎功能,可将Topic中的数据消息转发至其他Topic或其他百度云产品进行存储或处理。
- 当设备基于Topic进行通信时,我们可以在规则引擎中编写SQL对Topic中的数据进行数据转换处理,并配置转发条件将处理后的数据过滤并转发到其他设备Topic或百度云其他服务。
- 例如:
(1)将数据转发到另一个设备Topic中,以实现设备与设备的M2M通信.
(2)将数据转发到时序数据库TSDB中进行存储
(3)将数据转发到百度消息服务BMS(全兼容Apache Kafka)中,然后使用实时计算(4)进行流计算,使用大数据工具进行大规模离线计算,或是业务应用实现高可靠消费数据 - 使用规则引擎功能后,无需购买服务器部署分布式架构,即可实现采集+计算+存储的全栈全数据链路服务。
- 规则引擎使用限制
(1)规则引擎基于Topic对数据进行处理。只有通过Topic进行通信时,才能使用数据流转。
(2)当前版本仅支持对JSON格式上报的数据进行过滤和查询处理。
二、操作步骤 - 创建规则
(1)进入实例详情页,选择左边菜单中的规则引擎进入“规则列表”
(2)点击“创建规则”在弹窗中填写配置信息。
注意:名称为必填项,并且唯一不得有重复,2~32字符,可汉字、大小写、英文、数字、下划线以及括号。不可使用其他特殊符号。
描述可选填,8~128字符,任意字符
(3)点击确定后,完成规则的创建,“规则列表则会有新创建的规则。
2. 调试规则
规则创建完成后,想要进行配置才能实时接收处理设备的消息。
规则引擎以设备通过MQTT消息作为数据源,需要在规则中配置需要规则处理的消息发布主题,规则生效后会实时接收对应主题的消息进行转换和转发。
(1)设置数据来源第一步:点击规则列表中右侧“编辑调试”按钮,进入编辑调试页面。
(2)第二步:在“数据来源”输入框中输入需要订阅的设备消息来源topic。支持通配符订阅,可以使用#、+通配符。
如 i o t / + / e v e n t s 表 示 订 阅 iot/+/events表示订阅 iot/+/events表示订阅iot/device01/events、 i o t / d e v i c e 02 / e v e n t s . . . 等 所 有 第 2 层 为 任 意 值 , 其 他 部 分 相 同 的 t o p i c ; iot/device02/events...等所有第2层为任意值,其他部分相同的topic; iot/device02/events...等所有第2层为任意值,其他部分相同的topic;iot/device01/user/#表示订阅 i o t / d e v i c e 01 / u s e r / a b c 、 iot/device01/user/abc、 iot/device01/user/abc、iot/device01/user/def/ghi等所有以$iot/device01/user/开头的topic。
(3)使用输入框右侧的“topic模板”功能,可以快速选择需要订阅的数据来源,选择相应的设备模板>勾选指定的主题模板>查询选定指定设备,选择完毕后点击载入按钮,即可获得完整的数据来源topic。
注意:平台对单规则消息有1000TPS的限制,即每秒最多可以接收处理1000条消息,如需更高配额可发起工单申请。
(4)数据目的地是用于接收规则处理消息结果的其他云产品,用于指明消息处理结果的去向,可以设置MQTT主题、消息队列、存储、计算等产品作为数据目的地。设置数据目的地第一步:点击“添加目的地”按钮,在弹出的弹窗中选择目的地类型并填写目的地配置信息。点击“确定”,保存数据目的地,单个规则最多支持添加10个配置不同的目的地(注:目的类型相同时配置信息不能完全相同)。
特别注意:消息写入目的地时,写入性能受目的地云产品限制,当写入速率超过目的地云产品性能限制时可能触发目的地产品限制导致写入失败,写入失败的消息规则会进行重试,重试仍然失败时消息将被丢弃,请务必确保经过规则过滤每秒写入目的地产品的TPS和吞吐在目的地产品允许范围之内。
(5)配置数据筛选是规则对设备消息进行过滤和转换的配置信息,定义符合何种条件的数据转化为何种格式后转发到最终的数据目的地。
(6)过滤条件:设置消息转发的条件,支持从原始消息中直接选择变量或使用查询语法构建布尔表达式,
示例:properties.temperature>20 and properties.temperature<30
含义:过滤原始消息中的 properties下temperature值大于20且humidity小于30 的消息,转发到规则的数据目的地。
这部分的填写可以查看百度云的官方数据查询语法和函数:https://cloud.baidu.com/doc/IoTCore/s/Vkd8kaqfw
特别注意:只有符合过滤条件的数据才会向下进入数据查询(格式转换)环节,过滤条件为空或返回结果为true时视为数据符合条件,返回结果为false时,消息将被过滤掉。当过滤条件有输入时,「匹配结果」会实时显示表达式的返回结果。
(7)查询语句将符合过滤条件的数据转换为期望的目标格式。
{
"device":{
"product":productName,
"device":deviceName
},
"time":timestamp
}
操作技巧:编写查询语句时,可以复制一条与目标格式一致的消息到「查询语句」输入框内,之后将value替换为查询表达式。
执行上述配置后得到的结果:
{
"device":{
"product":"product001",
"device":"device001"
},
"time":1465376157007
}
数据查询模板是针对常用复杂数据格式转换场景提供的查询语句模板,当前主要对数据写入TSDB格式转换提供了面向不同源数据格式的数据格式转换模板,通过点击「数据查询模板」按钮,选择与你的数据源格式相符的模板可以快速复制查询语句到输入框,之后可以针对实际的消息示例,修改数据模板来最终得到目标格式。
(8)填写完配置信息,点击“保存”按钮返回规则列表,在对应规则操作“启用”规则开始运行.
完成以上步骤,则规则引擎创建成功。
参考链接
https://cloud.baidu.com/doc/IoTCore/s/dkd8kg7a7#配置数据筛选
https://www.bilibili.com/video/BV1dJ411S723?p=54
https://blog.csdn.net/dingyc_ee/article/details/103744896?utm_source=app