UDMI / Docs / Specs / Onboarding
Onboarding is defined as the overall flow required to have on-prem building devices properly feeding telemetry into a backend data pipeline. This consists of three main separable phases, each with a distinct role and function:
As an analogy, these phases correspond to biological eyes (discovery), brain (mapping), and arms (provisioning), and fall into the simple see, think, do adage: First you see something, then you think about it, and then you do something about it.
Each of these steps can be applied individually, and the continuous application of all of them together constitutes automation, which is a key step towards enabling highly maintainable systems. The absence of each is also indicative of certain specific failure modes:
flowchart LR
D[Devices]
A[Agent]
P[Pipeline]
D -- Pointset --> P
D -- Discovery --> A
A -- Provisioning --> P
A -- Mapping --> A
Throughout the UDMI (and beyond) framework, there are several different key concepts that tie everything together. Unfortunately, due to cross-systems and legacy reasons there aren’t unique terms for everything (sometimes the same thing has multiple names), but they do ultimately constitute a coherent system.
US-MTV-BRX423
):
site_name
(UDMI): term for the buildingregistryId
(IoT Core): Convention (although not universal) of having the registry be the designated siteAHU-1
): Identifier that nominally refers to the device across the entire ‘IoT’ domain, from
physical device through to a virtual back-end representation.
deviceId
(IoT Core)entity
(DBP)deviceId
(UDMI)localnet
(UDMI): Specifies various local addresses (IP, bacnet, etc…) for a device
bacnet
:IPv4
:macaddr
:iot
: Entity type as per above.deviceNumId
(IoT Core): Generated by IoT core when a device is instantiatedcloud_device_id
(DBP): How the DBP refers to the deviceNumId
guid
(DBP): Uniquely defines an entity within the scope of the data pipelineroom_temp_sensor
): Names a specific data point for the device. Ideally the names would
be the same, and a translation is needed/required when they are not.
Actors:
The device id
used in this mode is in an implicit form of bacnet-ABCDEF
that encodes
both the iot id (as seen in the cloud), and the fieldbus id (as used by bacnet).
%%{wrap}%%
sequenceDiagram
participant Devices
participant Gateway
participant Registry
participant Agent
participant Pipeline
Agent->>Gateway: Start Discovery Sequence
Gateway-->Devices: Fieldbus Discovery
Gateway->>Pipeline: Discovery Result
Pipeline->>Registry: Ensure Device entry
Pipeline->>Gateway: Gateway Config
Pipeline->>Devices: Device Config
loop Quiescent
Devices->>Pipeline: Point Telemetry Event<br/>(via gateway)
end