# 监测设备状态变化情况并发送通知
#### 概述
在物联网场景下，部分设备具备重要的应用场景，比如物联网网关等，设备管理者需要感知这些设备的上下线情况。
设备接入服务提供规则引擎功能可以满足该诉求，您可以通过简单的操作实现当设备状态满足某个条件时，物联网平台触发指定动作进行通知。
#### 示例场景
某企业的网关产品下有一批网关设备，单个网关设备下挂载了约400个子设备，用户需要实时关注这批网关设备的状态，确保子设备正常上报数据，同时由于网关设备和物联网平台通过4G网络建立连接，存在由于网络抖动导致频繁告警的问题，因此用户认为短暂的离线后上线属于正常场景，不希望感知这种场景。
通过以下示例可以实现监控该网关产品下所有网关设备在离线持续时间达到5分钟后通过物联网平台上报告警，在设备上线持续时间达到1分钟后恢复该告警，同时发送邮件或短信通知给指定的手机号码。
操作步骤如下：
1. [配置设备接入服务]：创建物联网产品和设备，创建联动规则，实现设备上下线满足特定条件后发送告警到应用运维管理服务。
2. [配置消息通知服务]：创建短信或邮件订阅。
3. [配置应用运维管理服务]：创建告警规则，处理由设备接入服务上报上来的告警，并通过消息通知服务发送短信或邮件通知。
图1示例说明   
![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000002099863605.png "点击放大")
 #### 配置设备接入服务
在设备接入服务中创建产品模型、注册设备并设置设备联动规则，实现当设备离线达到5分钟后上报告警到应用运维管理平台，设备上线1分钟后恢复该告警。
![](https://support.huaweicloud.com/bestpractice-iothub/public_sys-resources/note_3.0-zh-cn.png)
本文中使用的产品模型和设备仅为示例，您可以使用自己的产品模型和设备进行操作。
1. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"立即使用"进入设备接入控制台。选择您的实例，单击实例卡片进入。
2. 选择左侧导航栏的"产品"，单击页面左侧的"创建产品"，创建一个基于MQTT协议的产品，填写参数后，单击"确定"，完成产品的创建。 
   表1创建产品参数示例 
   |                                          **基本信息**                                           ||
   |---|---|
   | 产品名称 | 自定义，如MQTT_Device。 |
   | 协议类型  | 选择"MQTT"。       |
   | 数据格式 | 选择"JSON"。       |
   | 所属行业    | 根据实际情况进行填写。        |
   | 设备类型 | 根据实际情况进行填写。        |
      
   
   
3. 单击[文件](https://obs-pipeline.obs.cn-north-4.myhuaweicloud.com/sdkDeploy/Profile_01.zip)，获取产品模型文件样例。
4. 找到新增的产品，单击"产品"进入产品详情界面。
5. 在产品详情"基本信息"页面，单击"上传模型文件"，在弹出的页面中加载产品模型文件，然后单击"确定"。 
   图2产品-上传模型文件   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001950352382.png "点击放大")
   
   
6. 选择左侧导航栏的"设备 \> 所有设备"，单击"注册设备"，填写设备注册参数。填写完成后单击"确定"，请注意保存注册成功返回的"设备ID"和"设备密钥"。 
   图3单设备注册-gateway   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001950367918.png "点击放大")
   表2注册设备参数填写说明 
   | 参数名称  | 说明                                                          |
   |:---|:---|
   | 所属产品  | 选择[4]中创建的产品。 |
   | 设备标识码 | 即node_id，填写为设备的IMEI、MAC地址或Serial No；若没有真实设备，填写自定义字符串，由英文字母和数字组成。                                     |
   | 设备名称                    | 自定义。                                                                            |
   | 设备认证类型                     | 选择"密钥"。                                                                         |
   | 密钥    | 设备密钥，可自定义，不填写物联网平台会自动生成。                                                      |
      
   
   
7. 选择左侧导航栏的"规则\>设备联动"，单击"创建规则"按钮。（创建规则前需选择所属资源空间）
8. 参考下表参数说明，填写规则内容，创建网关离线上报告警规则。以下参数取值仅为示例，您可参考[云端规则](https://support.huaweicloud.com/usermanual-iothub/iot_01_0023.html)创建自己的告警规则，填写完成后单击"创建规则"。
   
   表3创建联动规则参数填写说明 
   | 参数名称    | 步骤说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|
   | 规则名称   | 自定义，例如网关离线规则"Gateway_Offline_Monitor"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 激活规则  | 勾选"激活规则"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 生效时间 | 选择"一直生效"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | 描述       | 对该规则的描述，如"网关设备离线持续时长达到5分钟上报告警。"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 触发条件   | 1. 单击"添加条件"；  2. 选择"设备状态触发"；  3. 选择[4]中添加的产品"MQTT_Device"，选择"全部设备"，触发状态选择"下线"；  4. "状态持续时长"选择"5分钟"。   |
   | 执行动作   | 1. 单击"添加动作"；  2. 动作类型选择"上报告警"；  3. "告警等级"选择"重要"，告警隔离级别选择"设备"维度隔离，"告警名称"输入"网关状态变更"，"告警内容"输入"网关设备离线，请及时确认并安排人员进行维护"并单击"确定"。                                                                                                                         |
      
   图4新建联动规则-GatewayOffline   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001950384024.png "点击放大")
   
   
9. 创建网关上线恢复告警规则。 
   图5新建联动规则-GatewayOnline   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001981583617.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-iothub/public_sys-resources/notice_3.0-zh-cn.png)
   - 告警名称、级别和维度组合起来共同标识一条AOM（应用运维管理）告警，恢复的告警和上报的告警需要保持同一告警属性，否则恢复告警失败。
   
   - 设备状态监控有流控限制，监控设备量过多会触发流控导致设备离线告警无法上报的情况，详细请参考[使用限制](https://support.huaweicloud.com/productdesc-iothub/iot_04_0010.html)。
    
   
   
 
 #### 配置消息通知服务
在消息通知服务中创建主题并添加订阅，供应用运维管理服务调用以发送邮件或短信。
1. 登录华为云官方网站，访问[消息通知服务](https://www.huaweicloud.com/product/smn.html)。
2. 单击"立即使用"进入消息通知服务控制台。若您未开通消息通知服务，请先开通服务。
3. 进入"主题管理 \> 主题"页面，单击"创建主题"。
4. 输入主题名称，如"Test_1"，单击"确定"。
   
   图6创建主题-SMN   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001769654500.png "点击放大")
   
   
5. 进入"主题管理 \> 订阅"页面，单击"添加订阅"。
6. 填写订阅信息。填写完成后单击"确定"。 
   图7添加订阅-SMN   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001816402429.png "点击放大")
   表4添加订阅参数填写说明 
   | 参数名称 | 说明                                                                                                                                                                                                                                                                                                                                |
   |:---|:---|
   | 主题名称    | 选择[4]创建的主题。                                                                                                                                                                                                                                                                        |
   | 协议     | - 若需要发送邮件通知，选择"邮件"。  - 若需要发送短信通知，选择"短信"。                                                                                           |
   | 订阅终端   | - 若协议为"邮件"，填写接收通知邮件的邮箱地址；  - 若协议为"短信"，输入接收短信通知的手机号码。   需要添加多个终端时，每个终端地址占1行，最多填写10行。 |
      
   
   
 
 #### 配置应用运维管理服务
在应用运维管理服务中创建告警规则和告警行动规则，当设备接入服务满足条件上报告警后，对上报告警进行处理并发送邮件或短信。
1. 登录华为云官方网站，访问[应用运维管理服务](https://www.huaweicloud.com/product/aom.html)。
2. 单击"立即使用"进入应用运维管理服务控制台。若您未开通应用运维管理服务，请先开通服务。
3. 进入"告警 \> 告警行动规则"页面，单击"创建告警行动规则"。
4. 输入告警行动规则名称，如"Test_1"，主题选择[配置消息通知服务]中创建的主题"Test_1"，单击"确定"。
   
   图8创建行动规则-AOM   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001770367166.png "点击放大")
   
   
5. 进入"告警 \> 告警规则"页面，单击"添加告警"。
6. 输入规则名称，如"Gateway_Status_Change_Alarm_Rule"，选择"事件告警规则 \> 自定义事件"，告警来源选择"IoTDA"，监控对象选择自定义属性"event_name=网关状态变更"（"="后面内容为告警名称），触发策略选择"立即触发"，告警方式选择直接告警，行动规则选择[4]中创建的行动规则，单击右下角"立即创建"。
   
   图9创建告警规则-AOM   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001817058049.png "点击放大")
   
   
 
#### 验证操作
- 您可以使用配置设备接入服务时注册的真实设备接入平台。
- 您也可以使用模拟器模拟设备上下线，操作方法请参考[在线开发MQTT协议的模拟智慧路灯](https://support.huaweicloud.com/bestpractice-iothub/iot_bp_00016.html)。
期望结果：
1. 设备离线持续时长达到5分钟后：
   - 在左侧导航栏选择"监控运维 \> 当前告警"，单击"前往AOM"，跳转至应用运维管理服务，有一条名称为"网关状态变更"的重要告警。
     图10当前告警-前往Aom   
     ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001959865038.png "点击放大") 
   
   - 若在应用运维管理服务配置了告警规则和邮件通知告警行动规则，接受订阅的邮箱会收到一封通知网关离线的邮件。
   
   - 若在应用运维管理服务配置了告警规则和短信通知告警行动规则，接受订阅的手机会收到一条通知网关离线的短信。
    
2. 设备上线持续时长达到1分钟后：
   - 该设备的"网关状态变更"重要告警恢复，可在历史告警中查看。
   
   - 若在应用运维管理服务配置了告警规则和邮件通知告警行动规则，接受订阅的邮箱会收到一封网关离线恢复的邮件。
   
   - 若在应用运维管理服务配置了告警规则和短信通知告警行动规则，接受订阅的手机会收到一条网关离线恢复的短信。
    
 
