Generic Adaptation Support for Wireless Sensor Networks
Wireless Sensor Networks are used in various and expanding application scenarios and are also considered to be important elements of the Internet of Things. They monitor and deliver data, which is not only used for research but to an increasing degree also in business environments. With the increasing complexity of these scenarios and the increasing dependency on the availability of the sensor network data, the requirements to a Wireless Sensor Network increase at the same pace. Since Wireless Sensor Networks are typically implemented using resource-constrained platforms, sensor network algorithms are typically optimised for specific operating conditions such as static or mobile networks, high or low traffic etc. However, due to scenario complexity and dynamic real-world conditions a static configuration of a Wireless Sensor Network software cannot always meet the requirements. Moreover, these requirements of the sensor network's user can change over time, for example concerning accuracy. Therefore, the sensor network software has to adapt itself to cope with dynamic system conditions and user requirements. This thesis presents the TinyAdapt and TinySwitch frameworks to solve the aforementioned problems. TinyAdapt, our generic adaptation framework for Wireless Sensor Networks, allows for the autonomous adaptation of arbitrary sensor network algorithms based on explicit and intuitively defined user preferences and on automatically monitored network conditions. Due to a two-phase approach, run-time adaptation is executed completely and efficiently on standard sensor node hardware and does not need support from, e.g., the base station. The creation of adaptive applications is guided by a complete workflow, which is presented as well. When changing parameters of an algorithm is not enough to achieve the desired adaptation results, the algorithm has to be exchanged completely. However, several limitations of TinyOS and the sensor node hardware limit the use of simple code exchange by node reprogramming for efficient adaptation. TinySwitch, our generic switching framework, allows to switch between alternative algorithms that are already installed in parallel. TinySwitch analyses these algorithms, determines their dependencies and creates all code to enable one of the algorithms while isolating all others. Due to its minimal overhead, TinySwitch is perfectly suited for run-time adaptation in TinyAdapt.