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 (开关)取值为开时才能从未准备好进入准备好状态.
   67   68   69   70   71   72   73   74   75   76   77