Project Krikkit - Analytics for Internet of Things
The next step in the evolution of the Internet is what is being termed as The Internet of Things or IoT (also referred to as Internet of Everything in some contexts). As billions of sensor devices and nodes are attached to the network, they will generate vast amounts of data that will need to be processed. The current approach of "store first, analyze later" where all the data is processed in the cloud/backend at a later time may not be feasible not only due to the large amounts of data but also the need to take actions in real time based on the streaming data i.e. on data that is in motion and not static.
To address these forthcoming challenges, we need to rethink the way we acquire and manage data. Instead of capturing all the data to be processed at the cloud, we need a way to instruct the low powered, memory and resource constrained edge devices such as sensors and sensor gateways as to what data is of interest and what aspects of it to capture. From a user point of view, not all data is of interest and the ability to set rules/policies on the edge devices along with capabilities to search the data in real time and trigger subsequent actions will engender powerful advantages. The key benefit would be dramatic bandwidth reduction as we reduce the amount of data being sent back by eliminating data that is not needed. Secondly, devices at the edge may have the ability to understand the data and the ability to query the devices for semantic information available in sensor data will be valuable.
To realize this vision of acquiring and managing data in motion in real time, we need a mechanism to communicate with the edge devices and a common language for doing so. This communication must provide the ability to set rules to describe data of interest, ability to understand and search the data including content and payload and the ability to trigger actions (e.g. actuate sensors) in response to events conditioned on rules. This proposal attempts to address the need for such a communication paradigm by providing an publish/subscribe architecture and API. This API will enable users to program the edge devices to acquire, search and deliver only data of interest while minimizing the bandwidth requirements. This will allow the scalability needed to manage a large number of devices in the IoT space.
The Krikkit Eclipse project provides an API through a software library that will enable a user or developer to 'program' IoT edge devices such as sensor gateways and make it easy to acquire and manage data. Such a library could also potentially be used as a plug-in in Eclipse frameworks to ease the programming of IoT devices.
Specifically, Krikkit library provides a REST ful API for a programmer to specify and describe the data of interest. The edge devices may also have the ability to understand the semantics of the content/payload of the sensor data. The API, in this case can also be used to write queries describing the content which if matched against can result in further actions.
The API translates these policies into an open format that can be understood by the edge devices. Krikkit also includes in its scope the format and definition for the JSON messages that will be used to communicate with the devices.