The next Internet, Internet of Things, allows for unprecedented levels of interaction between the digital and physical worlds. However, to fully harness the potential of this technology we need to provide software developers with the proper abstractions and tools. To this end we have developed a series of programming systems to raise the level of abstraction in wireless sensor network programming.
During 2009, a team of researchers from the University of Trento and the Bruno Kessler Foundation deployed a network of autonomous tiny wireless sensors (see Figure 1) to monitor the structural integrity of Torre Aquila, a 31 metre tall medieval tower that forms part of the Buonconsiglio castle in downtown Trento (see Figure 2). The tower is a heritage treasure: it contains a series of medieval frescoes internationally renowned as one of the few examples of non-religious medieval paintings in Europe. The main motivation for the deployment was to assess the condition of the tower in light of plans to construct a road tunnel nearby, which could have put at risk the tower's integrity.
Figure 1: wireless sensor
Figure 2: Torre Aquila
Among the many insights provided, deformations readings revealed a phenomenon known to structural engineers as “the breath of the structure”. The wireless sensors showed one of the tower's facades to elongate during the day, when the sun hits the facade, and to shorten during the night, when the temperature drops and the materials shrink accordingly. Until the wireless sensor network (WSN) was deployed, observations of this kind were either unattainable or required invasive monitoring technologies that are simply not feasible in a heritage building.
Torre Aquila is just one example of the applications enabled by Internet of Things technologies. These promise to blend today's Internet, whose modes of use and operation are mostly limited to the digital domain, with the physical world at unprecedented levels of detail. At the interface between these two worlds we find technologies such as smartphones, wireless sensor networks, and RFIDs, enabling a range of diverse applications in domains such as environmental monitoring, health-care, and factory automation.
Owing largely to small form factors, batter-powered operation, and cost considerations, Internet of Things devices are often severely resource constrained compared to today's laptops and desktop PCs. A typical wireless sensor network device, for instance, offers about the same computing and communication power as an early 80s' PC. This generates a plethora of research and technical challenges, spanning from hardware design to routing protocols and distributed algorithms.
Out of all these challenges, providing proper programming abstractions and tools is often deemed to be a key problem. These are the means whereby domain experts and software developers will be able to fully harness the potential of Internet of Things technologies. Unfortunately, the current state of the art falls short of expectations. In particular, most WSN real-world applications are designed and implemented right atop the operating system facilities, resembling the early days of distributed computing when the C language and network sockets were de facto standard programming tools. Such an approach likely distracts developers from the application goals by forcing them to deal with many low-level details. As a result, the resulting implementations have often performed below expectation.
To remedy this situation, the research community has developed a series of programming systems trying to raise the level of abstraction in WSN programming. Nevertheless, developers have hitherto rarely used these systems in real deployments. This is a consequence of having many overly complex solutions designed with little attention to real-world issues. Developers, frustrated by the difficulty of understanding the system operation underlying the language constructs, then resorted to C-like languages, ultimately arguing that higher-level abstractions were not feasible in real-world deployments due to resource scarcity.
With Torre Aquila, in contrast, we demonstrated that higher-level WSN programming abstractions are not only feasible in real-world deployments and do increase the programming productivity, but they are actually necessary to realize complex applications. Indeed, we designed and implemented the monitoring system in Torre Aquila atop our TeenyLIME middleware instead of the operating system. TeenyLIME abstracts away the fragmentation of memory space across neighbouring devices under a single memory space. Such design allowed us to push more functionality in the memory-scarce WSN nodes that we would have been able to do with the operating system alone. Our abstractions allowed many mechanisms across different functionality to be factored out, ultimately resulting in smaller overall memory occupancy.
Torre Aquila and the TeenyLIME middleware are not isolated examples. As much as we conceived further abstractions to tackle different programming challenges (eg the Logical Neighborhood abstraction and the Squirrel system), we also built real-world applications with them, notably including safety-critical ones like closed-loop control in operational road tunnels. The resulting systems performed effectively and efficiently, providing fine-grained environmental data or efficient control in a range of situations.
Of course, many challenges still lie ahead in this and closely related fields. The programming challenge itself is far from being solved. We will be in the position to claim so, for example, when domain experts will develop Internet of Things applications with little or no knowledge of embedded systems and distributed programming. We believe however, that one of the grand challenges on the horizon will be the testing and verification of Internet of Things applications, especially prior to deployment. Devising effective solutions in this field will increase confidence in Internet of Things technology and thus the opportunities to investigate novel applications, creating a virtuous circle that will ignite further developments, in the same way that it happened for the “standard” Internet.
Acknowledgements: The research described here is the result of joint efforts of the author with many talented researchers at Politecnico di Milano, University of Trento, Bruno Kessler Foundation, and SICS, the Swedish Institute of Computer Science. The author is deeply indebted to all of them.
Luca Mottola is a winner of the 2011 ERCIM Cor Baayen award.
Luca Mottola, SICS, Sweden