> For the complete documentation index, see [llms.txt](https://docs.cybus.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cybus.io/connectors/shop-floor-connectors/bacnet/bacnetconnection.md).

# BACnet Connection Properties

## `localInterface` (string)

Local network interface bound by the BACnet listener thread. PROCESS-WIDE — all Connections in the same protocol-mapper instance share one UDP socket; the first Connection's value wins. Default behaviour binds the first non-loopback interface.

Default: `"eth0"`

Examples: `"lo"`, `"eth0"`

## `localPort` (integer)

Local UDP port bound for sending and receiving BACnet/IP frames. PROCESS-WIDE — see localInterface. Default 47808 (0xBAC0) per ASHRAE 135 Annex J. Change only when 47808 is in use; broadcast discovery (Who-Is) targets 47808 by convention so changing it limits interoperability.

Default: `47808`

Example: `47808`

Additional restrictions:

* Minimum: `1`
* Maximum: `65535`

## `deviceInstance` (integer, required)

BACnet device instance number (0-4194303). Routing uses deviceAddress (required); deviceInstance identifies the device in logs/metrics and is the device-object instance read by the connect and liveness probes.

Example: `27335`

Additional restrictions:

* Maximum: `4194303`

## `deviceAddress` (string, required)

Static device address as 'ip:port' (e.g., '192.168.1.50:47808'); port defaults to 47808 if omitted. The adapter uses direct addressing for all reads and writes. For BACnet/IP devices on a remote subnet, also set 'bbmd' and use the peer's address as seen from the BBMD's subnet.

Example: `"192.168.2.114:40426"`

## `bbmd` (object)

Register as a foreign device (BIBB F-A, FDR-only — never BBMD-serve) with the configured BBMD so the adapter can talk to BACnet/IP devices on remote subnets. The C-stack auto-renews the registration at TTL/4. PROCESS-WIDE: only one BBMD registration is active at a time; if multiple Connections configure different BBMDs in the same protocol-mapper instance, the last writer wins. For multi-site deployments, shard by site into separate protocol-mapper containers.

Properties of the `bbmd` object:

#### `address` (string, required)

Example: `"192.168.1.1:47808"`

#### `ttlSeconds` (integer)

Default: `600`

Additional restrictions:

* Minimum: `1`
* Maximum: `65535`

## `apduTimeoutMs` (integer)

BACnet APDU timeout (ms) — per ASHRAE 135 §19.5, time the C-stack waits for an ACK before retrying. Default 3000. Increase to 8000-10000 for legacy controllers (Trend IQ4, Andover Continuum, Desigo PXC100) on saturated networks. PROCESS-WIDE setting: the first Connection's value wins and later Connections that differ are ignored with a warning; coordinate across Connections in the same protocol-mapper instance, or run separate instances per device class.

Default: `3000`

Example: `3000`

Additional restrictions:

* Minimum: `100`
* Maximum: `60000`

## `apduRetries` (integer)

Number of times a confirmed APDU is retried before the C-stack gives up (per ASHRAE 135 §19.5). Default 3. Set to 1-2 on devices that respond deterministically; raise to 5+ for flaky links. PROCESS-WIDE setting (first writer wins; later differing values are ignored with a warning).

Default: `3`

Example: `3`

Additional restrictions:

* Maximum: `10`

## `sweepIntervalSeconds` (integer)

How often the listener-thread sweep reclaims invoke-ids from stuck transactions whose C-stack retry budget (apduTimeoutMs \* (apduRetries + 1)) has elapsed. Default 5 s. Lower this only if you see iid-pool exhaustion under sustained burst loads; the floor is 1 s. PROCESS-WIDE setting (first writer wins; later differing values are ignored with a warning).

Default: `5`

Example: `5`

Additional restrictions:

* Minimum: `1`
* Maximum: `60`

## `connectionStrategy` (object)

If a connection attempt fails, retries will be performed with increasing delay (waiting time) in between. The following parameters control how these delays behave.

Properties of the `connectionStrategy` object:

#### `initialDelay` (integer)

Delay (waiting time) of the first connection retry (in milliseconds). For subsequent retries, the delay will be increased according to the parameter incrementFactor which has a default value of 2.

Default: `1000`

Additional restrictions:

* Minimum: `1000`

#### `maxDelay` (integer)

Maximum delay (waiting time) to wait until the next retry (in milliseconds). The delay (waiting time) for any subsequent connection retry will not be larger than this value. Must be strictly greater than initialDelay.

Default: `30000`

Additional restrictions:

* Minimum: `1000`

#### `incrementFactor` (integer)

The factor used to increment initialDelay up to maxDelay. For example if initialDelay is set to 1000 and maxDelay to 5000 the values for the delay would be 1000, 2000, 4000, 5000.

Default: `2`

Additional restrictions:

* Minimum: `2`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.cybus.io/connectors/shop-floor-connectors/bacnet/bacnetconnection.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
