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.
Smart-space modeling is a fundamental requirement towards the achievement of safe integration of pervasive systems and devices. Traditional behavior models lack explicit representation of rich semantic for ubicomp systems. We propose a graph-based model supporting ubicomp's computational, physical, user and temporal contextual information. The model is part of a solution to tackle the interference problem, which results from unexpected interactions involving users and entertainment, communication, and health-related devices. This is a major concern when, for instance, daily routines are affected by different types of applications. The proposed graph-based interference detection is integrated in the Safe Home Care reflective platform, and allows reifying system's state and simulating home care scenarios. A set of home care scenarios are used to assess the applicability and correctness of our approach. Home appliance networks now have the capability of integrating different features of independent appliances to provide value-added services. Concurrent execution of these services, however, can cause unexpected problems, even when each service is independently correct. This paper addresses the issue of detecting such interactions between services. We propose an approach that consists of two steps. In the first step, a model is developed to capture the behavior of the services and the interactions between them and users. In the second step, the model is automatically analyzed to see if possible interactions exist. This automatic analysis can be effectively performed with model checking techniques. The usefulness of the proposed approach is demonstrated through a case study, where several interactions were successfully detected.