×

Status message

This proposal has been approved and the Eclipse Bridge.IoT project has been created.

Eclipse Bridge.IoT

Basics
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Parent Project: 
Background: 

While the Internet of Things is a vibrant and fast-growing sector in IT business, it evolves in a very fragmented way:

At the moment, a multitude of IoT platforms are available focusing on different domains, targeting different geographical regions and offering heterogeneous vendor- or consortium-specific APIs with varied functional range. Hence, most of these IoT platforms are used only for a restricted set of applications (vertical silos). Until now, harmonization attempts towards IoT ecosystems failed because of the large number of stakeholders involved in IoT ecosystems, namely thing providers, platform providers, service providers, developers, and users. For a single stakeholder the potential gain for establishing such a collaborative IoT ecosystem is low, while the risk is high not to reach the critical mass of market share.

The lack of widely accepted standards is a real hurdle for the invention of advanced IoT solutions dealing with cross-platform and cross-domain services and applications envisioned for the future of IoT business. Developers have to negotiate access to platforms and their IoT assets individually and need to adapt to the platform-specific API and information models. Having to do these efforts for different platforms and domains, makes such solutions quickly very expensive and thus infeasible. This fragmentation of the IoT and the missing interoperability result in high entry barriers for application and service developers, and currently prevent the emergence of cross-domain IoT ecosystems. The lack of interoperability also results in lost business opportunities and prevents innovative business ideas.

To overcome this situation, IoT platform and service providers require a simple, established way to offer and sell access to their assets. Marketplaces that enable providers to monetize access to their resources (data and services) are not yet available. Once these marketplaces are established, developers will be able to easily create advanced IoT services and applications and build their products around these. Revenue streams can then be shared across all contributing entities in an economically fair manner. A key task of a marketplace is to provide extended functionalities to enable the advertising, dynamic discovery, subscription and negotiation of access to resources in an automatically orchestrated manner, facilitating true collaboration among ecosystem stakeholders.

 

 

 

 

Bridge.IoT was initiated by the BIG IoT (Bridging the Interoperability Gap of the IoT) project that is part of the European Union’s Horizon 2020 research and innovation programme.

The intention of the Bridge.IoT project is to enable the emergence of cross-platform, cross-standard, and cross-domain IoT services and applications towards building economically viable IoT ecosystems. These ecosystems will connect platform and service providers as well as the consumers of those. IoT platforms and services are enriched with a common interface, the Bridge.IoT API, which offers the required set of functionalities to offer resources (data and services) on the Bridge.IoT Marketplace and to discover and subscribe to those resource offerings via the marketplace.

Scope: 

The goal of the Eclipse Bridge.IoT project is to enable harmonization across IoT platforms, and to develop a suitable IoT marketplace for platforms and services as providers to trade available resources (data and services). IoT applications or services as consumers of resources can use the marketplace to discover them and access them in real-time.

Therefore, the Bridge.IoT project provides three elementary components:

  • Bridge.IoT Marketplace – a reference implementation including the marketplace API, a basic Web portal as well as the core backend functionality.
  • Bridge.IoT Provider Lib – an SDK for marketplace interactions (registration) and an API to be deployed/integrated by providers to allow consumers direct and secure access to registered resources.
  • Bridge.IoT Consumer Lib – an SDK for marketplace interactions (discovery and subscriptions) and to access resources of providers.

The Bridge.IoT Marketplace is the central component in context of Bridge.IoT. It allows providers to register their offerings (based on semantic descriptions) and consumers to discover and subscribe to relevant offerings (based on semantic queries) at run-time. The marketplace also provides accounting support for consumers and providers to track the amount of resources accessed, as well as a Web portal for developers and administrators to support the integration/implementation of their platforms, services and applications and the management of their offerings, queries and subscriptions respectively.

The Bridge.IoT Libs encapsulate access to marketplace functionality (for both consumers and providers perspective), and to directly access resources on a provider (form a consumers perspective). Furthermore, the Bridge.IoT Provider Lib implements (or supports integration of existing) APIs with a callback interface to be implemented by providers to make their resources accessible to consumers in homogeneous manner.

It is out of scope to create and implement an additional IoT platform.

Description: 

The Eclipse Bridge.IoT project aims at igniting an IoT ecosystem by introducing an API (Bridge.IoT API) for interoperability and an online marketplace (Bridge.IoT Marketplace) for providers to offer and monetize their IoT resources (data and services) and for consumers to discover them and access them from their applications and services.

Bridge.IoT proposes an architecture for IoT ecosystems that places an open marketplace for IoT platforms and services (as providers trading resources) at its center. IoT applications or services as consumers of resources can use the marketplace to discover them and access them in real-time. The architecture is centered around a common set of interfaces (Bridge.IoT API), that are supported both by resource providers and consumers, as well as the marketplace, where resources are traded.

 

 

The Bridge.IoT API offers the following core functionalities:

  1. Identity management to enable users (developers, administrators) to self-register their organizations and create provider and consumer instances along with the necessary IDs and credentials
  2. Registration of resource offerings, to allow providers to offer and advertise their assets on the marketplace
  3. Discovery of resources according to consumer-defined search criteria (i.e. queries) at run-time
  4. Access to offered resources on a provider instance by means of request/response or streaming protocols
  5. Vocabulary management for semantic descriptions of offerings, queries, input/output data, etc.
  6. Security management including authentication, authorization, and key management
  7. Accounting of access to resources, which allows the monetization of assets through charging and billing

To become Bridge.IoT compatible, providers of existing platforms just need to implement the Bridge.IoT API beside their existing (and often proprietary) API or deploy a Bridge.IoT Gateway Service (using the Bridge.IoT Provider Lib) for their existing platform. This puts service providers and application providers in the position to develop overarching solutions.

To lower the hurdle of using the Bridge.IoT API, it is envisioned to offer developers easy to use SDKs - the Bridge.IoT Lib - that reduces the time and efforts for developers to interact with Bridge.IoT ecosystems. The Bridge.IoT Lib consists of a Provider Lib and a Consumer Lib part. It translates function calls from the respective application or service logic, or the platform code into interactions with the marketplace, or peer-services/-platforms. The Provider Lib allows a platform or service to authenticate itself on a marketplace and to register offerings. The Consumer Lib allows an application or service to authenticate itself on a marketplace, to discover available offerings based on semantic queries, and to subscribe to offerings of interest.

As a result, the Bridge.IoT Lib should be available for the software platform and the programming language of a consumer or provider. For the time being, there is a Java implementation of the Bridge.IoT Lib. With the support of the Eclipse community, it is intended to grow the number of Bridge.IoT Lib implementations for different software platforms and programming languages.

Why Here?: 

Beside harmonization of existing IoT platforms (by encouraging their providers to implement the Bridge.IoT API), the main focus of the Eclipse Bridge.IoT project is on establishing marketplaces for IoT data and services. At the time present, such a marketplace component is a missing building block in the Eclipse IoT landscape. This project aims to fill this gap. The success of this initiative depends on attracting a significant amount of IoT players that share the belief in open standards enabling cross-platform and cross-domain services and applications. This is not just the platform providers that have to implement the Bridge.IoT API but also service providers that are willing to offer access to their data on Bridge.IoT marketplaces as well as the developers that are attracted by the advantages of the Bridge.IoT API.

The Eclipse IoT Working Group has a high visibility among all kinds of IoT players and the community around Eclipse IoT has a lot of experience in the IoT sector, from which the Bridge.IoT project can profit. On the other hand, the Eclipse IoT community can benefit from standardization efforts of the Bridge.IoT initiative.

With respect to other Eclipse IoT projects, we see the following interesting connections:

  • Eclipse Vert.x could be an enabler for additional implementations of the Bridge.IoT Lib for different programming languages.
  • Eclipse Paho and Eclipse Mosquitto are candidates to enable MQTT for the data access established between consumer and provider.
Project Scheduling: 

Initial contribution in Q1 2018.

Future Work: 
  • Extend the functionalities of the Eclipse Bridge.IoT Lib and the Marketplace
  • Provide further implementations of the Bridge.IoT Lib for other software platform (e.g. Android) and other programming languages (like Javascript, ...)
  • Provide a reference implementation of a Bridge.IoT Gateway Service (for easy integration of existing platforms and services)
  • Provide a reference implementation of a Bridge.IoT Proxy Service (for integration of resource constraint platforms)
  • Provide reference implementations of Bridge.IoT Platform Adapters (i.e. platform-specific extensions based on the Lib) for a selected IoT platforms
  • Provide further examples and demo applications
People
Committers: 
Andreas Ziller
Martin Lorenz
Philipp Kirisits
Klaus Cinibulk
Daniel Posch
Darko Anicic
Aparna Saisree Thuluva
Sebastian Kaebisch
Hoan Quoc
Achille Zappa
Source Code
Initial Contribution: 

The initial contribution will include first implementations of the following components:

  1. Bridge.IoT Marketplace consisting of the following functionalities:
    • Basic Web Portal: for Marketplace user (e.g. developers) to sign-up, register offerings, make queries, subscribe to offerings, etc.
    • Marketplace API: for Providers and Consumers to register offerings, make queries, subscribe to offerings, etc.
    • Exchange: to manage offerings and queries and performs the discovery of offerings
  2. Bridge.IoT Provider and Consumer Libraries in Java 7/8
    • Provider Lib: for developers of IoT platforms and services, to become Providers of the Marketplace
    • Consumer Lib: for developers of services and applications, to become Consumers of the Marketplace
  3. Examples Code:
    • Examples on how to implement Providers and Consumers by using the Bridge.IoT Lib
Source Repository Type: