Keep-alive
How to decode the keep-alive packet and how to set new keep-alive period
Keep-alive command explanation
Periodically sent message which contains the most important device data.
The data is described in Table 3.
Byte index | Bit index | Hex value - Meaning |
0 | - | 01 – Keep-alive command for firmware <= 3.4 81 - Keep-alive command for firmware >= 3.5 |
1 | - | XX – Target Temperature set by the rotary encoder. Currently 0x05 <= XX <= 0x1E |
2 | - | XX – Temperature measured by the device sensor. For firmware <= 3.4 For firmware >= 3.5 |
3 | - | XX – Relative Humidity measured by the device sensor.
|
4 | - | XX – Motor position in steps, bits 7:0 |
5 | - | XX – Motor range in steps, bits 7:0 |
6 | 7:4 | X – Motor position in steps, bits 11:8 |
6 | 3:0 | X – Motor range in steps, bits 11:8 |
7 | 7:4 | X – Battery voltage. Voltage = 2 + X * 0.1, [V] |
7 | 3 | Set to 1 if open window functionality is enabled and such condition is met. Cleared otherwise. |
7 | 2 | Set to 1 if too high motor current consumption was measured. Cleared otherwise. |
7 | 1 | Set to 1 if too low motor current consumption was measured. Cleared otherwise. |
7 | 0 | Set to 1 if device temperature sensor is broken, cleared if it works properly. |
8 | 7 | Set to 1 if manual temperature set through the rotary encoder is disabled. Set to 0 otherwise. |
8 | 6:0 | !!! Reserved for future use in f.w. version less than 4.1 |
8 | 6 | Set to 1 if device motor calibration fails due to impossibility to detect end of valve position. Cleared otherwise. |
8 | 5 | Set to 1 when the device is attached to the backplate. |
8 | 4 | Set to 1 when the device is online – joined the network and/or server packets are regularly received. Set to 0 if the device thinks it's offline. |
8 | 3 | Anti-free functionality status. 0 - it has not been activated 1 - it has been activated and the internal algorithm is working to reach the threshold temperature |
8 | 2:0 | Reserved for future use. |
Table 3
Example keep-alive: 0x011D5A78FA2C01F080
Decoding:
0x01 – Command code (according to Table 2). Shows that keep-alive data follows
0x1D – Target temperature is 29
0x5A – Sensor temperature; 0x5A = 90; 90*165/256-40 = 18,0078125 deg. Celsius
0x78 – Sensor humidity; 0x78 = 120; (120*100)/256 = 46,875 % relative humidity
0xFA2C01 – Byte indexes 4, 5 and 6; Motor position = 0x0FA = 250; Motor range = 0x12C = 300;
0xF0 – Battery voltage and status; 0xF = Battery voltage = 2+ 15*0,1 = 3,5VDC; 0x0 = All status flags are cleared.
0x80 – Rotary encoder is disabled (Child Lock is enabled).
Example keep-alive 2: 0x01185C5CDFDF118000
0x01 – Command code (according to Table 2). Shows that keep-alive data follows
0x18 = Target temperature is 24
0x5C = Sensor temperature; 0x5c = 92; 92 *165/256-40 = 19,296875 deg. Celsius
0x5C= Sensor humidity; 0x5c = 92; 92*100/256 = 35,9375 % relative humidity
0xDFDF11 = Byte indexes 4, 5 and 6; Motor position = 0x1DF = 479; Motor range = 0x1DF = 479
0x80 = Battery voltage and status; 0x8 = Battery voltage = 2 + 8*0,1 = 2,8 VDC; 0x0 = All status flags are cleared.
0x00 = Rotary encoder is enabled (Child lock is disabled).
Devices with firmware version 3.5 and above: - The byte at index 0 is changed to 0x81
- New formula is used for measured temperature calculation: (XX-28.33333)/5.66666
Set Keep-alive period command explanation
Sets the period for the Vicki keep-alive command messages. See table 4 for details.
Byte index | Hex value - Meaning |
0 | 02 – The command will set Vicki keep-alive period. |
1 | XX – keep-alive period in minutes. Value 0x00 isn’t applicable. Default value: 0x0A. |
Example command: 0x020A
The example sets the keep-alive period to 10 minutes.
Note that the period value must respect the LoRaWAN messages duty cycle limitations. Otherwise the message will be sent when this is allowed. Also, the bigger period value, the less battery discharge. In most of cases, min. allowed period is 3 minutes and recommended values are 10 minutes or greater.
Last updated