Many user studies of home automation, as the most familiar representative of the Internet of Things, have shown the difficulty of developing technology that users understand and like. It helps to state requirements as largely-independent features, but features are not truly independent, so this incurs the cost of managing and explaining feature interactions. We propose to compose features at runtime, resolving their interactions by means of priority. Although the basic idea is simple, its details must be designed to make users comfortable by balancing manual and automatic control. On the technical side, its details must be designed to allow meaningful separation of features and maximum generality. As evidence that our composition mechanism achieves its goals, we present three substantive examples of home automation, and the results of a user study to investigate comprehension of feature interactions. A survey of related work shows that this proposal occupies a sensible place in a design space whose dimensions include actuator type, detection versus resolution strategies, and modularity.
Currently many new networked devices ( things'' in the Internet of Things) are being offered to consumers by enterprises large and small. As reported in @cite_21 , these offers almost always promise that users can program control of these devices with if-then'' or trigger-action'' rules. This assumption is also adopted in some research projects @cite_2 @cite_9 @cite_21 .
@cite_9 @cite_21 @cite_2
2143140262 2086239403 2463943663
This paper investigates the feature interaction problem, known from traditional telephony environments, in the context of Internet personal appliances (IPA). IPAs are dedicated consumer devices which contain at least one network processor. They include the Internet alarm clock, which takes into account road conditions or expected arrival times of air planes when setting the alarm time, or the Internet enabled fridge, which keeps an inventory of groceries and issues orders to suppliers. The results of our investigation are threefold. The first part of this paper introduces a service taxonomy supported by a list of example services. The second part discusses feature interactions between services for appliances. A classification for such interactions and example interactions and possible conflicts are presented. The final part contains an outline for an approach to handle such interactions. We investigate the practicality of letting average users customize smart-home devices using trigger-action ("if, then") programming. We find trigger-action programming can express most desired behaviors submitted by participants in an online study. We identify a class of triggers requiring machine learning that has received little attention. We evaluate the uniqueness of the 67,169 trigger-action programs shared on IFTTT.com, finding that real users have written a large number of unique trigger-action interactions. Finally, we conduct a 226-participant usability test of trigger-action programming, finding that inexperienced users can quickly learn to create programs containing multiple triggers or actions. Networked devices such as locks and thermostats are now cheaply available, which is accelerating the adoption of home automation. But unintended behaviors of programs that control automated homes can pose severe problems, including security risks (e.g., accidental disarming of alarms). We facilitate predictable control of automated homes by letting users “fast forward” their program and observe its possible future behaviors under different sequences of inputs and environmental conditions. A key challenge that we face, which is not addressed by existing program exploration techniques, is to systematically handle time because home automation programs depend intimately on absolute and relative timing of inputs. We develop an approach that models programs as timed automata and incorporates novel mechanisms to enable scalable and comprehensive exploration of their behavior. We implement our approach in a tool called DeLorean and apply it to 10 real home automation programs. We find that it can fast forward these programs 3.6 times to 36K times faster than real time and uncover unintended behaviors in them.