自动控制模块
概述
自动控制模块是服务器应用程序的附加模块,它在满足某些条件时发送命令并生成事件。该模块有助于通过用户界面实现各种控制算法并发送通知,而无需编程。使用以下命令下载模块关联。下图显示了配置模块的形式。
有关触发的触发器、发送的命令和事件的信息记录在ModAutoControl.log模块日志文件,可以使用管理员应用程序或任何文本编辑器查看。
安装
自动控制模块按照以下要求安装指示。模块安装顺序是典型的。
配置
设置模块涉及创建在满足某些条件时触发的触发器。触发器可以有不同的类型,如下所述。当触发器触发时,模块发送命令并生成与该触发器相关的事件。
要打开模块配置表单,请转至服务器 > 模块页面,选择自动控制模块模块并单击特性按钮。该模块应位于活动模块列表中。模块配置保存在ModAutoControl.xml文件。
触发器
通道数据触发
当通道值和状态与触发参数中指定的条件匹配时,将触发通道数据触发器。启动后,模块会填充满足通道过滤器的通道列表。单独检查由触发参数指定的通道的值和状态对于该列表中的每个频道。如果通道过滤器为空,则触发器适用于该输入类型的所有活动通道。
触发器具有提供延迟和重复触发器触发能力的状态。触发器状态在模块运行期间保存,并在服务器启动时加载。
多通道数据触发
如果条件必须考虑多个通道的值,则使用这种类型的触发器。如果任何指定通道的状态未定义,则认为该通道的条件不满足。触发状态由模块保存和加载。
通道数据变化触发
当指定通道的值或状态发生变化时,触发器就会触发。相应的参数旨在限制触发频率。
事件触发
如果系统中发生的事件满足指定条件,则会触发事件触发器。触发器还响应模块本身生成的事件。当触发器触发时,无法生成新事件以避免无限循环。
时间触发
时间触发器可以每天在指定时间、一周中的特定日期、一个月中的几天或特定日期触发。
命令触发
命令触发器在需要基于一个命令发送一系列命令的情况下使用起来很方便。如果触发器具有数据验证条件,则传入的命令数据将使用 UTF8 编码转换为字符串,然后根据条件进行检查。
触发器还响应模块本身发送的命令。最大递归深度限制为 10 级。
命令
下图显示了触发器触发或正常化时发送的命令的参数。命令可以发送到通道或直接发送到设备。如果向通道发送命令,将检查该命令的权限并计算输出公式。如果命令发送到设备,它将被添加到队列中以按原样发送给客户端,无需任何额外处理。向设备发送命令时,请指定命令编号或代码。
如果复制值选中复选框后,如果适用于给定的触发器类型,则将从触发触发器的通道或命令的值复制正在发送的命令的值。命令参数中指定的字符串数据可以包含变量,如下所述。
活动
下图显示了触发器触发或正常化时生成的事件的参数。
如果模块配置中事件严重性设置为默认(0),则由服务器根据通道状态分配。如果严重性不为零,则创建具有指定严重性的事件。
如果需要确认复选框未设置,但需要确认在配置数据库中设置通道状态字段,然后服务器根据状态分配事件确认标志。
这自定义文本生成的事件是静态的,没有变量支持。
变量
触发器触发时发送的命令的字符串数据可以包含变量。变量写在花括号中。
支持以下变量:
| 多变的 | 描述 |
|---|---|
| 适用于所有类型的触发器 | |
| {n} | 通道 n 的当前值,已格式化,带有尺寸。如果 n = 0,则使用触发通道(如果适用) |
| {现在} | 服务器时区的当前日期和时间 |
| {NowUtc} | 当前 UTC 日期和时间 |
| {时间} | 服务器时区的触发触发时间 |
| {时间UTC} | 触发触发时间,UTC |
| 对于通道数据的触发器 | |
| {CnlNum} | 通道数 |
| {Cnl名称} | 频道名称 |
| {对象编号} | 对象编号 |
| {对象名称} | 对象名称 |
| {DevNum} | 设备编号 |
| {开发者名称} | 设备名称 |
| {洛洛} | 低通道下限 |
| {低的} | 通道下限 |
| {高的} | 通道上限 |
| {嗨嗨} | 高高通道限制 |
| {CnlVal} | 导致触发器触发的通道值 |
| {CnlStat} | 导致触发器触发的通道状态 |
| 对于事件触发器 | |
| {EvID} | 事件ID |
| {EvTime} | 服务器时区的事件时间 |
| {EvObjNum} | 事件的对象编号 |
| {EvObj} | 事件的对象名称 |
| {EvDevNum} | 事件的设备编号 |
| {埃夫德夫} | 事件的设备名称 |
| {EvCnlNum} | 事件通道号 |
| {EvCnl} | 活动频道名称 |
| {EvText} | 显示事件的文本 |
| {EvSev} | 显示的事件严重性 |
| 对于命令触发器 | |
| {命令值} | 导致触发器触发的命令值 |
| {CmdDataStr} | 命令数据作为字符串 |
| {CmdDataHex} | 十六进制命令数据 |