COV (Change of Value)
General information
The Climatix system supports the Change of Value (COV) concept. This means, a new value will only be sent to a client if the value exceeds a configured COV threshold. The COV mechanism avoids a polling of the value, the controller itself will notify the client automatically if the value has changed.
COV Clients
Inside the Climatix system, each client can have its individual COV threshold. For example, SCOPE can have a lower COV threshold for a temperature while the COV threshold for the communication is a higher one in order to avoid too much traffic.
This means, the client itself is responsible for storing the COV threshold; it can NOT be stored inside the automation object. Every automation object instance supports up to two COV thresholds that must be defined at COV registration time.
If a client registers to an automation object, the client will receive the current value at this time that is not marked with COV_NO and has a value that is not 0.

Members with the value 0 are not sent to the client. The client has to initiate its state with 0 and then the automation object can be registered for COV service.
COV base methods
The automation objects support the following COV methods, which are individual for each automation object member:
Method | Abbreviation | Description |
No COV supported | COV_NO | A change of this value is never reported to the client. The client has to poll this member to get an updated value. |
COV without threshold | COV_FORCE | Every change is reported to the client, without using the COV threshold. | actValue - oldValue | > 0 |
COV with | COV_VALUE1 | If the difference of the actual value and the last sent value is greater than or equal to the COV threshold 1, the client is notified. | actValue - oldValue | >= COV1 |
COV with | COV_VALUE2 | If the difference of the actual value and the last send value is greater than or equal to the COV threshold 2, the client is notified. | actValue - oldValue | >= COV2 |
The following graph shows where a new value is sent to the client (COV threshold is 2,0):

COV enhanced
This functionality is available since VVS11.42.
The new firmware supports enhanced COV methods that are not automatically supported by all COV clients. If the enhanced COV method is supported, the client description contains a link to this chapter (like the cloud mapping),
In addition to the absolute COV threshold, the enhanced COV supports the following new methods:
- Time-based COV
- COV threshold in percentage
- Group definitions for enabling/disabling COV on demand
Time based COV
The time-based COV is available in addition to the COV threshold event. If no event is sent at a defined time, the value is sent to the client and the old value is set to the actual value and the time restarts.
A red circle indicates that the value is sent due because the COV threshold was exceeded and the yellow circle indicates that the time interval has expired.
WARNING

Due to memory limitations, a maximum of 10 members per object instance can be used for the time-based service.

COV threshold in percent
In addition to the absolute COV threshold, a percentage can be configured. This means, the COV client will receive a new value if the delta of the actual value minus the current value is greater than the defined percentage.
| actValue - oldValue | >= (COV[%] * oldValue)
If that oldValue is close to zero, too frequent notifications of the client can occur. Therefore, a minimal value must be also configured (for sure as absolute value).
| actValue - oldValue | >= max ((COV[%] * oldValue), minThrehold)
Every edge inside the following picture represents a COV event. With smaller values, there are more events than for bigger values:

COV group definitions
A group definition consists of a group number and an object and member ID. The group is enabled if the member value is unequal to zero, and it is disabled if the member value is zero. The groups can be defined via the mapping or via the COV configuration file.
In the COV configuration for an object instance, the mapping can be assigned to a group definition. The number of groups depends on the capabilities of the device and can be found inside the limit document.
Syntax inside the mapping file
The COV group will be defined via the virtual object that depends on the COV client. Currently, the following clients are supported:
Client | Virtual Object ID |
Cloud | 0xF040 0x0003 |
The member ID can be from 0 to the device limit number and must be a whole number.
The syntax is as follows:
<Group,EnableObjID>
Item | Description |
Group | The group number. |
EnableObjID | The raw coded member and object ID for the object which will enable COV for this group. If the referenced object or member does not exist, the group is per default disabled. |
Sample
Three COV groups are defined in this configuration.

COV enhanced mapping
To use the new feature, the COV mapping needs to be enhanced. The general COV configuration is the same as before but can be enhanced with the following features. The order of the optional items is free and not fixed.
[COV1, COV2,P<value>,Z<value>]
Item | Mandatory/Optional | Description |
COV1 | Mandatory | The first COV threshold (can be absolute or percent value). |
COV2 | Mandatory | The second COV threshold (can be absolute or percent value). |
P<value> | Optional | COV1, COV2 are interpreted as percentage value, <value> indicates the minimum absolute threshold that the value will not fall below. |
Z<value> | Optional | Defines the maximum send time in seconds. This means that even if the value is not changing, it will be sent latest after <value> seconds. |
G<value> | Optional | Assigned to COV group <value>. |
Sample

COV configuration file
With this file, the COV configuration can be modified during runtime. It lets the user:
- Change the individual COV configuration of an object instance (object must be already configured). It is not possible to add an unregistered object instance with this file.
- Create and modify COV groups.
- Currently, this file is only supported by cloud connectivity.
COV file location
When the controller starts, it checks the following file locations and uses the file that is found first:
- SD card cloud upgrade folder (\CSL\COV*.UCF)
- SD card root folder (\COV*.UCF)
- Ram/Flash file system
The file must start with COV and end with .ucf, such as “COVCloud.ucf”.
When the file is loaded via the cloud, it immediately becomes active. If an SD card is inside the controller, the file will be stored there. If no SD card is available, the file is stored inside the RAM file system and goes lost after a controller restart.
The new file format is also supported by the normal controller upgrade procedure.
COV file format
The file is a text-based file with the following UCF header:
::UCFFile::
DeviceID=0
TYPE=16
FileName=COVCloud.ucf
UUID=B2CF35DC-05A5-41FD-BDFC-4AF582F43A17
END
The UUD can be changed with every new version. The TYPE must be 16 and the FileName can be any name with the syntax: COV*.ucf.
After the header, the group definition and the COV definition can follow in any order.
Syntax for the COV group definition:
G;<Group;EnableObjID>
Item | Description |
Group | The group number. |
EnableObjID | The raw coded member and object ID for the object that will enable COV for this group. If the referenced object or member does not exist, the group is disabled per default. |
Syntax for COV definition:
C;ObjID;COVdef
Item | Description |
ObjID | The raw coded object ID for the object that will get the changed COV definition. |
COVdef | The new object COV definition. The syntax is identical to the enhanced COV mapping. For example: [10,2,P0.2,G16] |
Sample file
::UCFFile::
DeviceID=0
TYPE=16
FileName=COVCloud.ucf
UUID=B2CF35DC-05A5-41FD-BDFC-4AF582F43A17
END
G;<3,0x2302 0x031A0C6F 0x0100>
C;0x230A 0x031A9F43;[10,2,P0.2,G16]
C;0x230A 0x031A9F42;[5,3,P0.2,G16,Z20]
C;0xA018 0x9663334E;[2,2,G16]
G;<16, 0x0020 0x00000001 0x001B>
G;<10, 0x0020 0x00000032 0x001B>
C;0x230A 0x031AD8D6;[1.0,0.10,Z10,G3]