There are several ongoing initiatives that aim at standardizing protocols and interfaces in order to enable a truly interoperable Internet of Things.
On the protocol front, I would certainly argue that the technology is already there and over the last decade standards organizations like OASIS, IETF or the Bluetooth SIG have done a lot to provide clear specifications for, respectively, MQTT, CoAP, or Bluetooth Smart. Not only are these protocols mature, but they really are optimized for the constrained networks that make IoT. And of course, there is an always growing ecosystem of open-source implementations.
What is interesting to see though, is the work being done by the likes of the Allseen Alliance (with Alljoyn) and the Open Interconnect Consortium (with Iotivity) when it comes to:
- Advertisement/Discovery: while the aforementioned protocols provide ways to do one-to-many communications, this isn’t quite enough if there is no agreed upon methodology for devices and applications to make themselves known to the world,
- Interoperability: protocols like MQTT or CoAP provide you with what is more or less a simple bit pipe, that allow you to connect things to each other, while certainly not guaranteeing that they will understand each other. Implementing IoT communications is not only about making the data flow, but also, and more importantly, making sure the associated metadata (“what is this temperature’s unit?”, “oh, and by the way is this really a temperature?”) is understood by all the parties involved,
- Provisioning: it is important to be able to provision a brand-new device on an existing IoT network, and to be able to associate all the required security credentials that will make it able to speak with its peers. Security at the transport layer is one thing, having access to a flexible model for configuring secured communication channels is another, that initiatives like LwM2M or IoTivity are trying to address.
While it is hard to tell what will become *the* standard for IoT between AllJoyn, OIC, now Google with Weave – and certainly many others – it is however interesting to start evaluating the pros and cons of all these solutions. Interesting fact: since most of these initiatives are embracing existing protocols like CoAP or MQTT, it’s actually pretty easy to start coupling them to the Eclipse IoT technology.
In the video below, you will see how you can interact with IoTivity-compatible devices from Eclipse Smarthome, thanks to a dedicated binding1 which you can find here.
The videos goes through the following steps:
- Introduction to IoTivity
- 1:28 – Setting up SmartHome with the IoTivity binding
- 3:11 – Discover an IoTivity “thing”
- 6:16 – Manually configure a Kinoma Create exposed as an IoTivity “thing”
1. Please note that this is absolutely not production-ready 🙂 The OIC standard isn’t publicly available so this implementation is only covering basic use cases featured in the IoTivity examples. Also, this binding uses a slightly patched version of Californium to allow for multicast CoAP communications.