In conventional IoT solution development, developers build solutions that only “understand” a limited set of devices. Each device requires a lot of plumbing and wiring to connect the device to the IoT solution, such as dealing with the device’s protocols and data structures. This makes it even tougher and very time-consuming to integrate other types of devices.
Suppose you want to build an IoT solution that processes the number of people detected by a security camera. The first challenge is: How I can find out which camera provides this type of functionality? Second, how can I avoid tightly coupling my application with the specific camera so in the future I could easily integrate another camera with the same functionality?
Eclipse Vorto is a new language for the IoT. It solves the problem of device and IoT platform heterogeneity by providing a simple DSL (Domain-specific Language) and tools. It is fully open source.You can find the source code on Github
The open source Eclipse Vorto project solves exactly these kinds of problems. At the heart of Vorto is a central repository that includes descriptions of device functionality. You can search the Vorto repository to look for the ‘people counting’ functionality and see what devices support this functionality. Once you find a camera device that suits your needs, Vorto provides an abstraction layer, called Vorto Information Model. It provides a consistent interface for all cameras’ meta-information and functionality. This consistent interface makes it possible to write integration logic in your solution that will support different types of cameras.
Building an IoT application with Eclipse Vorto
To implement our people detection solution, we will build an IoT application using the Vorto device abstraction that is able to consume camera meta-data for image and object detection and then display this information in a web application. We will select the Bosch security cameras because they provide very intelligent algorithms for people detection. We also want to use Bosch IoT Things, an IoT cloud platform, to manage the camera data being sent to the web application.
Using the APIs provided by the Vorto Information Model, we integrate the camera data stream into the Bosch IoT Things platform. This will ensure we don’t tightly couple our application to this specific camera. However, this camera only sends binary data so it is very difficult to interpret the data in our IoT solution. Therefore, we need some type of payload conversion connector that converts the binary payload to a device agnostic human readable format.
To convert the camera’s binary data, Vorto allows for conversion rules to be specified for each device. The Vorto mapping specification defines how device binary data can be converted into a consistent human readable format. The mapping specifications are executed by the Vorto mapping engine. Thereby, the camera’s binary data is transformed into a data stream that can be forwarded and processed by Bosch IoT Things.
An easy way to create flexible IoT applications
The beauty of this solution is that we are now able to use any camera that supports people detection with our IoT application. Vorto abstracts the device specific information so it is easier to write a flexible IoT application. Do you want to add a new type of camera to your IoT solution? All you need to do is create a Vorto model of the new camera and configure the connector with it. For instance, two Bosch cameras, Dinion Starlight 8000 and Flexidome Panoramic, through the Vorto abstraction API will have the identical representation in Bosch IoT Things. The integration of security cameras is no longer tightly coupled to specific cameras.