Eclipse Vorto – smart approach on getting products connected
One year ago we initiated the Eclipse Vorto project, and provided initial sources that now serve as the technical basis of today’s Vorto components. Since then, we have learned a lot, gained plenty of valuable experience, and of course implemented a range of new features. Now just before the year draws to a close, we would like to review the work that has been done over the past few months and provide some ideas for the future.
What have we achieved?
In addition to the components that were part of the initial contribution, we have set up an introductory version of the Eclipse Vorto Repository. Its contents (information models, function blocks, entities, and enumerations) can be browsed using the web user interface. Every model has a details page that provides additional information about the DSL and model dependencies. Models can also be uploaded or downloaded using the web UI or a REST interface that allows them to be integrated directly into specific solutions.
The current version of the Vorto Repository is hosted by Eclipse and features the IoT Toolset. This allows users to define entity models, enumerations, function block models, and information models. Entities are data types for describing specific data. Function blocks are reusable components that describe a set of attributes and functionalities; for example, a “Binary Switch”, a “Temperature Sensor”, or a “Motion Detector”. An information model describes a real-world device by grouping appropriate function blocks. Because the IoT Toolset is integrated with the Eclipse Vorto Repository, browsing the repository is easy and convenient. Models can be downloaded for modification or directly reused by means of drag & drop mechanisms. Code generators make it possible to transform these models into other formats. The generators that are already available allow for creating Markdown representations for documentation purposes, plain Java code, a web user interface, or those related to the Bosch IoT Suite. The source code for all Vorto components are publicly available on GitHub.
How is Eclipse Vorto used in practice?
As announced at the PTC LiveWorx Europe 2015, PTC® and Bosch Software Innovations have forged a technology alliance to facilitate integration of the ThingWorx® Platform and the Bosch IoT Suite. Both companies successfully tested the integrated technology stack in the Industrial Internet Consortium’s Track & Trace Testbed by wirelessly connecting tightening tools to operate seamlessly together on the factory floor. With the Track & Trace application, the status of all devices can be monitored on the fly. The data collected is used to optimize production processes and tool maintenance. Irregularities or impending failures are detected immediately and the faulty device can be replaced before it causes a production stoppage.
Because it allows developers to link devices across different platforms, Eclipse Vorto is the glue holding them together. In the live demonstration at PTC LiveWorx Europe 2015, we showed how a Nexo Nutrunner can be monitored and controlled from a ThingWorx® Mashup via ProSyst’s mBS stack for gateways and/or the ProSyst mPRM backend.
This scenario involves two Vorto code generators. The first one creates a ThingWorx® Solution Model, comprising the abstract and dynamic “Thing API” (application programmer’s interface). The second creates a code skeleton that significantly reduces the effort Bosch needs to devote to integration.
Bosch Corporate Research
The Bosch Corporate Research division is currently creating an Eclipse Vorto representation of a sample vehicle-to-cloud interface. They are also implementing a code generator that makes it possible to create a CoAP-based integration between a CCU and a third-party device. The idea is for this to result in the information model mentioned above and also serve as a complete showcase for demonstrating how the automotive industry can benefit from Eclipse Vorto.
Smart Device Template
Telekom Innovation Laboratories supports the Eclipse Vorto project as it drives forward the concept of information models for connected devices – models that are accessible via a shared repository and can be mapped or directly expressed in a standardized format and language. Currently, the focus is on compatibility between the Vorto Meta Model and the Smart Device Template (SDT), which was created by HGI and is currently contributed to oneM2M. The idea of the SDT, which is based on XSD, is to be able to model any type of connected device using a widely accepted and standardized format. Its primary use is to enable a uniformly structured API for applications that need to interact with connected devices.
The SensIDL (Sensor Interface Description Language) project supports sensor and receiver developers in specifying and implementing communication interfaces. With the goal of easing sensor integration, it focuses on specifying and documenting the data transmission of energy-efficient wireless sensors. The SensIDL project comprises a domain-specific language for developer-friendly payload specifications, a communication framework for (de)marshaling, and code generators for different programming languages. It comes with an integrated tool chain and a reference demonstrator. The project is driven mainly by two research institutes: the FZI Research Center for Information Technology and the Hahn Schickard Institute for Micro- and Information Technology.
SensIDL and Eclipse Vorto have complementary perspectives and overlap in specifying, sharing, and transmitting sensor information. Both projects collaborate on developing the compatibility of their description meta-models. A first step is creating an Eclipse Vorto code generator, which allows connecting Vorto Information Models and Mappings with SensIDL payload specifications.
What are we planning?
Cloud-based solutions are becoming more and more important for the IoT domain, with buzzwords like SaaS, PaaS, or microservices frequently heard. This trend of course also affects the field of device abstraction and integration, an important pillar of the IoT domain. Against this backdrop, we have to ask two questions:
“How can we make using Eclipse Vorto even easier and more convenient? And how can we build up an ecosystem related to the topic of device abstraction?”
One of our answers is to add more features to the Vorto Repository. For example, the code generators should be realized as microservices that register automatically and during runtime to inform the repository about their capabilities. Users should be able to easily download the generated source code with the Eclipse Vorto Toolset, a web interface, or a command line interface tool. In addition, the repository should provide statistics about the popularity of generators and device models.
These features increase the flexibility and also the usability of the solution. Statistics related to the code generators and the information models will allow us to discern what features are truly needed and what can be dropped. Of course, this is only one idea – and we are looking forward to getting additional feedback from the OSS community.
The Eclipse Vorto project is a classical OSS project, and therefore all materials related to this project are publicly available. This includes the source codes, the documentation, the homepage, etc. You can find more information about Eclipse Vorto by following the links below: