Files
Abstract
End-user programming on Internet of Things (IoT) smart devices enables users without programming experience to automate their homes. Trigger-action programming (TAP), supported by several smart home systems, is a common approach for such end-user programming. However, it can be hard for users to correctly express their intention in TAP even under some daily automation scenarios.
This thesis introduces our efforts to enhance users' trigger-action programming experience. We believe that help from automated tools can be provided to users. Across several projects, we helped users in all stages of TAP's life cycle including TAP creation and TAP refinement. In these projects, we developed multiple automated tools that reduce the amount of users' coding effort in TAP with the information fetched from users in the form of natural-language-like property statements, intended automated behaviors, or even the history of sensors and devices.
We developed AutoTap, a system that lets novice users easily specify desired properties for devices and services. AutoTap translates these properties to linear temporal logic (LTL). Then it both automatically synthesizes property-satisfying TAP rules from scratch and repairs existing TAP rules. We also created Trace2TAP, a novel method for automatically synthesizing TAP rules from users' past behaviors. Given that users vary in their automation priorities, and sometimes choose rules that seem less desirable by traditional metrics like precision and recall, Trace2TAP comprehensively synthesizes TAP rules and brings humans into the loop during automation. Lastly, we designed TapDebug, a system that automatically fixes TAP rules with user-specified behavioral feedback either identified from their device usage history or explicitly specified by themselves through our novel interface. In the TapDebug study, we conducted an empirical user study to discover obstacles throughout the TAP debugging process and evaluated how well TapDebug helped users overcome them.