Skip to content
Alexandr Krylovskiy edited this page Nov 7, 2014 · 7 revisions

The purpose of the Device Catalog is to provide a registry of available IoT devices and the resources they expose in a specific deployment. It exposes a simple JSON-based RESTful API, which is intended to be used by:

  1. Device Gateways to register the available devices and their resources
  2. Applications to discover these devices and learn how to talk to them

The distinguisment between Devices and Resources is the following:

  • Device is a physical “IoT” device with communication capabilities 
(or a similar virtual abstraction) providing a “native” communication protocol or an API (also proprietary) and exposes various Resources (sensors, actuators) over it
  • Resource is an abstraction of a resource hosted by a Device, which has a state that can be obtained and/or manipulated. The access to this state is provided and managed by the hosting Device

To describe heterogeneous IoT devices with different capabilities, the Device Catalog uses a Registration format that is not restricted to a specific communication protocol or data format exposed by devices. This is achieved by separating the metadata and capabilities of devices from the actual protocols and data formats used for communication with them, and by avoiding strict restrictions on the Registration schema.

Furthermore, the Device Catalog API is based on JSON-LD, which allows for a clean and readable JSON API, and at the same time makes it possible to use Semantic Web/Linked Data where needed. The semantic metadata can be embedded directly in the registrations describing devices and their resources, to be later used for search.

In the current implementation, we tested the Device Catalog to describe devices exposing resources over REST and MQTT, using plain-text and JSON data formats. Even though the API is JSON-based, the Device registration format can describe devices exposing data in XML and other “non-JSON” formats by providing external references to them (e.g., a URL to the XML schema).

Current implementation of Device Catalog offers a simple search/filter API, such that applications are able to find the devices they are interested in by various criteria. A more complex API (e.g., based on elastic search) might be implemented in the future.

Because the Device Catalog API is very lightweight, we consider different implementations of it using different backends and running on different hardware. Moreover, we distinguish between a local catalog running on the Device Gateway with read-only API exposing local devices and a “global”, network-wide catalog having information about devices from the whole network. Both kinds of catalogs are exposing the same API for registrations retrieval and search, and the global catalog is expected to additionally provide a more powerful search API.

For more details on the data format and the API, please refer to Device Catalog API.