Internet of Things Patterns
This is an excerpt of the pattern that was first published in [1].

Device Registry

Icon of the Device Registry pattern

Device model instances of registered devices are permanently stored for future reference. This allows static device metadata to be retrieved even if the device is offline, and simplifies the management of registered devices.

Aliases:

Resource Directory, Device Database

Context:

You have a number of heterougenous device that are connected to your backend. Each device has different attributes and functionality that might be of interest to other components.

Problem:

The number and kind of devices that are connected to a backend server may change from moment to moment. Other components which need to know about these devices may not know about all of them or find it hard to keep up with these frequent changes.

Forces:

  • Management: For management purposes it might be useful to have an overview of all devices connected to a platform.

  • Discoverability: In some cases, a particular device might not even be known and first has to be searched or discovered based on some information.

  • Decoupling: If other components get information about device directly from the device, they are tightly coupled to them. If the device is not working or is offline, this will fail. Besides, getting information from every single device creates a lot of traffic and uses the devices resources.

Solution:

Add all registered devices to a Device Registry. For the duration where their registration is valid, permanently store their device model. Make the device models accessable and queryable for other components through a standard interface.

Solution sketch of the Factory Bootstrap pattern

Solution Details:

This is an excerpt of a previously published pattern. The full pattern can be found in [1].


Benefits:
Drawbacks:

Variants:

Related Patterns:

Known Uses:

  1. L. Reinfurt, U. Breitenbücher, M. Falkenthal, F. Leymann, and A. Riegg, “Internet of Things Patterns for Device Bootstrapping and Registration,” in Proceedings of the 22nd European Conference on Pattern Languages of Programs (EuroPLoP), New York, NY, USA, 2017. Available at https://dl.acm.org/citation.cfm?doid=3147704.3147721