How many different APIs do you need to turn on a light?
- Posted: Apr 15, 2016 at 6:00AM
IoT was big at Build this year as you might expect, but one of the announcements/projects seemed to fly a little under the radar, Open Translators to Things (OpenT2T) talked about in this session, Windows in the Smart Home: The Internet of Things and UWP.
So let's give OpenT2T some C4F love... :)
To help application developers more easily interact with the “Things” (e.g. light bulbs) around them, I am delighted today to introduce an alpha version of our new open source project Open Translators to Things (OpenT2T) on GitHub. Our goal is to enable application developers to write once, in an open and interoperable way, the exact same code to access functionalities that are shared across similar Things.
With this blog post, we introduce this new project and invite developers to take a look, check the code demo video, and hopefully join in making this open source project a success.
There are just too many different APIs that application developers need to use today to control very similar “Things” created by different manufacturers or by using different protocols. It was my honor to participate in Santa Clara in the Internet Architecture Board Semantic Interoperability workshop three weeks ago with 40+ participants (from OCF, AllSeen, W3C, Eclipse, OGC and others) to discuss this exact subject. At the workshop, I said that I would share some initial work we are doing on this to inform the conversation.
How many different APIs do you need to turn on a light, or read a temperature?
Things” start with schemas
We believe instead that developers should access a common “schema” across similar Things (e.g. a “Thermostat” or a “Light” schema) with specific properties (e.g. “Temperature” or “OnOff”).
Translating a “Thing” to a common schema
Complementary to “schema” efforts, we also need a “translation” effort: We believe that the task of accessing the specific protocol calls supported by individual Things and turning it, here for example, into the Temperature or OnOff properties, is the job of a “translator” — a small piece of code that takes the input/output of an actual Thing and translates it into a common schema for application developers to access.
The application experience
Application developers (client or cloud apps) can write the same code to control similar devices from different manufacturers, in an open and interoperable way. Developers achieve this by referencing the single category schema associated to similar Things and use the same function call defined by that schema to control them.
For example, suppose you want to write an application to read the temperature from a Texas Instruments CC2650 Sensor Tag. Here are the steps to do this, from the OpenT2T project:
Where we are right now and next steps
As an alpha project, we’re actively developing per our roadmap. Help us develop, test, and file issues. Keep in mind that it’s not ready for real deployment yet. The project is in the following six parts:
How to get involved and join the discussion
Our hope is that developers will check out the project, view an end user and code demo videos, read the tutorial, ask questions, and contribute a first translator for their favorite hardware and overall to the project (please check our initial roadmap).
We are looking forward to continuing the discussions about Translation to Things in the Open Connectivity Foundation and with other groups, such as the Internet Architecture Board Semantic Interoperability workshop participants. Grounding those discussions around real code will help us tremendously.
We also checked the interest of other IoT developers and manufacturers in many companies in this space and many of them agreed to continue the conversation in the GitHub project. Among them are Sol Salinas (Accenture), Sergey Grebnov (Akvelon Inc), Acer, ASUS, David Plans (BioBeats), Dell, Lenovo, John Cameron (LIFX), Daniel Quant (Multitech), Brad Ree (Nortek), Jonathan Pickett and Charles Prakash Dasari (Schakra Inc.).
Today, we have pushed some alpha code on GitHub to start the conversation around translating Things to common schemas. In time, we hope OpenT2T becomes a vast repository of crowd-sourced cross-platform translators supporting a broad set of hardware Things and constantly curated by a thriving community where similar translators can compete, collaborate, combine, or diverge. Everyone could write a new translator to support a new hardware, from industry organizations to startups, from manufacturers to students, from enterprise to hobbyists. Translators can and will be forked, cloned, patched and discussed publicly: the proven dynamics of open source development will make the best translators associated to the best schemas emerge and provide long-term sustainability.
Any platform. Protocol Independent. Runs on Devices, Gateways or Cloud. Home or Industry.
When similar hardware devices are translated to the same schema, Apps, Cloud rule engines and Voice assistants can target common schemas to provide consistent and delightful experiences.
- Get Started with our step by step guide
- Play with the bits and file issues
- Check out our Roadmap
- Join the #OpenT2T twitter discussion and follow us on GitHub
- Project Overview
- Sample Apps
- Translators on GitHub
- Presentation at the Build Conference (starts at 11'30")
- Paper presented at the Internet Architecture Board (IAB) Semantic Interoperability Workshop March 2016
Open Translators to Things Pillars
This is a quick video we put together to showcase how Open Translators to Things can help users and developers. Do check out other resources available on opentranslatorstothings.org and on github.com/openT2T.
This is a step by step guide to writing your first translator
Get involved at Open Translators to Things...