Overview
BACnet IP is the standard protocol for building automation systems (HVAC, lighting, access control). This guide covers discovering BACnet devices on your network and reading their data points in Mango by Radix IoT.
Prerequisites
- Running Mango 4.x or 5.x with the BACnet module installed
- BACnet IP devices on the same network (or routable subnet)
- Knowledge of your network’s BACnet configuration (broadcast address, port)
- A BACnet local device already created in Mango (required before you can create a BACnet data source)
Step 1: Create a BACnet Local Device
Nothing else works until this exists. The BACnet/IP data source will not let you save without selecting a local device, and the page you create one on is not in the navigation menu — which is why this step is easy to miss.
The page is hidden from the navigation menu. Open Administration → Admin home and use the Utilities panel, which lists BACnet local devices. You can also go straight to /ui/admin/bacnet-local-devices. Reaching it needs the Edit local devices system permission.
- Click Create new local device
- Set the Local device ID — the BACnet instance number Mango itself presents on the network. It must be unique across the whole BACnet internetwork; a duplicate is a classic cause of erratic discovery
- Set Local bind address (default
0.0.0.0) and Port (default 47808, the standard BACnet/IP port 0xBAC0). Broadcast address defaults to255.255.255.255and Subnet to 24 - If the devices you need are on another subnet, fill in the BBMD address, BBMD port and BBMD registration interval (seconds)
- Save the local device
Local bind address
This is the network interface Mango sends and listens on, and it is the single most common thing to get wrong.
On a server with one network card, the default is fine. On a multi-homed server — two NICs, a VM with several virtual adapters, a container host — the default can bind Mango to the wrong interface. Broadcasts then go out on a network with no BACnet devices on it, discovery returns nothing, and there is no error to tell you why. Set it explicitly to the IP address of the interface that faces your BACnet network.
Warning
Silent failure is the normal symptom of a wrong bind address. If discovery finds nothing and the firewall is open, check the bind address before anything else.
BBMD address
BACnet discovery works by broadcast, and routers do not forward broadcasts. If your devices sit on a different subnet from Mango, a BBMD — BACnet Broadcast Management Device — is what carries broadcasts across the boundary.
Mango registers with it as a foreign device: you supply the BBMD’s address and port (default 47808), plus a registration interval (seconds) that controls how often Mango re-registers (default 300). Let the registration lapse and the BBMD stops forwarding, so discovery that worked yesterday quietly stops. Leave all three blank when Mango and the devices share a subnet.
You will select this local device when creating the data source in the next step.
Step 2: Create the BACnet Data Source
- Navigate to Data integration > Data sources > + > BACnet/IP
- Select the Local device you created above. This is required — the data source will not save without one
- Set the remaining fields:
| Field | Value | Notes |
|---|---|---|
| Name | Your data source name | e.g., “Building A BACnet” |
| Update period | 60 seconds | BACnet devices are often polled less frequently |
| COV lease time (minutes) | 60 | Only used if you enable COV on a point; see Step 5 |
- Click Save
Note
There is no network configuration on the BACnet/IP data source. Local bind address, Port, Broadcast address, Subnet, Timeout (ms), Retries and the BBMD fields all live on the local device you created in Step 1, and are shared by every data source that selects it. The data source itself has only Local device and COV lease time (minutes), plus the usual name and polling settings.
Step 3: Discover Devices
- Save the data source first, then open its Device browser tab — the tab is only active once the data source exists and has a local device selected
- Click Start Who-Is. Mango broadcasts a BACnet Who-Is; Cancel Who-Is stops a scan in progress
- Devices that respond appear in the list as they answer
- Each device shows its instance number, name, and address. Use the filters — Device ID start, Device ID end, Vendor, Model, Name, MAC — to narrow a large result set
Note
Two things share this name. The Device browser tab on the data source is the one that feeds points into that data source. BACnet device browser is a separate page, also reached from the Utilities panel on Administration’s Admin home, which inspects any device against a local device you choose and is restricted to superadmins. There is no separate “discovery” view — Who-Is is run from whichever browser you are in.
Warning
If no devices are discovered, check that your firewall allows UDP traffic on port 47808. BACnet uses UDP broadcasts, which many firewalls block by default.
Step 4: Discover Objects on a Device
- Select a discovered device
- Select the device to load its Device objects — Mango queries it for all its BACnet objects:
- Analog Input (AI) - temperature, humidity, pressure
- Analog Output (AO) - setpoints, valve positions
- Analog Value (AV) - calculated values
- Binary Input (BI) - on/off status
- Binary Output (BO) - commands
- Binary Value (BV) - mode settings
Step 5: Add Data Points
For each object you want to monitor:
- Select the object from the discovery results
- Select the objects you want and use Add points. To add specific properties rather than whole objects, select them and use Add data points for selected properties
- Configure which BACnet property to read (usually Present value)
- Leave Use COV subscription off and poll instead. Change of Value sounds better than polling — the device pushes updates rather than Mango asking — but in practice most BACnet devices do not implement it correctly. Turn it on only for a device you have confirmed handles it, and expect to set COV lease time (minutes) so the subscription is renewed before it expires.
Tip
When bulk-adding points, add one point type per batch (all numeric, then all multistate, then binaries, then alphanumeric). Mango bulk-create uses a single type for the batch; mixing types can create the wrong point types and force delete/recreate.
Step 6: Understanding BACnet Object Types
Mango lists object types by full name in sentence case — “Analog input”, “Multi-state input”, “Trend log”. The abbreviations below are the BACnet convention you will hear from controls engineers and see in device documentation; they are not what Mango displays.
| Object Type | Abbreviation | Typical Use |
|---|---|---|
| Analog Input | AI | Sensor readings (temp, pressure) |
| Analog Output | AO | Control outputs (valve %, fan speed) |
| Analog Value | AV | Setpoints, calculated values |
| Binary Input | BI | Status (on/off, open/closed) |
| Binary Output | BO | Commands (start/stop) |
| Multi-state input | MSI | Status with multiple states |
| Schedule | SCH | Time-based schedules |
| Trend Log | TL | History logged on the device itself. Mango does not import that log: a point reads one property of the object |
Troubleshooting
No devices discovered
- Verify UDP port 47808 is open in your firewall
- Check the device is on the same subnet (or a BACnet router is configured)
- Try specifying the device IP directly instead of broadcast discovery
- Some devices have BACnet disabled by default - check device configuration
Timeout errors during object discovery
- Increase Timeout (ms) on the local device, not on the data source — Mango’s own error message says “try increasing your local device timeout setting”. The default is 6000 ms, with Retries at 2
- Raise Segment timeout (ms) (default 5000) as well for devices returning large segmented responses
- Some controllers with many objects can take 30+ seconds to respond
- Try discovering objects in smaller batches
COV subscriptions not working
- Not all devices support COV - fall back to polling
- COV requires the device to actively send updates - verify the device supports it for that object type