Page 71 - 《软件学报》2021年第12期
P. 71
王博 等:SSRules:让智能家居自动化规则更易于编写和检查 3735
均为 HA 预置的虚拟实体;通过用户自定义或第三方集成,还可以实现如模式开关、空气质量、用户位置等虚拟
传感器和动作器.实体上可以执行的动作被抽象为服务调用,除了 HA 自带的值变化事件、服务调用事件等事件
类型,第三方集成也能够发布其他自定义的事件.采用 HA 可以自然地支持目标 G5.
• 设备的动态管理
HA 接入设备的方式之一是 MQTT Discovery,它提供对基于 MQTT(message queuing telemetry transport)协
议通信的设备的自动发现、配置和移除.MQTT 协议是一种基于 TCP 的发布订阅协议,在物联网通信中使用较
多.设备接入 HA 时,每个设备只需按照 HA 指定的格式配置其 MQTT 通信模块,HA 即可间接从 MQTT 代理获
得配置信息并完成配置流程.若设备需要移除,则它可以更新状态信息将自己移除,也可以由 HA 根据超时设置
自动移除.因此,HA 提供实现 G2 的基础,SSRules 需要主动与 HA 交互真正达到 G2.
• 高自由度的输入
HA 的规则输入语言为 Trigger-Condition-Action(即 Event-State→Event)范式,单规则中可以含有多触发器、
多动作.动作不仅可以是与设备相关的服务调用,也可以是自定义的事件触发和状态值写入、HTTP 接口调用等,
自由度很高.但是 HA 的自动化规则的编写非常繁琐,用户难以使用其描述有优先级的功能需求,并且用户自行
推理编写极易遗漏或写错.此外,由于 HA 的实体状态和服务调用之间的松耦合,HA 提供运行时异常检查极其
有限.HA 在 G1,G3 和 G4 方面较弱,因此,这也是 SSRules 要重点解决的问题.
2.3 SSRules系统总体架构
SSRules 系统总体架构如图 1 所示.整个系统通过 HA 提供的接口与智能家居设备连接,包括通过 MQTT 代
理连接智能家居真实设备或模拟器.系统由离线的转译器子系统和在线的 SSRules 运行时子系统组成:前者提
供终端用户输入的 SS 规则到 HA 规则的转译,后者提供 HA 抽象信息的获取和规则执行的有效性检查.SSRules
引入 Entity-Capability 抽象(见第 2.4 节)来描述智能家居系统所能管控的设备(实体)及可管控的内容(能力),用
户输入的 SS 规则最终被 SSRules 转化为 HA 规则注入到 HA 的配置文件并得以执行.
Fig.1 Overall structure of SSRules
图 1 SSRules 系统总体架构
• 抽象信息获取
SSRules 需要 HA 中的实体、状态、服务的抽象信息用于 SS 规则的转译和异常检测,这些信息由 SSRules
运行时子系统的抽象信息获取模块来提取和更新.该模块定期从 HA 更新实体信息并检测变化情况,获取设备
的动态信息(加入或离开),生成 SSRules 所需的最新实体-能力抽象信息和动作翻译信息.
• 规则转换流程
SSRules 的用户交互模块根据实体-能力抽象信息将用户输入规则所需的信息以用户友好的方式呈现在前