Data format 5 (RAWv2)
Lifecycle: In Production. Last updated 2021-08-25
The data is decoded from "Manufacturer Specific Data" -field, for more details please check Bluetooth Advertisements section. Manufacturer ID is 0x0499
, which is transmitted as 0x9904
in raw data. The actual data payload is:
Offset
Allowed values
Description
0
5
Data format (8bit)
1-2
-32767 ... 32767
Temperature in 0.005 degrees
3-4
0 ... 40 000
Humidity (16bit unsigned) in 0.0025% (0-163.83% range, though realistically 0-100%)
5-6
0 ... 65534
Pressure (16bit unsigned) in 1 Pa units, with offset of -50 000 Pa
7-8
-32767 ... 32767
Acceleration-X (Most Significant Byte first)
9-10
-32767 ... 32767
Acceleration-Y (Most Significant Byte first)
11-12
-32767 ... 32767
Acceleration-Z (Most Significant Byte first)
13-14
0 ... 2046
, 0 ... 30
Power info (11+5bit unsigned), first 11 bits is the battery voltage above 1.6V, in millivolts (1.6V to 3.646V range). Last 5 bits unsigned are the TX power above -40dBm, in 2dBm steps. (-40dBm to +20dBm range)
15
0 ... 254
Movement counter (8 bit unsigned), incremented by motion detection interrupts from accelerometer
16-17
0 ... 65534
Measurement sequence number (16 bit unsigned), each time a measurement is taken, this is incremented by one, used for measurement de-duplication. Depending on the transmit interval, multiple packets with the same measurements can be sent, and there may be measurements that never were sent.
18-23
Any valid mac
48bit MAC address.
Not available is signified by largest presentable number for unsigned values, smallest presentable number for signed values and all bits set for mac. All fields are MSB first 2-complement, i.e. 0xFC18
is read as -1000
and 0x03E8
is read as 1000
. If original data overflows the data format, data is clipped to closests value that can be represented. For example temperature 170.00 C becomes 163.835 C and acceleration -40.000 G becomes -32.767 G.
Data field descriptions
Temperature
Values supported: (-163.835 °C to +163.835 °C in 0.005 °C increments.
Example
Value
Measurement
0x0000
0 °C
0x01C3
+2.255 °C
0xFE3D
-2.255 °C
0x8000
Invalid / not available
Humidity
Values supported: 0.0 % to 100 % in 0.0025 % increments. Higher values than 100 % are possible, but they generally indicate a faulty or miscalibrated sensor.
Example
Value
Measurement
000
0%
10010
25.025%
40000
100.0%
65535
Invalid / not available
Atmospheric Pressure
Values supported: 50000 Pa to 115536 Pa in 1 Pa increments.
Example
Value
Measurement
00000
50000 Pa
51325
101325 Pa (average sea-level pressure)
65534
115534 Pa
65535
Invalid / not available
Acceleration
Values supported: -32767 to 32767 (mG), however the sensor on RuuviTag supports only 16 G max (2 G in default configuration). Values are 2-complement int16_t, MSB first. All channels are identical.
Example
Value
Measurement
0xFC18
-1000 mG
0x03E8
1000 mG
0x8000
Invalid / not available
Battery voltage
Values supported: 1600 mV to 3647 mV in 1 mV increments, practically 1800 ... 3600 mV.
Example
Value
Measurement
0000
1600 mV
1400
3000 mV
2047
Invalid / not available
Tx Power
Values supported: -40 dBm to +22 dBm in 2 dBm increments.
Example
Value
Measurement
00
-40 dBm
22
+4 dBm
31
Invalid / not available
Movement counter
Movement counter is one-byte counter which gets triggered when LIS2DH12 gives "activity interrupt". Sensitivity depends on the firmware, by default the sensitivity is a movement over 64 mG. The counter will roll over. Movement is deduced by "rate of change". Please note that the highest valid value is 254, and 255 is reserved for the "not available".
Example
Value
Measurement
00
0 counts
100
100 counts
255
Invalid / not available
Measurement sequence number
Mesurement sequence number gets incremented by one for every measurement. It can be used to gauge signal quality and packet loss as well as to deduplicated data entries. You should note that the measurement sequence refers to data rather than transmission, so you might receive many transmissions with the same measurement sequence number. Please note that the highest valid value is 65534, and 65535 is reserved for the "not available".
Example
Value
Measurement
00
0 counts
1000
1000 counts
65535
Invalid / not available
Test vectors
These test vectors are based on ruuvitag-sensor project. The tests are bidirectional, decode-encode results in original raw data. Encode-decode must result in same values with given precision, but floating point rounding differences may occur.
Case: valid data
Raw binary data: 0x0512FC5394C37C0004FFFC040CAC364200CDCBB8334C884F
Field
Value
Data format
5
Temperature
24.3 C
Pressure
100044
Humidity
53.49 RH-%
Acceleration X
0.004 G
Acceleration Y
-0.004 G
Acceleration Z
1.036 G
TX Power
4 dBm
Voltage
2.977 V
Movement counter
66
Measurement Sequence
205
MAC
CB B8 33 4C 88 4F
Case: maximum values
Raw binary data: 0x057FFFFFFEFFFE7FFF7FFF7FFFFFDEFEFFFECBB8334C884F
Field
Value
Data format
5
Temperature
163.835 C
Pressure
115534
Humidity
163.8350 RH-%
Acceleration X
32.767 G
Acceleration Y
32.767 G
Acceleration Z
32.767 G
TX Power
20 dBm
Voltage
3.646 V
Movement counter
254
Measurement Sequence
65534
MAC
CB B8 33 4C 88 4F
Case: minimum values
Raw binary data: 0x058001000000008001800180010000000000CBB8334C884F
Field
Value
Data format
5
Temperature
-163.835 C
Pressure
50000
Humidity
0.000 RH-%
Acceleration X
-32.767 G
Acceleration Y
-32.767 G
Acceleration Z
-32.767 G
TX Power
-40 dBm
Voltage
1.600 V
Movement counter
0
Measurement Sequence
0
MAC
CB B8 33 4C 88 4F
Case: Invalid values
Raw binary data: 0x058000FFFFFFFF800080008000FFFFFFFFFFFFFFFFFFFFFF
Field
Value
Data format
5
Temperature
NAN
Pressure
NAN
Humidity
NAN
Acceleration X
NAN
Acceleration Y
NAN
Acceleration Z
NAN
TX Power
NAN
Voltage
NAN
Movement counter
NAN
Measurement Sequence
NAN
MAC
NAN
Last updated