Page 81 - 《软件学报》2021年第12期
P. 81
王博 等:SSRules:让智能家居自动化规则更易于编写和检查 3745
触发同一条 EE 规则的所有可能的状态转移在细粒度的状态转移图上可能对应多条边.例如 EE 规则“IF 模式.
状态 FROM {回家模式} TO {离家模式} WHILE 电扇.开关==开 THEN 电扇.开关 关闭”,该规则被触发的情
况可能是图 5 右上图中的状态转移①,也可能是状态转移②.从这一角度来说,使用较保守的事件筛选策略的优
点在于判定条件较少,运算更快(判定的是宽泛的系统抽象状态集合间的转移).
Fig.5 Relation between current event filtering strategy and state transition
图 5 当前使用的事件筛选策略与状态转移的关系
• EE 中间表示生成模块
该模块调用算法 5 生成 EE 规则.以上一步骤筛选输出的事件 E=(模式,状态,{离家模式},{回家模式})、规
则组 \ S 的不兼容条件Ψ 为例,对于图 4 左下方中的 4 个执行前提-动作序列对,都要判断执行前提是否可能
X 2 X 2
满足并生成规则.这里以 4 对中的左上一对为例,由算法 5 的第 5 行得到的条件:“回家模式=回家模式 AND 温
湿度传感器.温度>28°C AND (电扇.开关!=开 OR 电扇.风速!=低) AND (电扇.开关!=开 AND 电扇.风速!=
低)”作为动作执行的完整前提条件,同时也应当是 E 发生后为真的条件,结合事件发生前应当为真的条件!Ψ,得
到关于系统状态的断言并判定是可满足的,因此生成一条规则:
IF 模式.状态 FROM {离家模式} TO {回家模式} WHILE 温湿度传感器.温度>28°C AND
电扇.开关!=开 AND 电扇.风速!=低 THEN 电扇.开关 打开,电扇.风速 设定 低.
算法 4 虽然和这里的算法 5 都需要对一组系统状态的断言做可满足性求解,但是算法 4 不考虑动作序列的
执行前提,其筛选结果能够被同一X的多个动作序列复用;且能够通过算法 4 筛选的只有较少数量事件,这些事
件至少能够与一个动作序列组合成为规则.算法 4 的存在,减少了转译过程中总的可满足性判定的次数.若直接
将候选事件集合与多种动作序列的组合输入算法 5,可能需要较多次数的不必要的求解.
4 方法评估
为了验证 SSRules 的系统设计的有效性,基于 Python 开发了 SSRules 运行时子系统和离线转译器;基于
Javascript 开发了 SSRules 前端用户交互模块,方便终端用户设置 SS 规则(如图 6 左上方);同时,结合已有用户调
查 [15] 构建智能家居使用情景,在这些场景下,就 SSRules 系统运行情况和规则转译效果进行评估和讨论.
4.1 智能家居实验场景搭建
为了能够评估 SSRules,需要将一些设备连接到 HA,并让设备和环境产生足够多的状态转移,以覆盖各种可
能的使用情形.但是,使用真实设备无法在短时间得到这样的测试场景并且调试不便.为此,我们基于 Unity 游戏
引擎开发了一个能接入 HA 的智能家居模拟器 HA-Simulator(其界面如图 6 下方).利用 HA-Simulator 可以将时