Page 72 - 《软件学报》2021年第12期
P. 72
3736 Journal of Software 软件学报 Vol.32, No.12, December 2021
端界面中.用户完成编辑后,用户交互模块根据用户的输入生成 SS 规则文件.接着,SSRules 运行时系统会调用可
离线运行的转译器将 SS 规则转译成 HA 规则,再将其更新到 HA 的 automations.yml 中.
• 异常检测设计
当由 SS 规则翻译得到 HA 规则并开始执行之后,规则执行有效性检查模块会从 HA 获取所关心的状态变
化事件,定期获取全部实体的状态,检查实体状态及其状态变化是否符合 SS 规则的描述,并将因网络/设备故障
等问题导致的设备状态与 SS 规则描述不相符等情况进行告警以及写入日志.
2.4 Entity-Capability抽象
一个智能家居系统所管理的设备可以包括真实物理设备(如空调)、虚拟设备(如天气、时钟等),还可以是
人.SSRules 系统使用实体-能力抽象(entity-capability abstraction)来描述智能家居系统中各种设备的可感知和/
或可控制的能力,记为W = {EE } ,N D 为实体总数.每个设备抽象为一个实体E(entity),每个实体由其 ID e、
, ,...,E
1 2 N D
一组能力C(capability)以及描述各能力状态之间转移关系的状态机 M 组成,即E=(e,C,M).
• 能力
每种能力表示单个可变化的只读或者可控属性.表 4 列出了几种常见智能家居设备及其能力.每种能力可
表示为一个四元组(c,k,ro,J),其中:c 是该能力在实体内的唯一标识;k 表示该能力的状态值类型,可以是二值
(binary)/多值(set)/实数(numeric)等类型之一(实数可以细分成子界类型或实数区间等,本文为简便起见不作区
分);布尔量 ro 为真表示能力是只读的、为假表示是可控的;J表示一组关联的命令序列,其中每个元素是要执行
的命令代号.
• 状态机
每个实体的状态机由该实体每种能力 c 的状态机组成:M c =(V c ,T ),其中,V c 是能力 c 的状态值集合,T 是状
c
c
态值之间的转移函数.
[]C
• 若 c 为只读的,则转移函数为T : V ⎯⎯→ V ,箭头上方的 C 为事件转移发生的必要条件,表示能力 c
c c c
仅在 C 为真时才可能从源状态值转移到目的状态值;
[]C J
• 若 c 为可控的,则转移函数的类型为T c : V ⎯⎯⎯→ V ,箭头上方的 C 为动作转移允许发生的充分必要条
c
c
件;J为要执行的命令代号,表示能力 c 仅在 C 为真时才能够接受代号为J的动作,或者在出现外部
事件时(如用户通过遥控器、手机 APP、物理开关等控制),使得从源状态值转移到目的状态值.
Table 4 Examples of entities and their capabilities
表 4 实体及能力举例
Capability 取值范围 性质 Capability 取值范围 性质
模式 制冷/制热/抽湿/送风/关闭 可控 人体传感器 状态 激活/未激活 只读
设定温度 16°C~30°C 可控 开关 打开/关闭 可控
空调 室温 −30°C~70°C 只读 咖啡机 咖啡状态 准备好/未准备好 只读
风扇模式 开/关 可控 夜灯 开关 打开/关闭 可控
扫风模式 开/关 可控 亮度 0~255 可控
开关 开/关 可控 时间 24 小时制的 HH:MM 只读
电扇 时钟
风速 低/中/高 可控 状态 白天/夜间 只读
门锁 状态 锁定/未锁定 可控 模式 状态 回家模式/离家模式 只读
在缺省的 M c 中,任意两个状态值之间存在条件为 True 的转移(即无条件状态转移);若 c 可控,则存在无条件
动作,它可触发任意两个状态值之间的状态转移.SSRules 系统会提供初始的 M c 配置文件,其中提供部分常用
设备能力及其状态转移描述,用户也可以根据需要添加某个设备或者某一类设备的 M c 补充信息.
根据 c 的 M c 抽象,可以进一步检测动作的执行前提,或者判断事件的可能性.例如,假设电扇和咖啡机的能
力状态机如图 2 所示:① 电扇的 c 2 (风速)只有在其 c 1 (开关)的取值为开时才可以接受改变风速的动作;② 咖啡
机的咖啡状态仅在咖啡机的 c 1 (开关)取值为开时才能从未准备好进入准备好状态.