The Internet of Things (IoT) promises to enable novel applications in areas such as home automation, the environment, social networks, transportation, and health. To ease the development of large scale IoT applications, various high-end IoT or M2M platforms and toolkits have been developed.
While their power and flexibility often affords the broadest range of possible solutions, this can come at the cost of complexity and a steep learning curve for web developers who aim to build IoT mashup applications: web applications using data and services available on the web.
Mashups are often personalized, situational, short-lived, non-business critical applications developed using familiar web development tools and technologies. We believe that innovative and novel new IoT services will be realized when tools are available that reduce barriers to entry for the development of this important class of applications.
Toward this goal, researchers have built on the ubiquity of web protocols and the Representational State Transfer (REST) architectural style of the web to connect “islands of functionality” calling this approach the Web of Things. Things are identified by URIs and use a common protocol (HTTP) for stateless interaction between clients and servers.
Using web protocols makes the creation of mashups possible allowing developers to combine data from both physical data sources and virtual sources on the web. While leveraging the ubiquity of the web is an important step forward, we believe a further step, of developing web-centric IoT mashup toolkits has the potential to increase the use of Internet-enabled things further by increasing the pool of developers and applications that can take advantage of the connected physical world.
In this paper we derive the requirements of IoT mashup toolkits from several representative existing systems and our experience with a platform we’ve developed called the Web of Things Toolkit (WoTKit) .
WoTKit is a Java web application with a data model consisting of sensors with fields describing either a sensor or actuator connected to the system. Sensors are associated with time stamped sensor data containing multiple typed fields. To deliver sensor data between components, a standard Java Messaging Service (JMS) broker called Active MQ is used for moving new data between components for fast processing and control applications.
Included in the main web application is a data model for managing user’s dashboards and visualizations. Visualizations are associated with sensors to create “widgets” that are added to the user's dashboard for rapid visualization of sensor data. When a dashboard is displayed in the browser, it requests the user’s dashboard configuration and dynamically draws the various visuals containing sensor data.
Researchers in the health domain have found WoTKit to be a useful prototyping tool. The system was used to monitor the output from Bluetooth based pulse oximeters. These sensors were connected to a Bluetooth PAN host, which relayed the data to the WoTKit for visualization to facilitate patient monitoring during movement and transportation.
We have also used the WoTKit to prototype a mobile air quality monitoring application. To gather the needed data we wrote a simple script to query for updates to air quality information supplied on a public web site. This was then pushed into the WoTKit in a format that made it easy to process by a mobile application .
For transportation-related scenarios we have integrated several sources of location data. We have written simple applications for Android phones that relay the GPS coordinates of the user to the system periodically. We have also created a Google Latitude gateway to relay the location of users in the system for monitoring transportation patterns. To monitor several vehicles in a prototype dispatch application, the WoTKit’s Processing Engine was used to aggregate sensors and display them on the Google Maps widget in the dashboard.
To gauge the system’s usefulness for home automation applications we have written simple gateways for Phidget sensors and actuators such as servo motors. More recently we have used the system to monitor activity using Zigbee based temperature, light and power sensors which deliver, via a gateway, data to visualizations supplied by the WoTKit on the web. We have integrated several hardware sensors including light sensors and custom power sensors connected to power bars and outlets.
In support of these mashups and other applications we provide a simple mechanism for posting sensor data and support a variety of sensor feeds ranging from physical infrastructure such as CPU, network and power usage, through web data (scraped via tools such as Beautiful Soup) such as airport arrival/departures, ferry and bus status upto softer sensor sources such as ‘Tweets’ and other social network feeds.
Based on three years of experience with this system and other systems, we derive key lessons learned to share with the community. These lessons aim to shape the future evolution of WotKit but also, we hope, help shape and improve other toolkits and contribute to the vision of the IoT as a foundation for novel and innovative new applications and services.
To read this external content in full, download the complete paper from the author archives on line at Lancaster University, United Kingdom.