BACnet: Who-Is Node

The BACnet: Who-Is Node allows you to broadcast a Who-Is message and await I-Am replies from BACnet-compatible devices on your network.

BACnet: Who-Is Node Overview

Note: If you wish to use the BACnet: Who-Is Node, the Gateway Edge Agent must be started in host network mode, as this is required for sending the initial broadcast message.

Configuration

Configuration of the BACnet: Who-Is Node breaks down into three distinct sections.

Network Scan Config

There are a handful of optional properties you may configure for broadcasting, listening for replies, and holding open the request. All of the properties accept string templates or direct inputs.

BACnet: Who-Is Scan Config

  • Broadcast (Who-Is) Address Template: By default, the broadcast message will go out on the standard broadcast IP of 255.255.255.255. However, you may specify a different address if necessary.
  • Broadcast (Who-Is) Port Template: The “Who-Is” broadcast will go out on the default UDP port of 47808 unless another port is specified.
  • Incoming (I-Am) Port Template: “I-Am” replies will be listened for on the default UDP port of 47808 unless another port is specified.
  • Scan Time (ms) Template: By default, the node will pause workflow execution for 30 seconds (30000 milliseconds) to await “I-Am” replies to its “Who-Is” broadcast. You may optionally specify a different length of time in milliseconds. (Note: The specified time must be less than the agent’s MAX_EXTERNAL_CALL_TIME configuration option.)
  • Max. Devices Template: You may optionally specify a maximum number of devices to return. If the maximum number of returned devices is met before the scan time reached, the node will complete execution early and continue the workflow run.

Device ID Range

Optionally, you may set a minimum and/or maximum ID for the devices to return. Both must be integers greater than 0 (or templates resolving to such values). If both a minimum and a maximum are provided, the maximum must be greater than the minimum.

BACnet: Who-Is ID Range

Result

Finally, enter a payload path for where the result of the operation should be placed. The result will be an object with keys for each discovered BACnet instance ID. The value at each key is an object containing the device’s address, vendor ID, and other information.

BACnet: Who-Is Result

Node Example

In this example, we assume that the BACnet: Who-Is Node received two “I-Am” responses from devices with instance IDs of 6 and 7, resulting in an object placed at the defined Result Path of working.discoveredDevices

{
  "working": {
    "discoveredDevices": {
      "6": {
        "address": "192.168.2.56",
        "port": 47808,
        "forwardedFrom": null,
        "vendorId": 5678
      },
      "7": {
        "address": "192.168.2.57",
        "port": 47808,
        "forwardedFrom": null,
        "vendorId": 6789
      }
    }
  }
}

Node Errors

Most errors originating from the BACnet: Who-Is Node have to do with validation of the configuration after evaluating templates against your payload. In such cases, the workflow will throw an error and execution will stop.

Aside from that, the most common case that will lead to an error object being placed on your payload (and the workflow continuing execution) is if the BACnet client cannot be instantiated, usually for network-related reasons:

{
  "error": {
    "type": "BACNET_DISCOVER_ERROR",
    "message": "Network Unavailable"
  }
}

References

Was this page helpful?


Still looking for help? You can also search the Losant Forums or submit your question there.