Dioptase is a service-oriented middleware for developing stream-based applications which produce, process, store and consume data streams in complex environments such as the Internet of Things (IoT) and Wireless Sensor and Actuator Networks (WSAN). The Dioptase middleware  provides developers with new methods for writing distributed applications, leveraging data streams as data model and continuous in-network processing as computation model, in order to deal with the challenging volume of data being continuously produced by the Things. Continuous processing is indeed a very suitable paradigm for processing each piece of data one by one, without having to store the entire dataset.
The IoT infrastructure is composed of various devices (sensors, registries, proxys, clusters, etc.) and the Dioptase solution aims at providing a common middleware layer that runs directly on these devices, enabling them to manage the huge volume of data continuously being produced (measurements, events, logs, etc.) in a collaborative way. Dioptase is highly modular and can be customized depending on the targeted devices and their roles in the IoT :
- Dioptase Core (DiCo) is the base version of Dioptase that enables developers to (ii) manage embedded sensors and actuators of a device through Web services and (ii) deploy tasks onto the device at any time.
- Dioptase Deployment server (DiDS) is a server that implements our research on task mapping and automated deployment. Given a task graph, this server computes where to deploy each task according to the characteristics of tasks and available devices, and then manage the execution of the deployed tasks over time.
- Dioptase Proxy (DiPro) is a pub/sub broker that enables interactions between Things that can not communicate directly, because of non-compatible networking interfaces/protocols or the use of address translation techniques.
- Dioptase Exchange (DiEx) is a privacy proxy that manages the data and the services provided by a network of Things. It authenticates outsider Things and users, enabling them to request data streams or services according to access control and data-accuracy policies.
Dioptase features a customizable middleware architecture that is versatile enough to be deployed on a large class of Things that vary significantly in terms of resource availability (e.g., embedded systems, smartphones or plug computers), provided that these Things are able to communicate directly through the Internet infrastructure. In addition, Dioptase embeds various modules for interacting with existing components being used as part of the IoT infrastructure: discovery systems and registries, computation and offloading infrastructure, legacy sensor and actuator networks, etc.
Dioptase leverages a novel service-oriented architecture (SOA) for continuous processing, in order to deal with the large scale and the heterogeneity of the IoT. This SOA introduces the concept of stream services that produce and consume infinite data streams, in contrast to regular services that manage finite datasets. Once Dioptase is deployed onto a Thing, it enables developers to manage the Thing as an abstracted and homogeneous pool of resources that can execute stream services provided over time. These stream services can be developed by using the native languages of the device or a new lightweight stream processing language, called DiSPL, directly interpretable by Dioptase.
By composing stream services, developers build their IoT applications as a set of tasks that are executed continuously by the hosting Things in a purely distributed manner. Developers are provided with dedicated tools for designing tasks graphically before injecting them into the network of Things at any time, using deployment Web services or through the Dioptase Deployment Server (DiDS). DiDS relies on a state-of-the-art task allocation algorithm , which guarantees the lifetime of each task, by minimizing the overall energy consumption or maximizing the fair allocation of tasks among the Things, according to the constraints expressed by the developers and the characteristics of the available Things.
Dioptase Source Code
The fully finalized Dioptase middleware will be released soon as an open source project. If you are interested by the source code of the prototype implementation of Dioptase, please send an email to benjamin (dot) billet (at) inria (dot) fr.
 B. Billet and V. Issarny “Dioptase: a distributed data streaming middleware for the future Web of Things”, Journal of Internet Services and Applications, vol. 5, no. 13, 2014.
 B. Billet and V. Issarny “From task graphs to concrete actions: A new task mapping algorithm for the future Internet of Things”, Proc. of the the 11th IEEE International Conference on Mobile Ad hoc and Sensor Systems (MASS), 2014.