概述

本文档,我们展示如何创建一个规则,对设备上报的温度消息进行过滤和变换,将符合条件的消息变换成符合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,仅需要给规则增加一个时序数据库的目的地即可。