COV-Reporting

COV (Change-of-Value) Reporting bietet die Möglichkeit, automatisch Benachrichtigungen bei Wertänderungen zu erhalten. Normalerweise werden nur die Eigenschaften Present_Value und Status_Flags gemeldet. Um als Kunde COV-Benachrichtigungen zu erhalten, muss er für einen bestimmten Zeitraum ein COV-Abonnement abschließen (auch wenn unendlich viele Abonnements möglich sind, ist es sinnvoll, nur begrenzte Laufzeiten zu verwenden). Wenn das Abonnement erfolgreich war, wird vom Server eine einfache Bestätigung zurückgegeben. Der aktuelle Wert wird als Anfangswert gemeldet, sobald das Gerät ihn liefern kann (normalerweise innerhalb weniger Sekunden).

Die Liste der aktiven COV-Abonnements kann über die Eigenschaft Active_COV_Subscriptions des Device-Objekts abgerufen werden.

Wenn das Abonnement nach Ablauf der Lebensdauer des Abonnements nicht wiederholt wird, wird es stillschweigend entfernt und es werden keine COV-Meldungen mehr für dieses Abonnement gemeldet.

Nach der Erneuerung des Abonnements wird der aktuelle Wert wieder als Anfangswert zur Verfügung gestellt, was insbesondere bei Binary-Objekten, die sich nicht sehr oft ändern, als Heartbeat verwendet werden kann.

Die Anzahl der Abonnements ist in der BACnet-Norm nicht eindeutig festgelegt. Außerdem gibt es Geräte auf dem Markt die COV unterstützen, aber nicht für alle Objekte. Oder die Anzahl der Abonnements kann auf einige wenige pro Objekt oder pro Gerät beschränkt sein. Andere Client-Prozesse wie die GLT können ebenfalls COV verwenden, was dazu führen kann, dass ein BACnet-Device keinen Platz mehr für weitere Abonnements hat.

Im Falle von BACnet-Fehlermeldungen, insbesondere bei kleineren MS/TP-Geräten, empfehlen wir die Verwendung einer ReadProperty / ReadProperty Multiple Abfrage anstelle von COV.