A Survey of Geosensor Networks: Advances in Dynamic Environmental Monitoring <s> Application Programming Interfaces for Geosensor Networks <s> Advances in processor, memory and radio technology will enable small and cheap nodes capable of sensing, communication and computation. Networks of such nodes can coordinate to perform distributed sensing of environmental phenomena. In this paper, we explore the directed diffusion paradigm for such coordination. Directed diffusion is datacentric in that all communication is for named data. All nodes in a directed diffusion-based network are application-aware. This enables diffusion to achieve energy savings by selecting empirically good paths and by caching and processing data in-network. We explore and evaluate the use of directed diffusion for a simple remote-surveillance sensor network. <s> BIB001 </s> A Survey of Geosensor Networks: Advances in Dynamic Environmental Monitoring <s> Application Programming Interfaces for Geosensor Networks <s> We present the Tiny AGgregation (TAG) approach to distributing declarative SQL-style aggregate queries with grouping over networks of low-power, wireless sensors. We discuss various generic properties of aggregates, and show how those properties affect the performance of our in-network approach. We include a performance study demonstrating the advantages of our approach over traditional centralized, out-ofnetwork methods, and discuss a variety of optimizations for improving the performance and fault-tolerance of the basic solution. <s> BIB002 </s> A Survey of Geosensor Networks: Advances in Dynamic Environmental Monitoring <s> Application Programming Interfaces for Geosensor Networks <s> We present nesC, a programming language for networked embedded systems that represent a new design space for application developers. An example of a networked embedded system is a sensor network, which consists of (potentially) thousands of tiny, low-power "motes," each of which execute concurrent, reactive programs that must operate with severe memory and power constraints.nesC's contribution is to support the special needs of this domain by exposing a programming model that incorporates event-driven execution, a flexible concurrency model, and component-oriented application design. Restrictions on the programming model allow the nesC compiler to perform whole-program analyses, including data-race detection (which improves reliability) and aggressive function inlining (which reduces resource consumption).nesC has been used to implement TinyOS, a small operating system for sensor networks, as well as several significant sensor applications. nesC and TinyOS have been adopted by a large number of sensor network research groups, and our experience and evaluation of the language shows that it is effective at supporting the complex, concurrent programming style demanded by this new class of deeply networked systems. <s> BIB003 </s> A Survey of Geosensor Networks: Advances in Dynamic Environmental Monitoring <s> Application Programming Interfaces for Geosensor Networks <s> Accurate and scalable simulation has historically been a key enabling factor for systems research. We present TOSSIM, a simulator for TinyOS wireless sensor networks. By exploiting the sensor network domain and TinyOS's design, TOSSIM can capture network behavior at a high fidelity while scaling to thousands of nodes. By using a probabilistic bit error model for the network, TOSSIM remains simple and efficient, but expressive enough to capture a wide range of network interactions. Using TOSSIM, we have discovered several bugs in TinyOS, ranging from network bit-level MAC interactions to queue overflows in an ad-hoc routing protocol. Through these and other evaluations, we show that detailed, scalable sensor network simulation is possible. <s> BIB004
Due to the constrained computing, storage, communication and energy resources of wireless sensor networks, the communication protocol stack is, like many other aspects of the operating system for such systems, significantly collapsed and instead of the typical seven ISO/OSI layers the stack is reduced. Therefore, routing is tightly integrated with the data collection layer such that routing communication messages and data collection tasks have to go hand-in-hand. Developing such 'datacentric' routing and data collection programs BIB001 and optimizing them with regard to minimizing energy consumption as well as robustness against link and node failure is a challenging task. It requires significant programming expertise. Today, programming interfaces are C or Java-based. The programming language nesC BIB003 was developed for such constrained sensor networks; the TOSSIM BIB004 and Contiki [6] programming environments combine code development with simulation so that debugged and simulated code can be installed and tested on sensor nodes. To task sensor networks for applications today, in-depth operating systems and programming knowledge is required. This expertise, however, is often not the foray of the intended users of sensor networks, mostly scientists today. Scientists do understand the environmental processes that they are interested in observing and monitoring; they need to be able to easily re-task a sensor network to explore the deployment with regard to different sampling settings and spatial layout. Therefore, data collection and re-tasking have to be simplified significantly so that users can be more autonomous from sensor network programmers. To achieve this goal the database community has proposed (and implemented) a SQL-based database interface approach BIB002 . Using an SQL interface, data collection tasks are formulated as declarative spatio-temporal queries such as "SELECT vibration FROM sensors WHERE vibration > threshold SAMPLING EPOCH 1h". SQL-based queries are simple to formulate, and the query execution and optimization are, similar to traditional DBMS, automatically generated by the DBMS software system. Thus, the domain scientist is relieved from developing, testing and optimizing programming code, and can use a programming interface that allows him/her to define the necessary tasks in a user-friendly way. The optimization and ultimately self-adaptive execution of the data collection task are delegated to the DBMS run-time system without the user having to worry about the details. TinyDB is the first open-source 'sensor database management system' available today BIB002 . Nevertheless, the DBMS internal code for sensor networks is significantly different from traditional DBMS. First, the memory foot-print of the DBMS is very small (a few Kbyte) as opposed to millions of lines of code of commercial DBMS. Second, few data items are stored, but queries are used to task the sensor network and acquire sensed data in the user-specified intervals, while in traditional DBMS all queries are executed on large amounts of stored and indexed data BIB002 . Third, query execution has to be combined with query routing and data collection topology in a fundamental way, so that appropriate query plans can be generated automatically. Fourth, although not computationally complete as a programming language SQL has the ability to define aggregate function such as min, max, average or others. These functions are also available for sensor network DBMS interfaces. The internal approach to computing aggregates has to be combined with routing and data collection, too.