【语音告警】Zabbix语音播报-报警媒介部分配置-语音报警灯|声光报警器|网络信号灯

2025-01-03

阅读说明

本文为博灵语音通知终端与报警媒介的配置,对接完成后可以实现的声光语音告警,播报效果可以参考

-博灵语音通知终端与PLC联动告警介绍

对接前需配置好通知终端的IP地址,设备参数参见

其他完整的语音播报报警联动参见博文,与声光报警灯语音告警语音播报

设备参数

旧方案联动无法在容器工作下的原因

原始文章的方案中,给内置了一个告警程序,当发生告警时执行该脚本,实现与博灵语音通知终端联动的效果。

由于很多场景下使用了容器化安装,导致脚本在容器中无法运行。

原因在于使用了 Linux发行版,该发行版基于musl库,而告警py脚本打包的可执行文件是依赖于glibc库的,通过ldd命令可以发现缺少很多符号依赖,所以无法执行,故采用新方案对接。

新方案

使用报警媒介中的,并编写 。

添加报警媒介,配置如下

Zabbix报警媒介

脚本内容如下

try {
           Zabbix.Log(4, 'Webhook script value='+value);
           params = JSON.parse(value),
           // 修改Key为报警灯的Key
           key = "1qaz2wsx"
           sign_time = parseInt(new Date().valueOf() / 1000)
           // 这里为博灵通知终端自定义Api的参数,
           // 可以参考https://www.eyegroup.cc/a4_help/md_doc/common_api.html
           sign_data = {
	            "led_style":15,  "color":"[\"#ff00ff\"]", 
	            "led_flag":"[0.03,1]",  "play_time":0,
				"text":params.msg,
				"tone":"000"
			};
           sign_data['token'] = key
           sign_data['time'] = sign_time
			keys = Object.keys(sign_data);
			keys.sort();
			sign_temp = '';
			for (var i in keys){
			    if(keys[i] == 'sign') continue;
			    if(keys[i] == 'time'){
			        sign_temp += 'time' + sign_time;
			        continue;
			    }
			    sign_temp += keys[i] + sign_data[keys[i]];
			}
			Zabbix.Log(4, 'raw str=' + sign_temp);
			Zabbix.Log(4, 'sign str=' + md5(sign_temp));
			sign_data['sign'] = md5(sign_temp);
			delete sign_data['token']
           req = new CurlHttpRequest(),
           req.AddHeader('Content-Type: application/x-www-form-urlencoded');
           resp = {};
  
           // 构造urlencode字符串,构造www-form-urlencoded body
           keys = Object.keys(sign_data);
           keys.sort();
           raw_data = ""
           for(var i in keys){
               raw_data += keys[i] + "=" + encodeURIComponent(sign_data[keys[i]]) + "&"
           }
          raw_data = raw_data.substring(0, raw_data.length - 1)
          Zabbix.Log(4, "raw data: " + raw_data)
           resp = req.Post("http://" + params.url+ "/api/api/send_msg",
               raw_data
           );
         
           if (req.Status() != 200) {
               throw 'Response code: '+req.Status();
           }
           Zabbix.Log(4, resp)
       } catch (error) {
           Zabbix.Log(4, 'Issue creation failed : '+error);
         
       }
         
       return 'OK';

之后选择 选项卡(消息模板),点击添加,添加一个模板填写对应内容,本文填写的内容如下。消息模板是通知使用的模板,本文配置中,我们只播报消息模板中消息中内容,也就是刚刚参数中的{ALERT.}。

其中的{HOST.NAME}等为宏变量。关于宏变量说明,请参考宏变量相关文档。

在这里插入图片描述

保存后,可以进行测试,url改为通知终端报警灯实际的IP地址

博灵语音通知终端Zabbix对接

测试完成后,点开Open Log可以查看日志

在这里插入图片描述

此时报警灯将会收到一个测试信息

博灵语音通知终端播报日志

测试通过后,报警媒介配置完成,其他完整的语音播报报警联动参见,与声光报警灯语音告警语音播报 补充说明

提供的代码中,的值可以根据需求自行修改,参数详见设备的说明书,可以修改报警灯样式、语音速度、音色等多种功能。

本方案仅使用了常规Api,其中的脚本内置签名计算逻辑,可以参考。

部分监控项轮询间隔太长,为了达到快速测试的效果,可以手动立刻检查某个监控项。具体操作方式为:进入监控项的配置页面,在最下方的操作按钮中,有一个 now按钮,点击即可立刻触发一次检查。见下图。

在这里插入图片描述

下一篇:声光报警器产品用户手册
上一篇:【聚焦】金点子第⑨期│小小“声光报警器”实现设备自动化
相关文章
返回顶部小火箭