规则引擎Rule Engine

    概述

    本文档,我们展示如何创建一个规则,对设备上报的温度消息进行过滤和变换,将符合条件的消息变换成符合TSDB格式的消息,转发到另外一个物接入主题。

    假设设备实时上报的消息格式如:

    {
    	"deviceid":"device01",
    	"temperature": 34.5
    }

    并且假设设备消息上报的主题为"/devices/temperature/[deviceid]",其中[deviceid]为每个设备的设备id,即每个设备上报消息的主题不一样。

    同时假设,设备上报消息的物接入实例为: yyj。

    视频教程

    快速了解规则引擎的操作界面,请观看视频教程

    操作准备

    请确保您已经开通了物接入(IoT Hub)服务,并且至少有一个实例(endpoint)。

    创建规则

    创建规则的步骤如下:

    1. 转到规则创建页面
    2. 在规则名称描述中分别填入名称和描述。
    3. 在实例和主题的左侧下拉框中,选择您的物接入实例,右侧的主题文本框输入:/devices/temperature/#。需要说明的是,#是通配符,表示该规则引擎输入的主题为任意以/devices/temperature/开头的主题,这样我们可以处理所有设备上报的温度消息。
    4. 可选步骤。在测试输入文本区域填入一个样例消息:

      {
      	"deviceid":"device01",
      	"temperature": 34.5
      }
    5. 在查询字段中,填入: CURRENT_TIMESTAMP AS `timestamp`, 'mymetric' AS metric, temperature AS `value`, deviceid。因为设备没有上报消息产生的时间,我们使用系统当前时间作为时间戳,即CURRENT_TIMESTAMP;timestamp和value均为SQL的关键词,因此需要用重音符(back tick)引用起来;用mymetric作为写TSDB的度量名;以deviceid的值作为一个tag。
    6. 约束条件文本框中输入: temperature > 30。表示我们只转发温度大于30的消息,忽略温度小于或者等于30的消息。
    7. 可选步骤。点击结果预览上方的测试按钮。我们应该可以看到下方提示该格式可以写入时序数据库。

      tupian

    8. 点击数据目的地下方的添加数据目的地按钮。
    9. 在弹出的添加数据目的地对话框中,数据目的地选择物接入主题实例保留默认值,即消息转发到与输入相同的实例中去;主题文本框中输入:/devices/to_tsdb;点击提交。操作界面如下图所示:

      tupian

    10. 点击保存。至此,我们的规则已经创建好了。

    查看结果

    为了查看规则的输出,您需要以目的地主题的物接入项目的设备身份,订阅规则的目的地主题/devices/to_tsdb,并且确保该物接入设备有该主题的订阅权限。当有设备上报消息,并且温度大于30,应该能在该主题订阅到输出消息。

    特别说明,该例子规则的目的地是物接入,因此数据并不会写入到时序数据库(TSDB)。如果希望数据写入到TSDB,仅需要给规则增加一个时序数据库的目的地即可。

    上一篇
    产品定价
    下一篇
    操作指南