1.3.5 煤气报警
更新时间:2019-06-10 16:32:35
目标
当前模板可以让您学习如何响应设备推送的属性,把告警信息推送到钉钉群里。可以用于设备告警,提示等场景。
说明
有一系列的煤气检测器,侦听上报信息,如果上报告警信息则推送到钉钉群让维护人员前往检查。
创建产品
本次需要创建一个产品——一个煤气检测器(包含煤气数值一个浮点型数据),同时我们需要实例化3个设备。
创建一个煤气检测器产品。
添加一个煤气数值的浮点型属性。
实例化三个煤气检测器设备。
创建服务
创建一个服务。
在左侧栏节点列表中“输入”类选择“设备触发”节点,右侧栏配置项分别选择“煤气检测器”产品,创建的设备名以及选择监听“属性上报”。
添加一个“条件判断”节点,条件节点相当于一个if-else判断。并且把设备触发节点与条件节点连接起来。
在条件判断节点中,第一个选择“同时满足所有条件”,在“条件1”中第一个下拉框选择“设备触发”,在二级菜单选择“煤气数值”;判断条件选择“>”,第二个框选择“静态值”“数值”。触发煤气报警的条件我们设置为煤气上报值大于50。
从query.props.gas.value到“设备触发/煤气数值”
在之前的版本里,我们使用代码化的query/payload定义设备数值。这个版本我们提供了模板功能,设备告警模板可以让你直接选择数据源进行规定格式的告警信息配置,而无需理解query/payload等变量。如果你想变更模板内容。可以在配置方法使用“自定义”并沿用之前的变量体系。
在之前的智能家居控制案例里,我们解释过payload的作用。实际上对于第二个节点,payload和query是相同的。此时query下相当于添加了deviceContext,props等子对象。对于我们关心的设备属性来讲,它在query下面props子对象里。再往下一层则是具体的属性名。物联网平台的设备属性上报规则,属性名下还会有time时间戳的值以及属性真正的值value。因此,假设你需要动态关联某个属性(如煤气值状态gas)的动态值。需要用query.props.gas.value保证调用的数据来自触发节点。此时payload.props.gas.value与query.props.gas.value等价,但为了保证后面的逻辑一致性,建议此处用query。
在左侧节点列表的“功能”类拖入一个“钉钉机器人”节点。并与条件判断节点的上方出口(“满足条件”)进行连线。选择模板为“设备告警”模板,数据源选择“设备触发”“煤气数值”,可以选择@所有人。
钉钉机器人的Webhook填入你要推送的钉钉群的钉钉机器人Webhook。
如何获取Webhook?
钉钉机器人是钉钉群内一个自动化的消息发送工具。在一个钉钉群内打开右上角的“群设置”,可以发现以下弹窗。
点击钉钉机器人,进入机器人配置页面。
选择添加自定义机器人。
然后在完成页面可以看到webhook。整个复制下来,粘贴到输入框内。
如果是自定义模板,如何动态配置文本text?
由于监听了全部的煤气检测器,我们收到警告的时候需要知道是哪个煤气检测器报警了,因此需要接受上报的煤气检测器的DeviceName进行推送。
选择text推送类型,参数框内为一个json对象,因此调用方法要符合json的格式。我们采用了的格式,如“”,可以查看下图的完整配置方法:
- 对条件判断节点的“不满足条件”,放置一个不做任何处理的nodejs脚本占位即可
调试与验证
部署整个服务。
启动服务。然后点击调试前往虚拟设备页面。
输入一个大于50的浮点值进行测试。
可以看到群里收到了包含设备名称的告警信息。这就完成了整个链路了。
如果需要更表意化的设备名称提示(如“东区一层煤气”或“EastRoom01”)这种,可以通过脚本节点转译或者在创建设备时选择批量上传设备名称,把预设好的deviceName上传。