COV-Reporting

COV (Change-of-Value) reporting provides a functionality to automatically receive notifications in case of value changes. Normally only the Present_Value and Status_Flags properties are being notified. As a client, to receive COV-Notifications it is required to subscribe for COV for a period of time (even though infinite subscriptions are possible, it is good practice to use limited lifetimes only). If the subscription succeeds, a simple acknowledge is returned by the server. The current value is being reported as the initial value as soon as the device can provide it (normally within a few seconds).

The list of active COV subscriptions can be obtained from the property Active_COV_Subscriptions from the Device object.

In case the subscription is not repeated after the subscription lifetime expired, the subscription is silently removed and no COV messages are reported for this subscription anymore.

After the subscription is renewed the current value will be provided again as the initial value, this can be used as a heartbeat, especially for binary objects which do not change very often.

The number of subscriptions is not clearly specified in the BACnet standard. In addition, there are devices on the market which claim support for COV, but not for all objects. Or the number of subscriptions may be limited to just a few per object or per device. Other client processes like the BMS may use COV as well which may cause a BACnet device to run out of space for further subscriptions.

In case of BACnet error messages, especially issued by smaller MS/TP devices we recommend using a ReadProperty / ReadProperty Multiple polling instead of using COV.