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.
| Situation | Error class | Error code |
|---|---|---|
| The specified object does not exist | OBJECT | UNKNOWN_OBJECT |
| The specified property does not exist | PROPERTY | UNKNOWN_PROPERTY |
| The specified object does not support COV notifications | OBJECT | OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED |
| The specified property does not support COV notifications | PROPERTY | NOT_COV_PROPERTY |
| No context can be created because of resource limitations | RESOURCES | NO_SPACE_TO_ADD_LIST_ELEMENT |
| The lifetime is outside the range the device supports | SERVICES | VALUE_OUT_OF_RANGE |
Reading these in the field:
NOT_COV_PROPERTYis the property-level counterpart ofOPTIONAL_FUNCTIONALITY_NOT_SUPPORTED: the object supports COV, but this particular property is not one the device offers for COV reporting.UNKNOWN_PROPERTYmeans 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_ELEMENTmeans 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.
| Direction | Required by BIBB | Profiles |
|---|---|---|
| Execute (accept subscriptions) | DS-COVP-B | Controllers that offer property-level COV reporting |
| Initiate (subscribe) | DS-COVP-A | Client 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.