教程:设置根据设备状态触发的告警¶
在某些情况下,EnOS 需要在设备处于某种状态时发出告警。
例如,在使用 EnOS 告警服务监控某个智能楼宇的空调设备时,设置告警的触发规则为:当该空调设备离线时,触发“空调离线”告警。当设备再次上线时,该告警解除。
EnOS 目前支持以下基于以下状态的设备告警:
离线
根据设备状态触发的告警与告警屏蔽、告警延时¶
你可以对根据设备状态触发的告警设置告警屏蔽:
当该状态告警触发时,告警相关设备在资产树上的子节点的设备的告警都会被屏蔽;
当你对状态告警相关设备的上级节点的设备设置了告警屏蔽且上级节点告警触发时,该设备的状态告警触发后会被屏蔽。
你可以对根据设备状态触发的告警设置告警延时。例如,你可以设置告警规则:基于某个模型的设备,离线5分钟仍未上线,方触发“设备离线”告警。
任务描述¶
本文以一个智能楼宇场景,介绍如何设置根据设备状态触发的告警。本教程使用了教程:为同一模型的设备设置不同阈值的告警中模拟的测量电冰箱实时电流的电流表来设置根据设备状态触发的告警。
开始前准备¶
你需要有告警服务相关操作权限,如果没有请联系组织管理员添加,参见 策略,角色,与权限。
你已经完成了教程:为同一模型的设备设置不同阈值的告警。
步骤¶
选择 告警规则,创建如下的新告警规则。创建告警规则的操作,参见 创建告警规则。
此时告警被设定为当电流表设备离线时,告警立即触发。
复制教程:为同一模型的设备设置不同阈值的告警的示例代码 fridgeMQTT 到你的IDE中
运行 fridgeMQTT 。此时在 设备管理 > 设备资产 中,可以观察到 冰箱电表 设备已上线。
此时,停止运行 fridgeMQTT 代码块。
结果¶
进入 告警服务 > 告警记录,你就能看到已触发的状态告警,如下图所示:
如果此时你再次运行 fridgeMQTT 代码块,该告警就会解除,状态 将改成 历史。
对API的影响¶
以下 API 的请求参数 (Body) 中,增加了一个可选参数 deviceStatus
,可用值为 offline
:
Create Alert Rule
Update Alert Rule
Search Active Alerts
Search History Alerts
Search Alert Rule
用以实现以下目的:
创建或更新告警规则,使告警根据状态触发
返回基于设备状态触发的当前告警记录或历史告警记录
Java SDK调用示例¶
使用 Search Active Alerts
API 来搜索一个基于设备状态的当前告警:
import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
public class searchActiveAlert {
public static void main(String[] args) {
String accessKey = "f056e1ba-5d3b-49af-8cbf-08f2fad75218";
String secretKey = "5f0ff5d9-d38d-4381-ae2c-5d68c8066ffd";
String data = "{\n" +
"\t\"deviceStatus\":\"offline\",\n" +
"}";
String response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey))
.url("https://beta-apim-cn4.eniot.io/event-service/v2.1/active-alerts?action=search&orgId=o15434988531231")
.method("POST")
.requestBody(data)
.sync();
System.out.println(response);
}
}
返回的示例:
{
"code":0,
"msg":"OK",
"requestId":"9d99634e-b2b5-4f45-9071-d691dd71073d",
"data":[
{
"eventId":"201912020a1487e26e2d84601d24f1c5783634d8",
"orgId":"o15434988531231",
"assetId":"I7Vp9nRm",
"modelId":"current_meter",
"modelIdPath":"/current_meter",
"measurepointId":null,
"deviceStatus":"offline",
"hitRuleId":"CurrentMeterAlertState",
"value":"1",
"occurTime":1575277201254,
"localOccurTime":"2019-12-02 17:00:01",
"createTime":1575277201388,
"updateTime":1575277201388,
"severityId":"MeterAlert001",
"severityDesc":{
"defaultValue":"Warning: Current Over Threshold",
"i18nValue":{
"en_US":"",
"zh_CN":""
}
},
"typeId":"alertType003",
"typeDesc":{
"defaultValue":"This is a serious warning",
"i18nValue":{
}
},
"subTypeId":null,
"subTypeDesc":null,
"contentId":"MeterAlert003",
"contentDesc":{
"defaultValue":"设备已离线",
"i18nValue":{
"en_US":"Device offline",
"zh_CN":"设备已离线"
}
},
"eventType":1,
"tag":{
},
"ruleDesc":null,
"assetPath":null,
"maskedBy":null
}
]
}