Keep-alive
Keep-alive decoding
The Keep-alive is a periodically sent message which contains the most important device data.
The data is described in the table below, where an example is also given in a second table.
0
-
82
Command byte for this packet.
1
7:4
-
(RFU) - Reserved for future use
1
3
-
PIR motion detected
1
2
-
Occupied
1
1:0
-
Internal temperature sensor data, bits – T[9:8]
2
-
XX
Internal temperature sensor data, bits - T[7:0]
t [°C] = (T[9:0] - 400) / 10
3
-
XX
Relative Humidity data; RH [%] = (XX * 100) / 256
4
-
XX
Device battery voltage data, bits 15:8
6
-
XX
CO2 value in ppm, bits 7:0
7
7:3
-
CO2 value in ppm, bits 12:8
7
2:0
-
(RFU) - Reserved for future use
8
-
XX
PIR trigger count
Keepalive example
0
-
82
Command byte for this packet.
1
7:4
-
(RFU) - Reserved for future use.
1
3
-
PIR motion detected
1
2
-
Occupied
1
1:0
02
Internal temperature sensor data, bits - T[9:8].
2
-
88
Internal temperature sensor data, bits - T[7:0].
t [°C] = (T[9:0]-400)/10 t [°C] = (0x0288-400)/10 = (648-400)/10 = 24.8 °C.
3
-
80
Relative Humidity data; RH [%] = (XX*100)/256 (0x80 * 100)/256 = (128*100)/256 = 50% RH
4
-
0A
Battery Voltage, [mV] = ((XX * 2200) / 255) + 1600
5
-
6B
CO2 value in ppm, bits 7:0.
6
7:3
18
CO2 value in ppm, bits 12:8.
CO2, [ppm]=CO2[12:0] = 875 ppm. Example code: co2_value = ((Byte[7] & 0xF8) << 5) | Byte[6];
6
2:0
-
(RFU) - Reserved for future use.
7
-
0B
PIR trigger count = 11
Keepalive period
Byte index
Hex value - Meaning
0
02 – Command code to set keepalive period
1
XX – keep-alive period in minutes. Value 0x00 isn’t applicable. Default value 0A=10min.
Example command: 0x020F
The example sets the keep-alive period to 15 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
Was this helpful?