QBACnet Client v1.0.0

Use this plugin to connect Q-SYS to one BACnet/IP server device, allowing you to read and modify up to 20 existing BACnet objects. Keep track of object statuses, values, and monitoring in one centralized interface.

Index

Disclaimer

This plugin is not recommended for life-safety applications, including, but not limited to, fire alarm systems, smoke control systems, emergency evacuation systems, and other critical safety-related installations.

Prerequisites

The integrator is expected to have prior knowledge of the BACnet/IP protocol, including concepts such as object type, instance, BACnet properties, `Present Value`, write priority, and `COV`. This knowledge is important for correct configuration, validation, and operation of the plugin, as well as for ensuring a proper integration with the server device.

Demo Mode and Licensing

The plugin is fully functional in emulation mode, so you can test it for as long as needed to confirm compatibility with the server device.

A license is only required when the plugin is used on a Core. If the plugin is loaded on a Core without a license, it will show an unlicensed status and all controls will be disabled.

The plugin currently allows a total of 20 objects, which may be AV, AI, BV, BI, or MV objects.

To license the plugin, enter the license key in the License Key property. To obtain a key, visit Kyara Systems: www.kyarasystems.com.

BACnet Compatibility

This plugin is designed for interoperability with the essential commands and services required to read, write, and monitor BACnet points from a Q-SYS Core, without the need for external gateways.
Below is a list of the capabilities expected for full integration with the server device. Verify the server device PICS documentation to determine which capabilities are supported.

  • Data Link Layer:
    • BACnet/IP
  • Supported BIBBs:
    • Data Sharing - Read Property - B (DS-RP-B)
    • Data Sharing - Read Property Multiple - B (DS-RPM-B)
    • Data Sharing - Write Property - B (DS-WP-B)
    • Data Sharing - Change of Value - B (DS-COV-B)
    • Device Management - Dynamic Device Binding - B (DM-DDB-B)
  • Supported standard objects:
    • Device Object
    • Analog Input Object
    • Analog Value Object
    • Binary Input Object
    • Binary Value Object
    • Multi-state Value Object
    • Note: The server is not required to support every object listed here; however, if the server does not support an object and the client attempts to access an instance of an unsupported object, the server will return an error.

  • Character sets:
    • ANSI X3.4.
    • Note: UTF-8 is only partially supported; do not use accents, cedillas, or other non-ASCII characters in the object names configured on the server device.

    Configuration Overview

    The BACnet/IP client is designed for reading, writing, and monitoring points on a BACnet/IP server device from a Q-SYS Core, without the need for external gateways.

    • Add the client to the Q-SYS schematic.
    • Enter the license in the License Key property, when applicable.
    • Select the local interface and the BACnet/IP port.
    • Enter the server device IP address.
    • Fill in the object instances on the point pages.

    Note: For full operation, the server device should support the capabilities described in this documentation. Devices that do not support all of these capabilities may still operate, but some features may be unavailable.

    Properties

    License Key

    Type: String

    Default Value: empty

    License key used to enable the client on a Core.

    Object Update Method

    Type: Enumerator

    Default Value: COV Subscription

    Selects how point values are updated.

    • COV Subscription: the client subscribes to COV for the selected points.
    • Poll: the client reads points at regular intervals using ReadPropertyMultiple.
    • Note: COV is recommended because a COV subscription allows the server to notify the client when the object changes, which avoids periodic requests and network traffic, while also making object updates considerably faster.

    Local Ip Mode

    Type: Enumerator

    Default Value: Auto

    Selects how the Core local IP is defined.

    • Auto: uses the selected network interface.
    • Manual: uses the address entered in LocalIpAddress.

    BV Count

    Type: Integer

    Default Value: 5

    Number of Binary Value points created.

    BI Count

    Type: Integer

    Default Value: 5

    Number of Binary Input points created.

    AV Count

    Type: Integer

    Default Value: 5

    Number of Analog Value points created.

    AI Count

    Type: Integer

    Default Value: 5

    Number of Analog Input points created.

    MV Count

    Type: Integer

    Default Value: 5

    Number of Multi-state Value points created.

    Debug Level

    Type: Enumerator

    Default Value: Normal

    Controls how many logs are shown by the client.

    Note: Do not use verbose mode in production. This mode should be used for support or to identify possible communication errors between the server and the client.

    Controls

    Setup

    Status

    Status Indicator

    Shows the current communication state with the server device.

    Status Message When it occurs
    SUCCESS - Normal communication with the server device.
    FAULT Timed out waiting for I-Am response from device
    "License not found"
    "Failed to open UDP socket"
    "Failed to send UDP packet"
    Communication failure, failure to open the UDP socket, failure to send a packet, or timeout while waiting for a server response.
    NOT_PRESENT - Minimum network parameters are missing, or the client does not yet have enough data to communicate.
    MISSING - The client had already been connected, but it stopped receiving responses from the server device for consecutive cycles.
    INITIALIZING - Module initialization while the client waits for the server device response.

    LocalNetworkInterface

    Text / Choice

    Selects the local network interface used by the client.

    LocalIpAddress

    Text Edit

    Core local IP address when Manual mode is active.

    DeviceIPAddress

    Text Edit

    BACnet server device IP address.

    DeviceID

    Text Indicator

    Shows the server device Device ID.

    DeviceName

    Text Indicator

    Shows the server device name.

    VendorID

    Text Indicator

    Shows the Vendor ID returned by the server device.

    MaxAPDULen

    Text Indicator

    Shows the maximum APDU length reported by the server device.

    SegmentationSupported

    Text Indicator

    Shows the segmentation capability reported by the server device.

    BacnetPort

    Text / Choice

    Selects the BACnet/IP port used for communication.

    SendWhoIs

    Button

    Sends a Who-Is discovery request to locate the server device and refreshes the information for all valid objects.

    About

    ActivationStatus

    Text Indicator

    Shows whether the client is licensed.

    MaxLicensedPoints

    Text Indicator

    Shows the maximum number of licensed points.

    UsedPoints

    Text Indicator

    Shows the number of points currently in use.

    AvailablePoints

    Text Indicator

    Shows the number of points remaining in the license.

    BV/BI/AV/AI/MV Point Pages

    Instance

    Text Edit

    Defines the BACnet instance of the monitored object.

    Name

    Text Indicator

    Shows the name of the object read from the server device.

    EventState

    Text Indicator

    Shows the object event state.

    Alarm

    LED Indicator

    Shows the object alarm state.

    Fault

    LED Indicator

    Shows the object fault state.

    Override

    LED Indicator

    Shows the object override state.

    OOS

    LED Indicator

    Shows the object Out of Service state.

    Priority

    Text Edit

    Selects the priority used for BACnet write operations.

    SetValue

    Button / Knob

    Defines the value that will be written to the server device point.

    SetNull

    Trigger Button

    Writes NULL to release the value at the selected priority.

    PresentValue

    Indicator

    Shows the current value read from the server device.

    Subscribe

    Toggle Button

    Enables or disables point monitoring.

    Control Pins

    Pin Name Value String Position Pins Available

    Connection / Setup

    LocalNetworkInterface

    (text)

    Input / Output

    LocalIpAddress

    (text)

    Input / Output

    DeviceIPAddress

    (text)

    Input / Output

    DeviceID

    (text)

    Output

    DeviceName

    (text)

    Output

    VendorID

    (text)

    Output

    MaxAPDULen

    (text)

    Output

    SegmentationSupported

    (text)

    Output

    BacnetPort

    (text)

    Input / Output

    SendWhoIs

    (trigger)

    Input

    Connection Status

    0
    2
    3
    4
    5
    OK (Green)
    Fault (Red)
    Not Present (Gray)
    Missing (Red)
    Initializing (Blue)
    -

    Output

    About

    ActivationStatus

    (text)

    Output

    MaxLicensedPoints

    (text)

    Output

    UsedPoints

    (text)

    Output

    AvailablePoints

    (text)

    Output

    BV Point Pages

    Instance[n]

    (text)

    Input

    Name[n]

    (text)

    Output

    EventState[n]

    (text)

    Output

    Alarm[n], Fault[n], Override[n], OOS[n]

    0
    1
    false
    true
    0
    1

    Output

    Priority[n]

    (text)

    Input / Output

    SetValue[n]

    (control)

    Input / Output

    SetNull[n]

    (trigger)

    Input

    PresentValue[n]

    0
    1
    false
    true
    0
    1

    Output

    Subscribe[n]

    (toggle)

    Input / Output

    BI Point Pages

    Instance[n]

    (text)

    Input

    Name[n]

    (text)

    Output

    EventState[n]

    (text)

    Output

    Alarm[n], Fault[n], Override[n], OOS[n]

    0
    1
    false
    true
    0
    1

    Output

    PresentValue[n]

    0
    1
    false
    true
    0
    1

    Output

    Subscribe[n]

    (toggle)

    Input / Output

    AV Point Pages

    Instance[n]

    (text)

    Input

    Name[n]

    (text)

    Output

    EventState[n]

    (text)

    Output

    Alarm[n], Fault[n], Override[n], OOS[n]

    0
    1
    false
    true
    0
    1

    Output

    Priority[n]

    (text)

    Input / Output

    SetValue[n]

    (control)

    Input / Output

    SetNull[n]

    (trigger)

    Input

    PresentValue[n]

    -70000
    70000
    (float)-70000
    70000

    Output

    Subscribe[n]

    (toggle)

    Input / Output

    AI Point Pages

    Instance[n]

    (text)

    Input

    Name[n]

    (text)

    Output

    EventState[n]

    (text)

    Output

    Alarm[n], Fault[n], Override[n], OOS[n]

    0
    1
    false
    true
    0
    1

    Output

    Priority[n]

    (text)

    Input / Output

    SetValue[n]

    (control)

    Input / Output

    SetNull[n]

    (trigger)

    Input

    PresentValue[n]

    -70000
    70000
    (float)-70000
    70000

    Output

    Subscribe[n]

    (toggle)

    Input / Output

    MV Point Pages

    Instance[n]

    (text)

    Input

    Name[n]

    (text)

    Output

    EventState[n]

    (text)

    Output

    Alarm[n], Fault[n], Override[n], OOS[n]

    0
    1
    false
    true
    0
    1

    Output

    Priority[n]

    (text)

    Input / Output

    SetValue[n]

    (control)

    Input / Output

    SetNull[n]

    (trigger)

    Input

    PresentValue[n]

    1
    255
    (integer)1
    255

    Output

    Subscribe[n]

    (toggle)

    Input / Output