Many technologies are available today that allow for the interconnection of devices, the management of systems of devices, and consequently the realization of solutions in the Internet of Things (IoT). However, most of the software components related to the IoT are industry-specific implementations that provide individual abstraction layers for specific groups of devices. Because of the different approaches, there is often no interoperability between the mentioned components. This in particular leads to a variety of disparate implementations related to the connectivity of one and the same device.
Therefore, I think it makes sense to provide a means for standardizing just the abstractions of devices. A standard like this could harmonize the way code generators for different environments integrate devices into different IoT solutions.
That’s why we initiated the IoT Information Model Repository project (Vorto). The idea behind Vorto is to push the standardization of so-called information models. An information model is an abstraction of a device.
Information models are already regularly used for putting into practice the abstraction layers in the IoT context. To enable developers to push standardization in the above described way, Bosch.IO has started implementing:
- a meta information model
- Eclipse platform-based tools that will allow the creation of new information models that are dependent on the given meta model
- a server-based repository that can be used for management and provisioning, and thus for the standardization of information models
- code generators that facilitate the creation of solutions based on different environments (e.g. Eclipse Smart Home, openHAB, OSGi-DAL)
Industry benefits of Vorto
Let’s assume vendor A creates a new Z-Wave smoke detector which can measure the temperature, retrieve battery status and also sound an alarm in the event of fire. Using the IoT tool set, vendor A creates a corresponding information model that describes the three functionalities. After creating the information model, vendor A publishes the model to the information model repository. Now user B, who bought one of the Z-Wave smoke detectors, wants to include it in his openHAB environment. Using the IoT tool set, he can browse the repository to find the information model created by vendor A. After downloading it, user B could create the openHAB representation of the device with the help of a specific code generator. In a final step, user B completes this representation by adding required Z-Wave configurations.
In another scenario, user C wants to access the smoke detector using an OSGi-device abstraction layer. User C also downloads the information model using the IoT tool set and creates an implementation skeleton using another OSGi-specific code generator. The specific code can then be added within the created skeleton.
Why open source? And why Eclipse?
The main focus of the project is to push the standardization of information models. In order for this process to succeed, I believe a large number of stakeholders need to contribute their ideas and voice their requirements. So that a very large community of diverse stakeholders can influence the meta model, the tooling, and the functionalities of the repository, we decided to realize this in the context of an Eclipse open source project. On the one hand, the Vorto project could benefit from the experience and the visibility of the Eclipse IoT working group within the IoT sector. On the other, the project could be very interesting for the working group itself. Since large parts of the initial contributions are based on Eclipse frameworks (e.g. Eclipse Platform, Eclipse EMF), the project can easily be enhanced by developers who are experienced with these technologies.
I am looking forward to receiving your feedback and comments in the community. We aim to provide the initial source code contribution by the end of November 2014. The initial contribution will include:
- a preliminary version of the described meta information model, based on Eclipse EMF
- a set of plug-ins to support the information model language, including an integrated editor in the Eclipse IDE, auto completion, syntax highlighting, content assistance
- a code generator extension point that allows for easy integration of third-party code generators for information models into the tool set