What SubscribeCOVPropertyMultiple Is
SubscribeCOVPropertyMultiple is an alarm-and-event service in BACnet, defined in Clause 13.16 of ANSI/ASHRAE 135-2024. A COV (Change of Value) client uses it to subscribe, in a single request, for change notifications on multiple properties across multiple objects on a server device. It is a confirmed service: the device acknowledges the subscription, or returns an error naming why it could not be established.
It is the multi-target counterpart to SubscribeCOVProperty. One SubscribeCOVPropertyMultiple has the effect of a series of independent property subscriptions, but the resulting notifications arrive through the ConfirmedCOVNotificationMultiple or UnconfirmedCOVNotificationMultiple service, carrying only the properties whose values changed.
How It Works
The client sends a subscriber process identifier, a flag choosing confirmed or unconfirmed notifications, a lifetime in seconds, a maximum notification delay, and a list of subscription specifications. Each specification names one object and a list of property references, with an optional COV increment and a timestamped flag. The device establishes or refreshes a COV-multiple context and starts reporting changes; a request with no lifetime is a cancellation. Devices that execute this service must accept lifetimes up to at least 28800 seconds (8 hours). If one subscription in the list fails, the device returns the first failed subscription and stops processing the rest, while the subscriptions it already accepted stay in effect.
Where You’ll See It
- Efficient supervisory monitoring. A head end (the central BMS server) subscribes to dozens of points on a controller in one exchange instead of one subscription per point.
- Elevator and lift status. Elevator controllers expose many status properties that a monitoring system tracks together through a single multi-property subscription.
- Timestamped change capture. Setting the timestamped flag makes the server queue each change with the time it occurred, so the client sees the sequence rather than just the latest value.
SubscribeCOVPropertyMultiple Error Codes
Clause 13.16 defines two error returns. A general Error Type is returned when the whole request fails before any subscription is processed; a First Failed Subscription is returned when one specific object or property in the list fails. The general error model lives in Clause 18 of the standard.
| Situation | Error class | Error code |
|---|---|---|
| No COV-multiple context can be created due to resource limitations | RESOURCES | NO_SPACE_TO_ADD_LIST_ELEMENT |
The Lifetime parameter is outside the range supported by the device | SERVICES | VALUE_OUT_OF_RANGE |
The Max Notification Delay parameter is outside the range supported by the device | SERVICES | VALUE_OUT_OF_RANGE |
The Max Notification Delay parameter is greater than the Lifetime parameter | SERVICES | VALUE_OUT_OF_RANGE |
| Specified object does not exist | OBJECT | UNKNOWN_OBJECT |
| Specified property does not exist | PROPERTY | UNKNOWN_PROPERTY |
| Specified object does not support COV-multiple notifications | OBJECT | OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED |
| Specified property does not support COV-multiple notifications | PROPERTY | NOT_COV_PROPERTY |
| An array index is provided but the property is not an array | PROPERTY | PROPERTY_IS_NOT_AN_ARRAY |
| An array index is provided that is greater than the current length of the array | PROPERTY | INVALID_ARRAY_INDEX |
| No COV subscription specification can be created in the context due to resource limitations | RESOURCES | NO_SPACE_TO_ADD_LIST_ELEMENT |
Reading these in the field:
NOT_COV_PROPERTYandOPTIONAL_FUNCTIONALITY_NOT_SUPPORTEDmean the object or property simply does not offer COV-multiple reporting on that device; the subscription cannot be made regardless of how it is framed.VALUE_OUT_OF_RANGEon the lifetime usually means the requested lifetime exceeds what the device supports; lower it, staying at or below 28800 seconds for portability.- A first-failed-subscription return does not undo the subscriptions the device already accepted before the failing one; resend only the entries after the failure.
- No response at all is not a service error. A timeout is a transport or addressing problem, not a subscription problem.
Profiles That Require It
Executing SubscribeCOVPropertyMultiple (DS-COVM-B) is required of the elevator controller profiles that expose many status properties for group monitoring: B-EC, B-AEC, and B-EM. Elsewhere COV-multiple is optional. The initiate side is a client or operator behavior.
| Direction | Required by BIBB | Profiles |
|---|---|---|
| Execute (accept the subscription) | DS-COVM-B | B-EC, B-AEC, B-EM |
| Initiate (send the subscription) | DS-COVM-A | Operator and client profiles that monitor multi-property devices |
What Chipkin Provides
The CAS BACnet Stack supports SubscribeCOVPropertyMultiple, establishing and tracking COV-multiple contexts and issuing the matching notifications. Talk to us about adding BACnet client or server support to your device.