udmi

UDMI / Docs / Specs / Connecting

Connecting Devices to Cloud

There’s a number of different ways that an IoT device can be connected to the cloud. The “right” choice will depend on the specific devices and overall system architecture. This document describes the major models available in the UDMI world.

Abstract Framing

Abstractly, the goal is to connect on-prem devices with their cloud-based representations. In between there’s various bits of stuff that facilitate that connection.

On-prem             Cloud
        /---*---\
 [D1]---|       |---[D1]
        | stuff |
 [D2]---|       |---[D2]
        \---*---/

Connection Models

To achieve the basic abstract end-result above, there’s a number of different models that can be employed, depending on the particular device capabilities. For the most part, the result should be the same (as indicated in the abstract case), and if not then it’s a red flag for the result.

Direct

In some cases, devices can speak direct to the cloud. This requires that they have properly implemented a MQTT driver with proper UDMI message formatting. This capability is present in many “modern” devices available, and is the general gold-standard since it minimizes the overall number of system components.

On-prem       Cloud

 [D1]----*----[D1]

 [D2]----*----[D2]

Adapter

The adapter case, the end device itself doesn’t understand MQTT/UDMI, but is fronted by an adapter (D1') of some kind that translates from whatever the end device (D1) speaks. From UDMI’s perspective, there is no sense or awareness of the connection between D1 and D1' (it could be IP, RS485, or even RFC1149).

On-prem          Cloud

 [D1][D1']--*----[D1]

 [D2][D2']--*----[D2]

Gateway

For systems that have multiple devices that can be reached by a network of some kind (IP or otherwise, RFC1149 probably does not apply), an IoT Gateway can provide the same result with reduced overhead. The gateway device (G1) exists both on-prem and is represented in the cloud, but is transparent for end-to-end operation of the system.

On-prem              Cloud

 [D1]-\           /--[D1]
       [G1]-*-[G1]
 [D2]-/           \--[D2]

Gateway (singleton)

The degenerate case of a singleton (only one device) system could still use a gateway construct; however, this is ultimately less elegant since there is extra configuration and overhead required. In this case, the adapter model is preferred as it’s overall more clean (but a gateway would still be functionally correct). Many devices can be configured to be either an adapter or a gateway, so it might be the same hardware but different software setup.

On-prem              Cloud

 [D1]--[G1]-*-[G1]---[D1]

Aggregator (anti-pattern)

The aggregator model is essentially a “poor-man’s gateway” in that it has the same on-prem architecture but is treated differently in the cloud. In this case, all the data points from all the devices are aggregated together into one payload, using point-name encodings to differentiate points on the receiving end. The fundamental problem with this architecture is that it will not be able to support some back-end UDMI features that rely on devices being mapped as logical entities on the cloud end. This case is sometimes (unfortunately) required by limitations in some implementations, but is not considered UDMI compliant.

On-prem              Cloud

 [D1]-\
       [A1]----------[A1]
 [D2]-/