udmi

UDMI / Docs / Specs / Sequences / Discovery

Discovery Sequences

The basic discovery device message sequence follows a standard config/state call/response mechanism, with slightly different parameters for each different mode of operation. During the process, there’s two major devices involved: the enumerated node (the thing with the refs that are being described), and the discovery node (the thing that is doing the scan, which does not exist in the self enumeration case).

There’s two basic kinds of discovery scan capabilities:

The passive and active scan configurations are not mutually exclusive, and can be setup to, e.g., continually perform a passive scan of a network while periodically actively probing for devices.

Likewise, a few different ways discovery enumeration can happen:

Scan State Phases

There are four phases that a discovery system can be in, as reported by the appropriate state block.

If both an active and passive scan are configured, then the reported phase should be passive until the active phase applies (so there would be no pending phase indicated).

Passive Scan

A passive scan is the mode for a system that can passively monitor traffic and deduce scan results, so there is no strict need for a sporadic/periodic scan. This might be a system that, e.g., monitors network ARP requests or transient BACnet traffic.

The passive_holdoff_sec field indicates the duration within which a scan result for a given device should not be repeated. E.g., if a device is passively detected every 30 sec, but the scan interval is 60 sec, then the result would only be reported for (approximately) every other detection.

Active Scans

(Note: the information below is provisional and known not accurate… pending a documentation update!)

Sporadic Scan

a sporadic scan is used to trigger an on-prem agent (often an IoT Gateway) to scan the local network for devices. Depending on the system, this might encompass a number of different network protocols (e.g. BACnet, IPv4, etc…).

At this point, the config generation entry can be removed with no effect, or updated to initiate a new scan.

Periodic Scan

A periodic scan is like a sporadic scan except that the scan automatically occurs due to a predefined interval (rather than individual trigger config_s). This allows for repeated scans without any _config changes.

Note that the scanning should occur at intervals directly determined by the config generation timestamp plus integral increments of the scan interval, i.e. Ts = Tc + N*Ti, so that there is no clock drift. E.g., it should be possible to setup a schema to scan every day exactly at midnight.

Enumeration Mechanisms

Self Enumeration

Self enumeration is used for a device that is already registered in the cloud systems (no scan required), and can be explicitly directed to enumerate itself. This also applies to all direct-connect (not proxy) devices (which likely can’t be scanned anyway)

With self enumeration there is no specific stop state, as the system deterministically sends a single device’s discovery events corresponding to the config trigger.

Scan Enumeration

Scan enumeration comes bundled with a discovery scan of some kind, triggered by the enumeration field in the start config indicates that the system should also then automatically enumerates each device encountered.

Error Handling

There’s different ways to report errors, depending on the scope of the error.