目录
引言
过滤规则
特定topic转发
特定设备转发
特定产品转发
特定数据转发
结语
参考资料
引言
前一篇博文介绍了如何在两个设备之间进行通信转发。和利用topic进行转发相比,华为的这种方法比较麻烦,但是它功能比较强,包括可以利用SQL语言的条件进行过滤转发。今天就简单介绍一下其转发的规则。
过滤规则
从创建规则的界面可以看到,其右侧实际上有一个SQL语句作为过滤条件。这个条件可以直接通过编辑SQL语句来实现。
其编辑界面如下:
这里面最重要的是过滤条件字段,其语法参考SQL语言中的WHERE语句。推送数据字段的修改一般不用于设备间通信,更多的是用于其他推送对象。
数据转发规则收到的数据的格式是这样的:
{
"resource": "device.message",
"event": "report",
"event_time": "string",
"notify_data": {
"header": {
"app_id": "d4922d8a-6c8e-4396-852c-164aefa6638f",
"device_id": "d4922d8a-6c8e-4396-852c-164aefa6638f",
"node_id": "ABC123456789",
"product_id": "ABC123456789",
"gateway_id": "d4922d8a-6c8e-4396-852c-164aefa6638f",
"tags": [
{
"tag_key": "testTagName",
"tag_value": "testTagValue"
}
]
},
"body": {
"topic": "string",
"content": "string"
}
}
}
所以,就可以利用各种条件语句实现特定的数据转发。下面是几种常见的数据转发条件。
特定topic转发
如果希望Topic中包含/test/M2M/的消息上报,可在SQL的过滤条件中添加TARTS_WITH(notify_data.body.topic,'/test/M2M/'),则所有topic以“/test/M2M/”开头的都会触发该流转规则,转发到设置的转发目标。
特定设备转发
若希望指定某个设备上报的数据进行流转,可在SQL语句中添加:AND notify_data.header.device_id='${对应的设备ID}'。
特定产品转发
若希望指定某种产品上报的数据进行流转,可在SQL语句中添加:AND notify_data.header.product_id='${对应的产品ID}'。
特定数据转发
如果希望设备上报消息中temperature大于38度时会触发转发,则使用如下条件:notify_data.body.content.temperature > 38
结语
华为的数据转发规则很强大,值得深入学习。
参考资料
SQL语句_设备接入 IoTDA_华为云