机房自动化监控手把手分享给你 - 番外1:声光报警实现

本文主要是介绍机房自动化监控手把手分享给你 - 番外1:声光报警实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文章是一个机房自动化监控实际项目系列文章的番外篇,有个朋友问能否补充一个声光报警的实现,我仔细一想:虽然我不在这个项目中实现声光报警,但我在其他项目用过,使用的设备器件成本很低。那就以这个项目为背景,添加这个声光报警功能吧。

如果你不了解这个系列的文章,直接看这篇可能会有点迷糊。这个系列文章非常详细,真的可以说是手把手拉着你在现场做实际的项目一样。如果你还不了解前面的内容,请参考

机房自动化监控手把手分享给你 - 0 总体说明

机房自动化监控手把手分享给你 - 1 项目前期准备

机房自动化监控手把手分享给你 - 2 温湿度传感器的对接

机房自动化监控手把手分享给你 - 3 漏水传感器的对接 

机房自动化监控手把手分享给你 - 4 空调设备对接

机房自动化监控手把手分享给你 - 5 电流监测模块对接

机房自动化监控手把手分享给你 - 6 UPS设备对接

机房自动化监控手把手分享给你 - 7 监控画面制作

机房自动化监控手把手分享给你 - 8 短信报警实现

机房自动化监控手把手分享给你 - 9 程序部署

1 声光报警硬件准备

我们的机房声光报警一般情况下,不需要使用影视剧里面那种夸张的效果:声音巨响、还旋转着散发着红光,然后巨大的基地里面上百号人都可以听到,紧张地到处奔跑!当然,你也可以给你的用户安装这样的玩意——可以保证,在办公室你会被用户k死。

我推荐一款声光报警,如下:

这种声光报警器可以安装在监控箱上,内部只需要给它供电24V直流电就行。很明显,我们需要有个可控制的开关给这个供电控制通断。因此,我们还需要一个开关量输出模块,并且这个模块支持Modbus RTU协议,方便接入监控箱的串口服务器的RS485接口中。

我在网上给你随便找了一个开关量输入输出模块,因为我们只需要控制一路,所以给你选择体积最小的。

那么接下来我们就可以把这个接入到之前项目的电路中了。

2 接入电路

电路图非常简单,如下图:

此电路我们把开关量模块和之前的温湿度、漏水传感器都接在同一个RS485总线上, 并且给开关量模块使用监控箱中的24V直流电。

此模块因为是2路继电器输出,每个输出有一个常开、常闭和一个公共端,我们把24V+接入OUT1的公共口,常开口接声光报警器的一个输入,另一个输入接24V-。这样,只要开关量模块OUT1口有输出,内部继电器吸合,常开口就会闭合,声光报警器就接通24V电源了——也就能发出声光了。

接下来,我们就在之前实际项目软件配置的基础上,加入这个些设备数据。

3 软件配置

假设这个模块配置好的地址是21,RS485接口是(9600 N 8 1)——和我们之前项目总线参数一样,OUT1,OUT2输出对应modbus地址是 00001,00002。

3.1 配置报警输出数据标签

我们打开项目管理界面,在通道ch1下鼠标右键,选择“New Device",在弹出的编辑对话框中填写如下:

添加这个开关量模块对应的设备,然后选中这个swio节点,右边选择"Properties"属性选项卡,修改Modbus Device Address=21。

 接下来,点击"[Tags]选项卡",在里面添加开关量读写数据标签:

这个设备目前就一个声光报警数据标签,其他都不需要配置了。这样就完成了设备接入和标签数据的定义。 

3.2 运行测试

此时,就可以给设备供电,启动项目,然后在标签列表的”Write"列,写入1,点击右边的写入按钮,就可以测试开关量模块Out1是否吸合,声光报警器是否发声。

写入0,就关闭声光报警。

 

由于我们没有实际的设备,以上就没有具体显示数据了。 

3.3 使用IOT-Tree的任务(Task)触发声光输出

此声光报警可以使用之前报警定义作输出,但考虑到之前项目并没有用的任务控制功能,我们此次就以这个例子为契机,使用IOT-Tree Server提供的任务功能,做声光报警输出。

IOT-Tree中的任务是定时运行的JS脚本,我们可以设置任务(Task)-活动(Action)。每个Action含重复运行的JS脚本。在项目启动时,任务也会启动,里面的脚本会被定时运行。任务可以让我们对被监控现场,实现复杂的控制功能。

我们本次控制逻辑非常简单:当发现UPS非online状态时,则输出上面定义的开关量信号=true,否则就关闭。

3.3.1 新建任务和活动

我们在项目中间组织树上方,点击"Tasks"图标,右边选项卡就多了此项目的任务管理界面。

点击"+Add Task",在弹出的对话框口填写如下信息: 

除了任务名称和标题,我们设置Interval MS=5000,也即是任务每间隔5000毫秒运行一次。点击Ok之后,在此任务右边,点击“+” 添加任务内部的活动:

这个活动在任务中被任务调度,一个任务可以有多个活动,并且任务内部的活动共享任务间隔运行的线程。每个活动有自己的JS控制脚本。点击Ok之后,可以看到活动有 init script,run in loop script,end script

3.3.2 编写任务JS脚本 

其中,init script表示任务启动时,会被调用一次,你可以在里面定义JS变量或初始化工作,方便后续使用。run in loop script则是任务运行中,会被定时调用的JS脚本。

我们点击此按钮,弹出JS编辑窗口,左边有以项目$prj为根的js运行上下文。我们写入一段如下代码(如果对成员关系不了解,可以参考左边的全局成员已经内部的树形内容):

let ups_online = upseth.apc9631.ups_st_online ;
let av_out = ch1.swio.aud_vis ;if(ups_online._pv==false)
{// trigger av outif(av_out._pv==false)av_out._pv = true;
}
else
{ // no alertif(av_out._pv==true)av_out._pv = false;
}

这段代码非常简单,首先判断upseth.apc9631.ups_st_online这个数据标签的值,是否为false。如果==false,则表明UPS非online状态,需要报警。此时判断ch1.swio.aud_vis这个标签值是否在报警状态,如果不是则给这个标签写入true(这个会触发IOT-Tree到开关量模块的写指令)。

否则,如果需要解除报警,则写入false。为了避免每次都有写指令产生,需要对当前值进行判断。

保存之后,我们就可以启动项目进行测试了。你可以尝试手工对UPS切换by pass状态,这样就可以查看运行效果。

4 总结

本章是一个之前项目系列的补充文档。但里面有着你及可能遇到的开关量输出和任务控制功能。是对之前系列文章的一个很好的补充。 

这篇关于机房自动化监控手把手分享给你 - 番外1:声光报警实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/585006

相关文章

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u