BACnet SubscribeCOVProperty Service

SubscribeCOVProperty subscribes a client to change-of-value on a specific property (Clause 13.15)

What SubscribeCOVProperty Is

SubscribeCOVProperty is an alarm-and-event service in BACnet, defined in Clause 13.15 of ANSI/ASHRAE 135-2024. A COV (Change of Value) client uses it to subscribe for notifications when a specific property of an object changes. It is a confirmed service: the device that owns the object answers with a result, or with an error naming why the subscription could not be created.

The difference from SubscribeCOV is reach. SubscribeCOV covers only the object properties whose COV behavior the standard predefines, while SubscribeCOVProperty can monitor any property the device chooses to expose for COV, standard or proprietary, and it lets the client name its own COV increment. Once subscribed, the client receives changes through ConfirmedCOVNotification or UnconfirmedCOVNotification, whichever it chose.

How It Works

The client sends a subscriber process identifier, the monitored object identifier, a flag choosing confirmed or unconfirmed notifications, a lifetime in seconds, the monitored property identifier (with an optional array index), and an optional COV increment. The device creates a subscription context, records it in the Device object’s Active_COV_Subscriptions, and returns a positive result, then sends an initial notification so the client starts current. The COV increment sets the minimum change that triggers a notification for a numeric property; when it is omitted for Present_Value, the device falls back to the object’s COV_Increment property. Omitting both the confirmed-notifications flag and the lifetime turns the request into a cancellation. Devices that execute this service must accept lifetimes up to at least 28800 seconds (8 hours).

Where You’ll See It

  • Monitoring a non-standard property. A client that needs change notifications on a property SubscribeCOV does not cover, such as a setpoint or a mode, subscribes to that exact property here.
  • Client-chosen sensitivity. Supplying a COV increment lets the client set how much a numeric value must move before it hears about it, independent of the object’s own COV_Increment.
  • Per-property lifetimes. Because each subscription names one property, a client can hold subscriptions with different lifetimes on different properties of the same object.

SubscribeCOVProperty Error Codes

Clause 13.15 defines the error class and code a device returns for each failure. The general error model lives in Clause 18 of the standard.

SituationError classError code
The specified object does not existOBJECTUNKNOWN_OBJECT
The specified property does not existPROPERTYUNKNOWN_PROPERTY
The specified object does not support COV notificationsOBJECTOPTIONAL_FUNCTIONALITY_NOT_SUPPORTED
The specified property does not support COV notificationsPROPERTYNOT_COV_PROPERTY
No context can be created because of resource limitationsRESOURCESNO_SPACE_TO_ADD_LIST_ELEMENT
The lifetime is outside the range the device supportsSERVICESVALUE_OUT_OF_RANGE

Reading these in the field:

  • NOT_COV_PROPERTY is the property-level counterpart of OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED: the object supports COV, but this particular property is not one the device offers for COV reporting.
  • UNKNOWN_PROPERTY means the property does not exist on the object at all, often a mismatch between the client’s expectation and the device’s protocol revision.
  • NO_SPACE_TO_ADD_LIST_ELEMENT means the device is out of subscription slots; cancel unused subscriptions to recover.
  • No response at all is not a SubscribeCOVProperty error. A timeout means the request never reached the device or the reply never came back, which is a transport or addressing problem.

Profiles That Require It

SubscribeCOVProperty splits by direction. Executing it (accepting subscriptions) comes from the DS-COVP-B building block; initiating it comes from DS-COVP-A and is a client behavior.

DirectionRequired by BIBBProfiles
Execute (accept subscriptions)DS-COVP-BControllers that offer property-level COV reporting
Initiate (subscribe)DS-COVP-AClient and operator profiles that monitor specific properties: operator workstations and supervisory controllers

What Chipkin Provides

The CAS BACnet Stack executes SubscribeCOVProperty on the server side, managing per-property subscription contexts, COV increments, and lifetimes; the client subscribe side is implemented in Chipkin’s BACnet test tooling. Talk to us about adding BACnet client or server support to your device.