Interoperability is a major challenge for the Internet of Things (IoT). The real potential of IoT, like the potential of the Internet itself, lies in “systems of IoT systems” rather than IoT systems that operate as isolated technology silos. Real interoperability requires layers of standards, and each layer addresses different interoperability challenges.
Amazon Web Service (AWS) IoT, announced in October of this year, “is a managed cloud platform that lets connected devices easily and securely interact with cloud applications and other devices.” With AWS IoT, any organization, small or large, can develop message exchange infrastructure for IoT devices at scale.
AWS IoT supports MQTT, an open standard from OASIS. MQTT “was designed as an extremely lightweight publish/subscribe messaging transport. It is useful for connections with remote locations where a small code footprint is required and/or network bandwidth is at a premium.” There are many other network interoperability standards (LWM2M, CoAP, etc.) that enable message interchange, and AWS also supports some of these.
The figure above shows an IoT value chain from a standard layers perspective. Although AWS with MQTT addresses IoT network interoperability, it doesn’t address IoT data interoperability (or semantic interoperability). So, to put it another way, AWS IoT does address how IoT messages are exchanged over the network, but not how the exchanged messages can be used and understood by devices and applications.
The OGC SensorThings API is a candidate OGC standard that defines requirements for a standard API that when implemented provides IoT data interoperability. The API defined in the candidate standard is an extremely lightweight IoT Data Interoperability standard that uses both MQTT and HTTP REST.
The OGC SensorThings API and Amazon’s offering complement each other very nicely.
“Data interoperability” means the ability to meaningfully share data. Network interoperability has no value if the bits and bytes are delivered but can’t be interpreted, that is, if their meaning can’t be known. “Things” in the IoT are sensors and actuators that have locations, descriptions and instruction sets. Data provided by a sensor has a “data model” that needs to be published by the sensor so the data’s structure and content can be known.
SensorThings API is part of the well-established OGC Sensor Web Enablement (SWE) suite of open international standards. SWE standards are in use by many large-scale organizations such as NASA, NOAA, USGS, Natural Resources Canada, the World Meteorological Organization (WMO) and many others, including many private sector companies. Unlike the other SWE standards, however, the SensorThings API is specifically designed to be lightweight and “RESTful”. Most IoT developers need to quickly develop IoT applications without getting too deep into the complexities of geomatics and sensor semantics. Often these are near-real-time applications that will need to accommodate large numbers of devices and high transaction rates. If the developers implement SensorThings API, they can be confident that they are accomplishing those objectives while putting in place a good foundation for future expansion and integration with more “industrial grade” service-oriented location and sensor semantics platforms.
The OGC SensorThings API Standard enables organizations to build IoT solutions that can be used and understood by heterogeneous IoT systems. SensorThings API’s data interoperability complements Amazon’s message exchange. Used on top of Amazon’s IoT service, the SensorThings API provides a modern, scalable, flexible, elegant, and – most importantly – interoperable way to access and manage IoT observations and associated location data from heterogeneous devices.
AWS IoT, MQTT and many other network interoperability standards (LWM2M, CoAP, etc.) enable message interchange. However, IoT network interoperability doesn’t enable the systems that are exchanging messages to interpret those messages. To realize the many-to-many system-of-systems vision, IoT applications need to implement standard ways of communicating sensor locations, sensor and data parameters, and sensor instruction sets. This is what the OGC SensorThings API provides.