用户可以指定场景执行时输出多个设备的具体状态,还可以设定本场景在执行时要满足额外的条件。在场景执行之前先由条件解析器判当前系统中某些设备属性值的组合是否允许运行后续操作。满足条件和不满足条件可以执行不同的设备操作。条件表达式是由用户编写与修改,是实现自动化和解决须求多样性的核心部分。
1、条件表达式说明
表达式结果只能是真或假
真:执行本场景
假:执行FALSE指定的另一场景,FALSE可以为空。
2、条件表配置格式
{"THEN": {"FALSE": "不成时的场景","BOOL": "AND,OR","IFS": ["[object] [param] [condition] [target]","[object] [param] [condition] [target]","[object] [param] [condition] [target]","...第n个条件..."]}}
1、字段说明
FALSE : 当本条件不成立时而跳转执行的另一场景的名字
BOOL : 条件列表的逻辑运算符号
- AND 并且运算,IFS里所有条件都成立,结果才为真。否则为假。
- OR 或者运算,IFS里只要一个条件成立,结果就是真。否则为假。
- 无BOOL时默认是AND运算。
IFS : 具体条件列表
IFS里的条件表达式格式
[object] [param] [condition] [target]
2、object对象及属性
支持的条件集合
{"THEN": {"IFS": ["LSO/value","RELAY/value","DIM/value","TPAN/POWER","TPAN/MODE","TPAN/SPEED","TPAN/STEMP","TPAN/TMP","TIME","CNT/sec","... ..."]}}
3、param属性的附加参数
不同的[object]对就有不同的param取值
4、condition条件判断符号
= 相等于 target 值
!= 不等于 target 值
< 小于 target 值
> 大于 target 值
3、条件具体意义
3、1 判断LSO某个回路输出值
[target] 取 OFF ON
“LSO/value 3001 = OFF”
“LSO/value 3001 != ON”
3、2 判断RELAY某个回路输出值
[target] 取 OFF ON
“RELAY/value 4001 = OFF”
“RELAY/value 4001 != ON”
3、3 判断DIM某个回路输出值
[target] 取 0- 100
“DIM/value 8001 = 58”
“DIM/value 8001 != 67”
“DIM/value 8001 < 58”
“DIM/value 8001 > 93”
3、4 判断TPAN温控器的开关机状态
[target] 取 OFF ON
“TPAN/POWER 7000 = ON”
“TPAN/POWER 7000 = OFF”
3、5 判断TPAN温控器的工作模式
[target] 取 CLOSE(停止) HOT(制热) COLD(制冷) FAN(送风)
“TPAN/MODE 7000 = HOT”
“TPAN/MODE 7000 = COLD”
3、6 判断TPAN温控器的风速
[target] 取 CLOSE LOW MIDDLE HIGH
“TPAN/SPEED 7000 = LOW”
“TPAN/SPEED 7000 = CLOSE”
3、7 判断TPAN温控器的设置温度
[target] 取 16-32
“TPAN/STMP 7000 = 19”
“TPAN/STMP 7000 < 28”
3、8 判断TPAN温控器的真实室内温度
[target] 取 0-55
“TPAN/TMP 7000 = 18”
“TPAN/TMP 7000 > 33”
3、9 判断TIME系统时间之月份
[target] 取 1-12
“TIME month > 3”
“TIME month < 9”
“TIME month = 4”
3、10 判断TIME系统时间之日
[target] 取 1-31
“TIME date > 3”
“TIME date < 9”
“TIME date = 4”
3、11 判断TIME系统时间之周几
[target] 取 1-7
“TIME week > 3”
“TIME week < 9”
“TIME week = 4”
3、12 判断TIME系统时间之小时
[target] 取 0-23
“TIME hour > 3”
“TIME hour < 9”
“TIME hour = 4”
3、13 判断TIME系统时间之分钟
[target] 取 1-12
“TIME min > 10”
“TIME min < 56”
“TIME min = 0”
3、14 判断TIME系统时间之秒
[target] 取 0-59
“TIME sec > 3”
“TIME sec < 9”
“TIME sec = 4”
3、15 判断CNT延时器的计数值sec秒
[target] 取 0-65535
“CNT/sec cntName > 3”
“CNT/sec cntName < 9”
“CNT/sec cntName = 4”
4、场景添加条件的范例
IO的ID是30,第1路输出表示卡状态。
门磁开场景如无卡则亮廊灯并计时30秒后关闭,
门磁开时已处于有卡状态则不须要计时30。
方式(1) 场景文件编辑
THEN节点就是条件表大式。
{"NAME": "门磁开","THEN":{"FALSE":"有人门磁开""IFS":["AND LSO/value 3001 = OFF"]},"OUTS": [{"value": "ON","id": 4001}],"CNTS": [{"sec": 30,"run": 1,"name": "延时关廊灯"}]}
如果条件不满足,则执行场景”有人门磁开”——另配置为只开灯,不操作延时器。
方式(2) 软件图形化编辑
“有人门磁开” 场景
