A couple of days ago the IESG approved Constrained Application Protocol (CoAP) specification, the base specification for a lightweight variant of HTTP, coming from the CORE working group. This seems like a good opportunity to talk about a collection of techniques that I call the Web of Things. The Web of Things is about the use of the web technology for building communication capabilities for smart objects. I believe this is an important, easily available framework for this purpose.
Along with advances in making smaller microelectronics devices and low-power radio communications, the Web of Things is likely to have a big impact in the Internet of Things revolution. Yet, the Web of Things has progressed largely under the radar, because it is largely existing technology that is finding new uses. But I believe it is important we talk about it and realize its full potential. And that potential is big, similar to widely discussed technologies such as Software Defined Networking (SDN).
The core idea in the Web of Things is to represent the real-world objects as resources and interact with them using Representational State Transfer (ReST) style of communications. In other words, using all the normal tools that we already have for building the various web applications. These tools include:
- IP itself, running on top of any link technology
- HTTP and TCP, or CoAP and UDP
- Data formats such as XML and JSON
- TLS and DTLS for security, along with the necessary data object security mechanisms
- Directory and discovery mechanisms such as Core Link Format or Resource Directory
- Application-specific resource definitions, such as the IPSO template or Smart Energy Profile 2.0
Given these tools, smart objects around us can communicate in an easy manner. In particular, there are tools and large number of people with experience on this technology. The communications protocols are known to work well in all networks. For instance, firewalls are likely to pass web traffic through for other reasons. And the web stack is surprisingly well suited for small devices. The picture at the top of this article shows a high-tech weight scale that I bought couple of years ago. This device uses Wireless LANs and the web protocol stack to communicate with the measurements database. With CoAP and perhaps some header compression at the link layer, these communications can be even more optimised.
More generally, when I look at technology deployment I see a pattern. Technologies that are easily available, free, work well in 90% of the cases, and that can be easily extended are usually the ones that end up being deployed quickly. Technologies that require multiple parties to agree or technologies that are highly optimised but targeted for narrow applications tend to lose. In this case the ability to deploy devices in any network, connect them to servers on the other side of the Internet is compelling for many developers.
The ability for everyone to easily package these new services as part of bigger application systems is also compelling. We often focus far too much on the devices and the communication link to them. For most applications this is just one small part of the overall system. There are other important components, such as databases, user interface servers, smartphone applications, and integration to other systems – such as social network applications. Typically, all these other components are based on web services.
As a result, building Internet of Things applications on the web services stack is easy, requires no permission from anyone, and is likely to be the cornerstone of most applications. The devices around you are probably using the Web of Things already, and there will be even more of them in the future. This is also a topic that several standards organisations around the world are looking at. In addition to the IETF, W3C has a group to look at what new is needed to support this, OMA is doing work on lightweight device management, IPSO and ZigBee have worked on profiles, and so on.
What is it then that remains to be done? I think we at the IETF should focus on building the framework and leave the specific applications, resource definitions, and link layers to others who are in a better position to understand their particular requirements. And as noted, much of the framework is already in place. But I believe there are areas where further work is needed. The world has just begun to map out what standards are needed in order for the resources and data formats to be compatible for specific applications. IPSO and ZigBee work on the application templates is a good start, but more is needed. At the IETF, we only recently started the standardisation of discovery and directory services for these kinds of applications. The resource directory work in CORE WG is an important component of this, but there may be other similar components that provide “middleware” services in the form of ReST interfaces. This work needs to continue.
In conclusion, the Web of Things is a very powerful technology that makes it possible for developers to innovate and develop freely, minimizing the need to wait for other new components in networks, install new infrastructure, or redesign the way we build our applications. This technology is worth speaking about and worth putting into your devices.
Acknowledgments: Many people have worked on this topic. Zach Shelby was an early user of the term, and has worked on many of the underlying technologies, such as CoAP. But the underlying ideas date back to at least 2008
and there have been plenty of people who have worked on it. Others that I should mention include Cullen Jennings, Jan Höller, Carsten Bormann, Ari Keränen, Srdjan Krco, Hannes Tschofenig, and various people in the CORE working group, Internet Architecture Board (IAB), and the IPSO Alliance. This article is based on my presentation
at the IOT Week in Helsinki in June 2013, and on the IAB draft on smart object architecture