规则引擎推送实例

此处将编写三个实例来使用户更好地理解规则引擎的用法及功能。

实例0:对照实例

【说明】:

此实例将创建一个不进行任何字段筛选(SELECT)或条件过滤(WHERE)的规则引擎,即将所有的数据通过HTTP(S)的推送方式推送到指定地址。 所得到的结果可以为后续实例进行对比。

【操作步骤】:

  1. 在“规则引擎”页面,点击“新建规则”,填好规则描述,选择产品;
  2. 规则内容SELECT中填写*
  3. 规则内容WHERE中不填写过滤条件;
  4. 选择操作“发送到HTTP(S)接口”;
  5. 目的地填写http://10.50.80.100:1200(此地址为无效地址,仅作示例);
  6. 点击“确定”,完成规则创建;
  7. 在规则列表中点击“启用”,启用规则;
  8. 规则启用后,满足规则条件的数据会通过POST方式发送到所配置的http地址。

【设备操作】:

  1. 设备登录;
  2. 发送设备所有参数(电源开关信息power:1;光照强度light:50;湿度hum:23);
  3. 发送设备所有参数(电源开关信息power:1;光照强度light:95;湿度hum:23);
  4. 设备登出。

【数据结果】: 共收到推送四组数据:

操作1对应的数据

{
    "iot_sys_devId": "8237948938472348",
    "iot_sys_pk": "fb4327cdcfe5432e82ad217572bd8ebd",
    "iot_sys_event": "devLogin",
    "iot_sys_raw": "{\"action\":\"devLogin\",\"msgId\":1,\"sign\":\"4f6a95a54bad27a874132929781ff4fea1748b7c\",\"random\":\"init\",\"hashMethod\":\"HmacSHA1\"}",
    "iot_sys_resp": "{\"action\":\"devLoginResp\",\"msgId\":1,\"pk\":\"fb4327cdcfe5432e82ad217572bd8ebd\",\"devId\":\"8237948938472348\",\"code\":0,\"desc\":\"success, \"}",
    "iot_sys_timestamp": 1576034808492
}

操作2对应的数据

{
    "iot_sys_devId": "8237948938472348",
    "iot_sys_pk": "fb4327cdcfe5432e82ad217572bd8ebd",
    "iot_sys_params": {
        "hum": 23,
        "light": 50,
        "power": 1
    },
    "iot_sys_event": "devSend",
    "iot_sys_cmd": "reportAll",
    "iot_sys_raw": "{\"action\":\"devSend\",\"msgId\":0,\"pk\":\"fb4327cdcfe5432e82ad217572bd8ebd\",\"devId\":\"8237948938472348\",\"data\":{\"cmd\":\"reportAll\",\"params\":{\"power\":1,\"light\":50,\"hum\":23}}}",
    "iot_sys_resp": "{\"action\":\"devSendResp\",\"msgId\":0,\"pk\":\"fb4327cdcfe5432e82ad217572bd8ebd\",\"devId\":\"8237948938472348\",\"code\":0,\"desc\":\"success\"}",
    "iot_sys_timestamp": 1576033843689
}

操作3对应的数据

{
    "iot_sys_devId": "8237948938472348",
    "iot_sys_pk": "fb4327cdcfe5432e82ad217572bd8ebd",
    "iot_sys_params": {
        "hum": 23,
        "light": 95,
        "power": 1
    },
    "iot_sys_event": "devSend",
    "iot_sys_cmd": "reportAll",
    "iot_sys_raw": "{\"action\":\"devSend\",\"msgId\":0,\"pk\":\"fb4327cdcfe5432e82ad217572bd8ebd\",\"devId\":\"8237948938472348\",\"data\":{\"cmd\":\"reportAll\",\"params\":{\"power\":1,\"light\":95,\"hum\":23}}}",
    "iot_sys_resp": "{\"action\":\"devSendResp\",\"msgId\":0,\"pk\":\"fb4327cdcfe5432e82ad217572bd8ebd\",\"devId\":\"8237948938472348\",\"code\":0,\"desc\":\"success\"}",
    "iot_sys_timestamp": 1576035409147
}

操作4对应的数据

{
    "iot_sys_devId": "8237948938472348",
    "iot_sys_pk": "fb4327cdcfe5432e82ad217572bd8ebd",
    "iot_sys_event": "devLogout",
    "iot_sys_raw": "{\"action\":\"devLogout\",\"msgId\":0,\"reason\":\"normal\"}",
    "iot_sys_resp": "{\"action\":\"devLogoutResp\",\"msgId\":0,\"pk\":\"fb4327cdcfe5432e82ad217572bd8ebd\",\"devId\":\"8237948938472348\",\"code\":0,\"desc\":\"success\"}",
    "iot_sys_timestamp": 1576034807613
}

实例1:转发到指定HTTP(S)地址

【说明】:

只接收devSend请求的推送,且只把部分字段推送到指定地址。

推送地址:http://10.50.80.100:1200(此地址为无效地址,仅作示例)。

推送的字段为:设备IDiot_sys_devId、事件iot_sys_event以及部分协议参数iot_sys_params(光照强度light,湿度hum)。

【操作步骤】:

  1. 在“规则引擎”页面,点击“新建规则”,填好规则描述,选择产品;
  2. 根据需求“推送的字段为:设备ID、PK以及协议参数”,SELECT中填写iot_sys_devId,iot_sys_event,light,hum(light,hum为协议中定义的要上报的参数);
  3. 根据需求“设备上报状态时(devSend),若设备的亮度高于阈值90时推送”,WHERE中填写;iot_sys_event="devSend" and light > 90(devSen为设备上报状态的数据、light > 90 表示亮度高于阈值90);
  4. 选择操作“发送到HTTP(S)接口”;
  5. 目的地填写http://10.50.80.100:1200(此地址为无效地址,仅作示例);
  6. 点击“确定”,完成规则创建;
  7. 在规则列表中点击“启用”,启用规则;
  8. 规则启用后,满足规则条件的数据会通过POST方式发送到所配置的http地址。

【设备操作】:

  1. 设备登录;
  2. 发送设备所有参数(电源开关信息power:1;光照强度light:50;湿度hum:23);
  3. 发送设备所有参数(电源开关信息power:1;光照强度light:95;湿度hum:23);
  4. 设备登出。

【数据结果】:

仅收到一组数据:

操作3对应的数据

{
    "iot_sys_devId": "8237948938472348",
    "iot_sys_params": {
        "hum": 23,
        "light": 95
    },
    "iot_sys_event": "devSend"
}

【对照分析】:

对比对照实例,可知:

  1. 规则引擎的条件过滤功能使得设备的操作1操作2操作4数据被过滤;
  2. 规则引擎的字段筛选功能使得仅获得到设备IDiot_sys_devId、事件iot_sys_event和参数iot_sys_params,且参数只转发湿度hum和光照强度light

实例2:转发到一个Topic

【说明】:

获取设备上下线通知

推送的字段为:设备IDiot_sys_devId、事件iot_sys_event以及操作时间iot_sys_timestamp

【操作步骤】:

  1. 在“规则引擎”页面,点击“新建规则”,填好规则描述,选择产品;
  2. 根据需求,SELECT中填写iot_sys_devId,iot_sys_event,iot_sys_timestamp
  3. 根据需求“设备上线、离线状态变化时”时推送,WHERE中填写iot_sys_event="devLogin" or iot_sys_event="devLogout"(devLogin设备上线、devLogout设备离线);
  4. 选择操作“发送到一个Topic”;
  5. 点击“确定”,完成规则创建;
  6. 在规则列表中点击“启用”,启用规则;
  7. 规则创建好后,点击“查看”,可获取推送的Topic,以及建立MQTT连接认证需要的AccessKey和AccessSecret。注意,此AccessKey和AccessSecret不同于"应用开发指南"中的AccessKey,仅用于当前Topic数据获取。

接收数据操作步骤:

1. 构造clientId:rule:{AccessKey}
2. 构造username:{hashMethod}:{random}(hashMethod支持:HmacMD5、HmacSHA1、HmacSHA256和 HmacSHA512。
3. 计算password,password= hashMethod(AccessKey+AccessSecret+random),加密秘钥填写AccessSecret。
4. 建立MQTT连接,进行接入认证。
5. 复制规则引擎中生成的Topic,并订阅该Topic。
6. 订阅成功后就可正常接收规则引擎推送来的数据。

【注意】

暂不支持自定义Topic。
注意区分clientId和Topic。

【设备操作】:

  1. 设备登录;
  2. 发送设备所有参数(电源开关信息power:1;光照强度light:50;湿度hum:23);
  3. 发送设备所有参数(电源开关信息power:1;光照强度light:95;湿度hum:23);
  4. 设备登出。

【数据结果】:

收到二组数据:

操作1对应的数据

{
    "iot_sys_devId": "8237948938472348",
    "iot_sys_event": "devLogin",
    "iot_sys_timestamp": 1576053309725
}

操作4对应的数据

{
    "iot_sys_devId": "8237948938472348",
    "iot_sys_event": "devLogout",
    "iot_sys_timestamp": 1576053324204
}

【对照分析】:

对比对照实例,可知:

  1. 规则引擎的条件过滤功能使得设备的操作2操作3数据被过滤;
  2. 规则引擎的字段筛选功能使得仅获得到设备IDiot_sys_devId、事件iot_sys_event和时间iot_sys_timestamp

说明

此处实例只涉及到了部分筛选字段和部分过滤条件,可以在规则引擎中查看所有的字段和条件,以及不同设备操作对应推送消息包含的字段说明。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""