Cooperating Smart Everyday Objects - Exploiting Heterogeneity and Pervasiveness in Smart Environments Frank Siegemund Institute for Pervasive Computing, ETH Zurich Pervasive Computing envisions the seamless integration of computation into everyday environments in order to support people in their daily activities. Due to recent technological advances, the computing devices that can be used to enrich our environments with computation have become increasingly smaller and less obtrusive, so that it is possible to embed them into mundane everyday things. Such smart everyday objects have the ability to communicate with peers, perceive their environment through sensors, and provide context-aware services to nearby people. However, the severe resource restrictions and limited user interfaces of smart objects make it difficult for them to realize services on their own. Instead, in order to implement context-aware services and because of their limited user interfaces, smart objects need to interact with other computing devices to make use of these devices' sensors and input/output capabilities. In consequence, there is an urgent need to facilitate cooperation between computational entities in smart environments. This dissertation addresses the problem of cooperation from the perspective of smart everyday objects. Its main contribution is to illustrate how augmented items can make up for their limited resources by cooperating with nearby computing devices. For this purpose, we concentrate on two aspects of cooperation: interaction between smart objects and cooperation between smart objects and mobile user devices. The first part of this dissertation focuses on how smart objects can provide services in cooperation with other augmented artifacts. In the proposed solution, a programming abstraction facilitates the design of collaborative context-aware services for smart objects. This abstraction groups nodes into sets of cooperating objects that bundle their resources and appear to an application as a single entity. Based on this approach, we present a software framework for realizing cooperative services on smart objects. It consists of (1) a description language for context-aware services, (2) a context recognition layer for smart objects, (3) an infrastructure layer for distributing data among cooperating artifacts, and (4) a communication layer that adapts networking structures to correspond to the real-world environment of smart objects. To evaluate the proposed concepts, we present an implementation on an embedded sensor node platform, the BTnodes. The second part of this dissertation focuses on cooperation between smart objects and mobile user devices as an example of how augmented artifacts can benefit from the heterogeneity of smart environments. In this respect, our contribution is to identify recurring usage patterns that describe how smart objects can make use of handheld devices: (1) as mobile infrastructure access points, (2) as user interfaces, (3) as remote sensors, (4) as mobile storage media, (5) as remote resource providers, and (6) as user identifiers. We describe these usage patterns, report on experiences with prototypical implementations, and present several application scenarios illustrating the applicability of the proposed concepts.