Internet of Things

The Internet of Things (IoT) is an extension to the current Internet that enables connections and communication among physical objects and devices. In the last years, the Internet of Things has witnessed an outstanding evolution in terms of hardware, e.g., Arduino, communication technologies, RFID, and even higher-level user friendly development environments. Thanks to many open source and open hardware initiatives in the area and the affordability of sensors, micro-controllers, and small computers, creating, deploying, and using networks of sensors and small pervasive devices is not anymore the privilege of a few.

Although IoT technologies are expected to revolutionise the world, the exploration, development, and deployment of IoT applications currently presents a considerably steep learning curve even for ICT experts. It is often necessary to understand novel communication technologies, create reasonably scaled deployments in the real-world, and even leverage cutting-edge Big Data technologies to process the data generated.

Many systems which up until now were largely centralised or at most distributed within fairly constrained environments, are now reaching out to the Internet through a variety of small, pervasive, interconnected devices. Cars, thermostats, and even manufacturing tools can now be accessed from the Internet opening up a whole new range of possibilities ranging from smarter traffic management, to highly efficient and self regulated temperature management. Creating software within this new scenario will, however, many challenges which we need to address.

My research in this area focusses precisely in this regard: better supporting the development of smart Internet of Things applications. I am mainly carrying out this research in the context of the European research project COMPOSE where I serve as scientific director. In a nutshell, we are working on an integrated infrastructure that could make the creation of Internet of Things applications a breeze. To this end we are developing a large-scale Big Data processing infrastructure able to support both Batch and Stream processing jobs over data coming from sensors and other devices and APIs from the Web. To simplify the creation of applications on such data sources our infrastructure adopts a service-oriented view over both data sources and processing pipelines, allowing developers to find, reuse, combine and expose novel added value Internet of Things services.

Although there is a considerable number of software components being devised and combined to implement COMPOSE’s platform, we could essentially divide the whole platform into 3 main tiers. The cloud tier that provides, data storage, Big Data processing support, and application hosting, the mid tier that provides service-oriented support to the monitoring, analysis, and creation of applications, and the user-interface layer that provides easy to use tooling for developers. The backend layer relies essentially on two main solutions: ServIoTicy and CloudFoundry/BlueMix. The mid layer relies largely on iServe, an extended version of ComposIT, and a suite of Security, Trust, and Privacy components. Finally, the GUI is centralised into GlueThings which builds largely upon NodeRed with a range of extensions (see a few of them here).