物解析的告警处理

物解析解析后的数据格式样例为:

{
    "bdModbusVer": 1,
    "gatewayid": "4f92b501-b044-4f6c-8d1f-1efc79a75ba1",
    "trantable": "fa17deca-beb6-43e4-8a3e-6f18e6ee4a62",
    "modbus": {
        "request": {
            "functioncode": 3,
            "slaveid": 1,
            "startAddr": 0,
            "length": 2
        },
        "response": "00010002",
        "parsedResponse": [
            {
                "desc": "Temperature",
                "type": "INT",
                "unit": "",
                "value": "1",
                "errno": 0
            },
            {
                "desc": "Speed",
                "type": "INT",
                "unit": "",
                "value": "2",
                "errno": 0
            }
        ],
        "error": null
    },
    "timestamp": "2017-06-08 09:34:36+0800",
    "metrics": {
        " Temperature ": 1,
        "Speed": 2
    },
    "misc": {
        "imei": "abcdefg",
        "model": "2017"
    }
}
  1. 在物解析中配置将消息转发至物接入主题

    选择“产品服务>物解析 IoT Parser>解析项目”,进入“解析项目”操作界面。

    此时目的地主题为空,点击“编辑”,对目的地主题进行编辑,告警服务通知中主题与该目的地主题应保持一致。

  2. 告警服务通知中基于物解析的实例和主题创建通知,异常条件填写:metrics.Temperature > 60。

  3. 到短信SMS服务中创建签名和模板

    创建签名

    创建模板

    如果希望发送短信的内容是:异常!当前温度:50度,超过设定的告警温度,请及时处理。

    可以创建如下模板内容,${key}可以作为自定义变量

  4. 填写通知策略

    每当告警触发、更新、恢复,系统会发送一条中间消息,消息格式中既包含当前的告警状态,也包含触发该告警的信息。

    这条中间消息的格式如下:

    其中lastMsg的字段中,包含了触发该告警的MQTT消息,如果是物解析发送的数据,则lastMsg中是以下格式(省略了request等冗余信息)。
    如果是自己上传的MQTT消息,lastMsg字段中的数据就是通过MQTT发送的消息中的数据。

    如下,可以通过lastMsg.metrics.temperature拿到该条信息的温度值,stateDesc可以拿到当前状态信息。

{
        "uuid": "1234b503-b743-4f6c-8d1f-257979a751b4",
        "name": "风机工作温度监控",
        "desc": "监控第2厂区2楼风机工作温度不超过60度",
        "endpointName": "myendpoint",
        "topic": "sensor/floor2",
        "select": "*",
        "condition": "temperature > 60",
        "alarmState": 1 / 0 , 
        "stateDesc": “异常” / “恢复正常",
        "notifyType": "ALARM"/“REFERSH”/“RECOVER”,
        "startTime": 1497244107,
        "refreshTime": 1497244107,
        "recoverTime": 1497244107,
        "lastMsg": {
            "timestamp": "2017-06-0809: 34: 36+0800",
            "metrics": {
                "Temperature": 1,
                "Speed": 2
            }
        }
    }

【模板变量】的输入框中输入相应的字段来替代在第三步中填写的自定义变量。用AS命令,将原始消息里的信息与短信模板中的自定义变量联系起来,如

stateDesc AS state, lastMsg.metrics.temperature AS temp

保存成功后,当触发告警条件,相应手机号就会收到短信。