Acrel IoT Docs Help

事件报警

Topic

  • 上行: notify/dev/{productKey}/{sn}

  • 下行: notify/server/{productKey}/{sn}

  • QoS: 1

method

说明

event

设备上传事件-新版

notice

设备上传事件-旧版

alert

设备/网关报警-新版

alarm / gwalarm

设备/网关报警-旧版

alarm_reset / gwalarm_reset

清除设备报警状态

设备上传事件event

event改为将事件信息保存在events属性中,结构为数组,数组元素的内容根据具体业务确定。

{ "msgid": 567, "method": "event", "sn": "123456", "timestamp": 1638869890, "payload": { "events": [ { "addr": "a123", "endpoint": "METER", "code": "START_RUNNING", // 事件相关的其他属性 ... } ] } }

参数

说明

payload.events

事件信息,数组。

payload.events[i].addr

网关SN / 仪表SN / 仪表addr

payload.events[i].endpoint

事件发生位置,METER-仪表 / GATEWAY-网关,无endpoint属性时,平台默认为METER

payload.events[i].code

事件编码

设备上传事件notice

当需要从设备端发起业务流程、事件时,可以通过设备上传事件到中台,中台再将其转发到应用软件中。例如:充电桩完成充电后,发出结束指令,触发充电桩平台的结算逻辑。

notify_notice

1.设备使用Topic notify/dev/{productKey}/{sn}发出事件消息, methodnotice ,消息格式如下:

{ "msgid": 567, "method": "notice", "sn": "123456", "timestamp": 1638869890, "payload": { "sn": "567890", "noticeType": [ "SOE", "START_CHARGING" ], "SOE": { // 内部属性取决于业务场景 }, "START_CHARGING": { // 内部属性取决于业务场景 } } }

参数

说明

payload

设备上报自身属性,其中的属性属于业务层协议的范畴。

2.中台使用Topic notify/dev/{productKey}/{sn}进行响应, methodnotice

{ "msgid": 567, "method": "notice", "sn": "123456", "res": 1, "timestamp": 1638869990 }

3.用户可以在中台配置数据流转,将事件推送到应用软件,触发业务流程。

设备报警alert

新增了 method: "alert",将所有报警信息储存在固定的alerts属性中,结构为JSON数组。

同时,使用报警编码code,每个code代表一个报警,报警对应的等级、分类等信息都保存在中台数据库中,设备只需要上报编码即可。

复位编码 (见AlarmCode中的电参量分组和复位说明

{ "msgid": 568, "timestamp": 1638869890, "sn": "1234567890123", "method": "alert", "payload": { "alerts": [ // 遥测报警格式 { "addr": "a123", "endpoint": "METER", "code": "UaHIGH1", "settingValue": "242", "currentValue": "245.988", "description": "A相电压越限" }, // 遥信报警格式 { "addr": "a123", "endpoint": "METER", "code": "T16FauSta_ALERT", // 为了保持数据结构的一致性,遥测也上传settingValue和currentValue "settingValue": "0", "currentValue": "0", "description": { "en_US": "T16 broken line", "zh_CN": "温度16断线" } } ] } }

参数

说明

payload.alerts

报警信息,数组。

payload.alerts[i].addr

网关SN / 仪表SN / 仪表addr

payload.alerts[i].endpoint

报警位置,METER-仪表 / GATEWAY-网关,无endpoint属性时,平台默认为METER

payload.alerts[i].code

报警编码,每种报警场景对应唯一的报警编码AlertCode,需要在报警编码表中查询相应的编码
详见下方AlertCode说明。

payload.alerts[i].settingValue

设置的报警值,值支持对象,例如: { "Ua":"220.0", "Ub":"220.1", "Uc":"220.2" }

payload.alerts[i].currentValue

当前值,值支持对象,例如: { "Ua":"220.0", "Ub":"220.1", "Uc":"220.2" }

payload.alerts[i].description

报警描述信息,值支持对象,例如: {"en_US": "Phase A overvoltage warning", "zh_CN": "A相过压预警"} ,当标准编码表中无法找到code中的报警码时,会根据此属性生成记录

AlertCode

AlertCode标准编码表中保存所有报警编码,如果需要新增标准编码,请联系中台开发人员。

如果需要使用标准编码表之外的报警编码,当复位时需要上报一条 code="RESET" 来复位

AlertCode基本结构如下, 每个电参量可以包含多个报警编码和1个复位编码

例如,param=Ua可以包含UaHigh1、UaHigh2、UaLow1、UaLow2这4个报警编码,以及唯一的复位编码UaReset,在设备内设置报警时,可以按照如下规则:

  • UaHIGH2: Ua > 240,高高限

  • UaHIGH1: Ua > 230,高限

  • UaLOW1: Ua < 210,低限

  • UaLOW2: Ub > 200,低低限

  • UaRESET: 210 <= Ua <= 230,正常范围

当出现报警时:

  • 当Ua超过230时,上报UaHIGH1;

  • 超过240时,上报UaHIGH2;

  • 回落到238时,上报UaHIGH1,注意此处不需要上报UaRESET

  • 恢复到230以下时,上报UaRESET进行复位

报警编码

电参量

需要复位

是复位编码

说明

UaHIGH1

Ua

高压越限

UaLOW1

Ua

低压越限

UaRESET

Ua

电压复位

T16FauSta_ALERT

T16FauSta

温度16断线

T16FauSta_RESET

T16FauSta

温度16断线复位

OPEN_DOOR

OPEN_DOOR

开门

CLOSE_DOOR

CLOSE_DOOR

关门

  • 报警编码

    由中台统一管理,每个报警编码对应的报警含义全局唯一。

  • 电参量

    表示报警编码对应的是哪个遥测/遥信量,即对报警编码进行了分组,每个遥测/遥信量可以对应多个报警编码和一个复位编码。

  • 需要复位

    是否需要复位,为否时平台只需要生成报警记录,不需要变更设备的报警状态

  • 是复位编码

    是否为复位编码,每一个电参量对应的一组报警编码中,只有一个复位编码

设备报警alarm

当需要在近设备端进行报警,或者应用软件中不具备报警功能时,可以通过中台进行报警。

notify_alarm

1.设备使用Topic notify/dev/{productKey}/{sn}发出报警消息, methodalarmgwalarm ,使用场景如下:

  • 网关:自身报警使用gwalarm ,其下属子设备报警使用alarm

  • 带通讯功能的设备:网关层报警使用gwalarm ,业务子模块报警使用alarm

消息格式如下:

// 网关或设备的网关层报警 { "msgid": 568, "method": "gwalarm", "timestamp": 1638869890, "sn": "1234567890123", "payload": { "sn": "1234567890123", "alarmType": [ "UaHIGH", "DISWITCH" ], // 遥测 "UaHIGH": { // 电参量 "id": "Ua", // HIGH-高限 / LOW-低限 / EQUAL-等于 / NOTEQUAL-不等于 / CHANGE-数值改变 / 复位-RESET "alarmType": "HIGH", // 高限、高高限、低限、低低限的阈值等级 "level": "1", // 当前值,值支持对象,例如:{ "Ua":"220.0", "Ub":"220.1", "Uc":"220.2" } "currentValue": "245.988", // 设置的报警值 "settingValue": "242" }, // 遥信 "DISWITCH": { "id": "DI", // SWITCH-状态变更 "alarmType": "SWITCH", // 1-开 / 0-关 "currentValue": "1" } } } // 子设备或设备的业务子模块报警 { "msgid": 568, "method": "alarm", "timestamp": 1638869890, "sn": "1234567890123", "payload": { "sn": "54321", "alarmType": [ "UaHIGH", "DISWITCH" ], // 遥测 "UaHIGH": { // 电参量 "id": "Ua", // HIGH-高限 / LOW-低限 / EQUAL-等于 / NOTEQUAL-不等于 / CHANGE-数值改变 / 复位-RESET "alarmType": "HIGH", // 高限、高高限、低限、低低限的阈值等级 "level": "1", // 当前值,如果当前值包含多个,可以采用对象方式传递,例如:{ "Ua":"245.998", "Ub":"220.0", "Uc":"220.0" } "currentValue": "245.988", // 设置的报警值 "settingValue": "242" }, // 遥信 "DISWITCH": { "id": "DI", // SWITCH-状态变更 "alarmType": "SWITCH", // 1-开 / 0-关 "currentValue": "1" } } }

参数

说明

payload

设备上传报警相关的信息,其中有部分属性属于保留字:
sn - 如果是网关或者设备的网关层报警,则为网关或设备的sn,与payload外的sn属性一致
alarmType - 报警的索引信息,表示此报文中包含哪几种报警场景。其中的每个元素,在下方必须有一个同名key,
具体的报警内容中,
id - 报警的遥测/遥信,用来对报警状态进行分组,同一个遥测/遥信同时只能有一种报警状态,以最后上报的一条报警消息中的alarmType和level为准;
alarmType - 表示报警类型,包括遥测高限HIGH、遥测低限LOW、遥测复位RESET、遥信状态变更SWITCH。 其中,RESET仅用于遥测报警,并且不区分报警等级level,表示将id中声明的电参量的报警状态清除;level - 表示阈值等级,仅用于遥测报警,例如:1表示高限,2表示高高限等,RESET时不区分等级。
currentValue - 报警的实际值,当遥信报警时,1表示报警,0表示取消报警,而不采用RESET取消报警。
settingValue - 设置的报警阈值,仅用于遥测报警。
示例中,可以看到UaDI这两个报警,分别示例了遥测和遥信两种类型。

2.中台使用Topic notify/dev/{productKey}/{sn}进行响应, methodalarmgwalarm

{ "msgid": 568, "method": "alarm", "sn": "1234567890123", "res": 1, "timestamp": 1638869990 }

3.中台会将设备投影中的设备状态改为报警态。用户可以在中台配置报警策略来通知相应的人员,也可以通过配置数据流转,将报警消息推送到应用软件,触发业务层的报警流程。

报警分级示例

  • 当过压存在2个报警等级(level1为预警、level2为报警)时,发生预警时,设备上报:

{ "msgid": 568, "method": "alarm", "timestamp": 1638869890, "sn": "1234567890123", "payload": { "sn": "54321", "alarmType": [ "UaHIGH1" ], "UHIGH1": { // 注意此处的U,表示这个遥测量发生预警 "id": "U", "alarmType": "HIGH", "level": "1", "currentValue": "241.988", "settingValue": "241" } } }
  • 接下来,发生level2报警时,设备上报:

{ "msgid": 568, "method": "alarm", "timestamp": 1638869890, "sn": "1234567890123", "payload": { "sn": "54321", "alarmType": [ "UaHIGH2" ], "UHIGH2": { // 仍旧是遥测量U发生报警,此时中台会用level2覆盖之前的level1报警等级 "id": "U", "alarmType": "HIGH", "level": "2", "currentValue": "245.988", "settingValue": "243" } } }
  • 然后电压降下来,需要恢复为预警状态,设备上报:

{ "msgid": 568, "method": "alarm", "timestamp": 1638869890, "sn": "1234567890123", "payload": { "sn": "54321", "alarmType": [ "UaHIGH1" ], "UHIGH1": { // 此时遥测量U的报警等级会被覆盖为level1 "id": "U", "alarmType": "HIGH", "level": "1", "currentValue": "241.988", "settingValue": "241" } } } // 下面这个是**错误**的报文 { "msgid": 568, "method": "alarm", "timestamp": 1638869890, "sn": "1234567890123", "payload": { "sn": "54321", "alarmType": [ "UaHIGH1", "UHIGH2" ], "UHIGH1": { "id": "U", "alarmType": "HIGH", "level": "1", "currentValue": "241.988", "settingValue": "241" }, // 下面的内容是不该传的,因为同一个遥测量的报警状态是互相覆盖的,以最后一次上报的状态为准; // 同一条报文中,不应该存在2个相同的id,这会导致后面的报警状态把前面的覆盖掉, // 中台收到下面这条遥测量U的RESET报文后,会将U的报警状态取消掉,回归正常状态, // 上面的UHIGH1就被失效了,遥测量U没能被置为预警状态。 "UHIGH2": { "id": "U", "alarmType": "RESET", "level": "2" } } }

报警状态保存在多个寄存器的示例

一些设备的level1预警和level2报警状态被保存在不同寄存器中,网关抄表时,无法将多个寄存器中的值合并为一个遥测量进行报警,可以通过下列方式进行上报。

  • 设备预警时,发出报文:

{ "msgid": 568, "method": "alarm", "timestamp": 1638869890, "sn": "1234567890123", "payload": { "sn": "54321", "alarmType": [ "UaHIGH1" ], "UHIGH1": { // 注意此处的U1,表示这个遥测量发生预警 "id": "U1", "alarmType": "HIGH", "level": "1", "currentValue": "241.988", "settingValue": "241" } } }
  • 设备上升为报警状态时,发出报文:

{ "msgid": 568, "method": "alarm", "timestamp": 1638869890, "sn": "1234567890123", "payload": { "sn": "54321", "alarmType": [ "UaHIGH1", "UHIGH2" ], // 此时需要将预警位置为RESET "UHIGH1": { "id": "U1", "alarmType": "RESET" }, // 然后上报U2报警,实际上是将U1和U2分为了2个遥测量,分别进行管理 "UHIGH2": { "id": "U2", "alarmType": "HIGH", "level": "2", "currentValue": "245.988", "settingValue": "243" } } }
  • 当设备下降为预警状态时,发出报文:

{ "msgid": 568, "method": "alarm", "timestamp": 1638869890, "sn": "1234567890123", "payload": { "sn": "54321", "alarmType": [ "UaHIGH1", "UHIGH2" ], // 再次上报U1预警 "UHIGH1": { "id": "U1", "alarmType": "HIGH", "level": "1", "currentValue": "241.988", "settingValue": "241" }, // 需要重置U2报警状态,此时2个id不同,所以不会发生覆盖的情况 "UHIGH2": { "id": "U2", "alarmType": "RESET" } } }
  • 本质上就是将遥测量进行了拆分,从而与寄存器中保存的状态位进行对应,以方便网关的抄表和上报。

清除设备报警状态reset

当网关/设备重启后,可能需要重置所有报警状态,为了简化此过程,所以设计了的重置指令。

1.设备使用Topic notify/dev/{productKey}/{sn}发出重置报警消息, methodalarm_resetgwalarm_reset

消息格式如下:

// 网关或设备的网关层报警 { "msgid": 568, "method": "gwalarm_reset", "timestamp": 1638869890, "sn": "1234567890123", "payload": { } } // 子设备或设备的业务子模块报警 { "msgid": 568, "method": "alarm_reset", "timestamp": 1638869890, "sn": "1234567890123", "payload": { // 子设备、仪表的sn/addr "addr": "1_1" } }

2.中台使用Topic notify/dev/{productKey}/{sn}进行响应, methodalarm_resetgwalarm_reset

Last modified: 18 四月 2025