A computational engine for the Internet of Things
How does one make sensor data processable and searchable in a human-friendly way?
Within the networked society, simple wireless sensors are gaining a prominent place as means of measuring different attributes ranging from electricity and water consumption in the context of utility networks, to measuring temperature, nutrition, moisture and rainfall among other parameters in the context of agriculture. Depending on the context, it is not always a necessity to be able to acquire measured information in real-time, less frequent updates can also be of use in order to avoid heavy taxing of battery life when dealing with such simple and constrained kinds of sensors.
In contrast, more “mission-critical” industrial contexts such as monitoring and remotely controlling heavy machinery, operating in environments that are hazardous for humans, have more real time requirements and they are not as constrained from an energy efficiency point of view.
A common underlying question that can be found in all contexts is how does one collect and process the information from all these sensors and make the information processable and searchable in a human friendly way, using plain text keywords.
To better address this question, Ericsson Research in collaboration with the Swedish Institute of Computer Science and Uppsala University developed a system called the IoT Framework. The IoT Framework is a computational engine for quantitative information accumulated by sensors connected via any IP network such as the Internet. The framework is available as open source software in github, released under the Apache 2.0 license.
The framework is already being used by the Cognitive Network Management Under Uncertainty project (COMMUNE) for storing real-time data from wireless sensors and we are also planning to use it in EU FP7 Citypulse for storing information in a Smart City context. Moreover it is going to be presented in MWC 2014 as part of the Capillary Networks demonstration.
Figure 1: wireless sensors connected to the IoT Framework via a RESTful API
The IoT Framework was implemented in Erlang with scalability in mind and for all purposes and intents it is designated to operate as a service in the cloud. The framework acts as an overarching combined Resource Directory and Mirror Server, collecting information either directly from simple sensors with IP connectivity, or from other subsidiary Resource Directories and Mirror Servers. The information collected by the different sensors; the different measurements are stored in a database and they are time-stamped, thus creating a historical footprint of what a sensor has measured in the form of a time-series that we call a stream.
As shown in Figure 1, an arbitrary amount of wireless sensors (denoted by S) can be connected to the IoT Framework via a RESTful API, either directly (i.e S1) or indirectly (i.e. S2 to SN) by means of a gateway. Depending on the connection, the sensor itself can push data to the IoT framework, or the IoT framework can periodically poll the sensor to retrieve data from it.
Streams are automatically semantically annotated with contextual information, related to the manufacturer of the sensor (i.e. accuracy, min/max measurements), the type of the sensor (i.e. temperature, humidity) and the location of the sensor.
Here at Ericsson Research we are big fans of NoSQL, therefore, this information is recorded in a NoSQL database, powered by Elasticsearch that allows for keyword-based queries, thus making the information accessible to interested parties such as 3rd party application developers.
There is more to the IoT Framework than just collecting information and that is processing information and actuation. In terms of processing information the framework currently allows for generating virtual streams that are mathematical aggregates of other streams (i.e. AVG, SUM, MIN, MAX). Moreover, the framework allows for generating predictions of how a stream could look like in the future, by means of Autoregressive Integrated Moving Average (ARIMA) provided by R.
Figure 2: Simple prediction of 10 data points using a history of 100
In terms of actuation the IoT Framework allows for simple If-then-that (IFTT) kind of triggers, but could be extended to handle more complex task resolutions. As an example, in the context of water management, one can express a simple trigger to model a rule that turns off an electronic valve when a threshold is exceeded in the stream that is monitoring the level of the flow in a water pipe. A miniature setup of the water management scenario is illustrated in Figure 3:
Figure 3: A simple water management network, empowered by sensors
Finally yet importantly, all these streams are made available via RabbitMQ in a publish-subscribe paradigm, allowing external users to push their own information into the system and allowing subscribers to consume that information, either in its raw or in its processed form.
List of features:
- Data Federation (Push/pull model)
- Collection of sensor readings from heterogeneous sensors
- Raw streams/Virtual streams
- Raw streams contain information “as-is” collected from sensors
- Virtual streams are processed versions of raw stream (i.e. SUM, MAX, MIN, AVG)
Actuation via If-then-that triggers
- Simple triggers are available that permit actuation i.e. when a certain threshold is exceeded raise an alarm
- Keyword based Queries/Filtering
- Annotation of collected information as enabler for context aware queries
- Quality of Information
- User based ranking
- Publish/Subscribe system
- Subscription via HTTP/Websocket APIs to real-time information streams (raw/virtual)
- Visualization of raw or processed information in real time
- More information on the IoT framework can be found here
The work on the IoT Framework does not stop here. We plan to continue our work in this area and further improve our prototype to become a true marketplace for IoT information, making it even easier to find the information stored in the system and further improving it in terms of security.
There is more to come so stay tuned.
- Konstantinos Vandikas, Ericsson Research