Format type codes:
00 | unused as of the date of this document
| 01 | Historical deprecated
| 02 Eddystone-URL, URL-safe base64 -encoded, kickstarter edition (no battery voltage)
03 | BLE Manufacturer specific data, base 92 encoded, all current sensor readings at 1 second interval
| 04 Eddystone-URL with tag ID. , URL-safe base64 -encoded,
05 | advertisment for RuuviCollector(linux) or ruuviStation(mobile) or ruuviDisplay(mac )
| 06 |
| 07 |
| | | | | | | | | | |
Changeover to using only 6 high bits (08-FC) for format type
08-0B | 08 |
| 09-0F | 09 |
| 0C-0F | 0C |
| 10-1F | 10 |
| 20-3F | 20 |
| 40-7F | 40 |
| 80-8F | 80 |
| 90-9F | 90 |
| A0-AF | A0 |
| B0-AF | B0 |
| C0-CF | 0 | config
( C5 was to be UUID but not needed as of 08/14/24)
| D0-DF | |
| E0-EF | error |
| F0-FF | fault | FA 3.31.0 encrypted`
| | | | | | | | | | | | | | |
Errors are indicated by "special" values: initialization failure, value xxx exceeds limit
As there are a limited number of format types available without sacrificing bits for data, a change in format type is only necessary when the format is incompatible.
For example using previously unused bits will not be reason to change the format type code.
This means that if a field has a range of 0-124, is right justified in a byte and is in a field documented to be 7 bits wide do not assume that the high order bit will be zero.
The binary array is referred to as b[i] and the bit numbers are shown as .ijk…
For example, a reference to the first byte, the low order bit is: b[0].7 aka b'0000 0001'.
Format 08 low precision, includes trends, acceleratometer movements
08
No implemented as of 09/18/22
Sensors used are rather low precision (example humidity ±2%). This is observable in format 05 where multiple readings
in a short time with no change in the environment result in differing reading.
Similarly, using the accelerometer for anything other noting the direction of movement would require very complicated algorithms and
very high sampling rates.
The Z-axis can be used, not to detect movement but to tell the orientation of the tag(and what ever it
is attached to).
| value | intrepretation
|
b[0].0123 | ??
| b[0].456708 |
format type code if ( b[0] & 0xF8 == 08 )
|
|
Only the application can intrepret the battery status. For example a closley monitored, easily accessable tag
might permit the battery be very low, conversely a tagn where the temperature varies widley effecting the battery and is difficult to access ,
like a remote remote location might take a very conservative approach and it would be nest to change the battery at a higher value.
| b[0].67
0..3Battery status
batteryStat=b[0] & 03
0 08 OK |
| 1 09 notice | Sensor update and transmission frequency reduced
No time known as any counter would over flow.
b[6] hours since notice (accelerometer data no longer sent)
| 2 0A critical | Frequency of activity reduced further.
b[5] hours since critical (air pressure & accelerometer data no longer sent)
| 3 0B emergency | (low or cannot read battery sensor)
Frequency of activity reduced further.
No sensors polled. Attempt to keep transmitting as long as possible.
b[3] Hours since critical (humidity , air presssure & accelerometer data no longer sent )
| | | | |
|
b[1..2] | 0000..FFFF | ID of TAG taken from of nRF5283 . DEVICEID[0] low order 16 bits
aka MAC (odds of duplicate is 1/FFFF = 0.0015% )
|
b[3].234567 | 0..100% | Humidity
1 = 2% As environment station humidity more precision is not meaningful .
humidity= ( b[1] & 0x3F ) *2
Errors :
60 | sensor could not be read
| 62 | value greater than maximun expected
| 63 | sensor could not be initialized
| | | |
b[3].01 0..3 change in temperature since 1 hour ago,
0:= no change,
1:= was less then now, 2:= was greater,
3:= sensor had an error then
|
b[4].0 0..1 | ¿
|
b[4].1234567 | -30..85°C | Temperature °C
Biased at -30. Range -30..85°C ( span 115°C ) aka: ( -22..183 °F )
degc = ( b[4] & 0x7F) -30
Errors:
124 | sensor could not be read
| 125 | value less than minimun expected
| 126 | value greater than maximun expected
| 127 | temperature sensor failed to initialize
| | | | |
|
b[5].0123 | 990..1020 | Air pressure in pa
biased at 990
pa = ( b[5] >> 8 ) + 990
lowest recorded 870 hPa; highest was 1083.8mb==kpa
| errors
| 60 | sensor could not be read
| 61 | value less than minimun expected
| 61 | value greater than maximun expected
| 63 | error sensor failed to initialize
| | | | |
(Users who need larger range undoubtedly need a much more epensive device )
| b[5].45 0..3 Change in pressure since 2 hours ago
0| no change
| 1| pressure was less then it is now
| 2| pressure was greater
| 3| pressure sensor had an error then
| | | | |
| b[5].67 0..3 Change in pressure since 4 hours ago
0| no change
| 1| pressure was less then it is now
| 2| pressure was greater
| 3| pressure sensor had an error then
| | | | |
|
b[6].01 0..3 | movement in X: in last hour(?):
0 no change; 1 +; 2 -; 3 sensor had an error
| b[6].23 0..3 | movement in Y:
| b[6].45 0..3 | movement in Z:
| b[6].67 0..3 | orientation in Z:
| b[7] | -1...+1 | orientation in Z in 1.4 degree increments
| b[8].0123 0..7|
frequency: 0 less than 5Hertz ; 1:
6-20Hz ; 2:21-100Hz; 3:101-5000Hz
| b[8].4..7 0..3| Vibration:amplitude: 0: < 1 mm; 1: 2..5mm ; 3: >5 mm
| b[8..23] | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |