Ponte - M2M Bridge Framework for REST developers
The Ponte project is a proposed open source project under the Eclipse Technology Project.
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 Eclipse community. Please send all feedback to the Eclipse Proposals Forum.
The advent of the World Wide Web revolutionized the way we work, communicate, socialize, and how business is done: the Internet has become one the most pervasive technology. Recently, smartphones and mobile broadband enabled us to carry the Internet in our pocket, seamlessy integrating it in our lives. However, everyday objects remain disconnected from the virtual world, while the "Internet of Things" (IoT) movement is exploring how to interconnect them. This technology shift is supposed to be greater than the advent of mobile phones, and a 2020 scenario where non-phone interconnected devices will be 10 times the phone devices (50 vs 5 billions) is foreseen.
Billions of interconnected devices is a challenge for the whole Internet and for the objects themselves, and in order to operate at that scale several major issues should be resolved. Billions of interconnected devices is a challenge for software developers: every device must be able to communicate to every other possible device. However, there is no lingua franca between all these devices. The devices, often called Machines, can be divided into sensors and actuators. Sensors reacts to events from the real world, while actuators reacts to events from the virtual one. Thus, event processing is a core feature of every IoT project. Most event processing systems are built around the popular publish/subscribe pattern. As of today, there exist several protocols for interconnecting machines, and they all fall under the label Machine-To-Machine (M2M). The requirements of machines and people are distinctly different, and it may be hard to define a protocol and the associated best practices to statisfy both of them. However, we can address these compelling requirements by bridging these protocols, and let developers access the M2M world from within their comfort zone.
See also: Introducing the QEST broker: Scaling the IoT by bridging MQTT and REST M Collina, GE Corazza, A Vanelli-Coralli - Personal Indoor and Mobile Radio Communications, 2012.
Matteo Collina's Presentation at EclipseCon France 2013: "Exposing M2M to the REST of us"
The scope of the Ponte project is threefold:
- Define a simple REST API to expose the machines needs through REST, exposing multiple protocols (MQTT, CoAP) through the same API.
- Embrace multiple data formats, such as JSON, XML, Msgpack, Bysant and provide ways to automatically convert between them; eventually, common representation of sensors and actuators data will be defined (or adopted from Paho).
- Define and build a user-driven security solution to support the communication between all these devices.
DescriptionThe following are the plan items for the Ponte project:
Build a reusable solution for bridging several M2M protocols to REST:
- Formalize a REST API for reading, writing and accessing the history of sensors and actuators.
- Expose the MQ Telemetry Transport, also hosted within Eclipse, through the REST API.
- Expose the Constrained Application Protocol (CoAP), which is being standardized by the IETF, through the REST API.
- Define an internal API for adding new protocols easily, through plugins.
- Define a a JSON-based support for message formats, and add converters between them. The converters API should be exposed to Ponte through plugins.
- Study an OAuth 2 solution that can be embedded inside the machines, to allow the end user, and eventually the owner, to authorize or deny every access.
In recent years, Eclipse has attracted several machine-to-machine projects, such as Paho, Koneki and Mihini. Thanks to all these contributions, the Eclipse Software Foundation has built an thriving community of M2M developers. The initial contribution of Ponte is based upon QEST, which is developed as part of Matteo Collina's Ph.D. This project has the aim to build a platform to make the developing of new, M2M solution easy for web developers.
As QEST is built on top of Node.js, the framework dependency needs to be approved. Moreover, the permission of moving QEST to Eclipse will be needed by the University of Bologna.
The following individuals are proposed as initial committers to the project:
- Matteo Collina, University of Bologna
We welcome additional committers and contributions.
The following Architecture Council members will mentor this project:
- Benjamin Cabé, Sierra Wireless
- Ian Bull, EclipseSource
The following individuals, organisations, companies and projects have expressed interest in this project:
- University of Bologna
- Sierra Wireless
- Gregor Schiele, Digital Enterprise Research Institute
- Andy Piper, Eclipse Paho project co-lead
- Werner Keil, Eclipse UOMo Project lead
- Toby Jaffey
- Rupen Patel, Mercurium
- Niranjan Shukla, Accenture
- Vatsal Shah, Litmus Automation
Changes to this Document
|18-Jul-2013||One more interested party|
|03-Jul-2013||One more interested party|
|12-Jun-2013||One more interested party|
|06-Jun-2013||Added "Exposing M2M to the REST of us" presentation done at EclipseCon France 2013|
|27-May-2013||Added new mentor and interested parties|
|24-May-2013||Added interested parties|