There is no good information about how to decode the payload of this sensor.
I found this in a forgotten folder hide in the hell at the office.
Decoding payload of Maxbotix LoRaWAN devices v2
———————————————–Date: 2017-01-18
Frame format version 2
———————-frame header:
uint8_t frame_format_id; // == 2 for version 2
uint16_t node_id;
uint16_t valid_data_flags;sensor 0 data:
uint16_t distance; // [mm]
uint16_t trials; // # measurement trialssensor 1 data:
uint16_t battery_voltage; // VBAT = battery_voltage / 1000 [V]Notes
—–– 16 bit unsigned integers (uint16_t) are big endian: MSB first, LSB
second byte.
– valid_data_flags: 16 flags; bit 0 (LSB): sensor 0 data flag; bit 1:
sensor 1 data flag, etc.
– flag x == 1: sensor x data included
– flag x == 0: sensor x data not includedExample 1
———
02 012f 0003 04d2 0001 0bb1frame_format_id: 2
node_id: 303
valid_data_flags: 0000 0000 0000 0011distance: 1234 mm
trials: 1
battery_voltage: 2.993 VExample 2
———
02 012f 0002 0bb1frame_format_id: 2
node_id: 303
valid_data_flags: 0000 0000 0000 0010distance: (no data)
trials: (no data)
battery_voltage: 2.993 V
Base on that I was able to understand the payload sections getting this:
02
|
012f
|
0003
|
04d2
|
0001
|
0bb1
|
---|---|---|---|---|---|
format version | node ID | flag | distance | trials | voltage |
2 | 303 | 3 | 1234 | 1 | 2993 |
And now it is possible to create a decoder payload for TTN:
function Decoder(bytes) {
var data = {};
var flag = (bytes[3] << 8) + bytes[4];
data.version = bytes[0];
data.nodeid = (bytes[1] << 8) + bytes[2];if (flag == 3){
data.distance = ((bytes[5] << 8) + bytes[6]); //milimeters
data.trials = (bytes[7] << 8) + bytes[8];
data.voltage = ((bytes[9] << 8) + bytes[10]); // V / 1000
return data;
}else{
data.voltage = ((bytes[5] << 8) + bytes[6]); // V / 1000
return data;
}
}
This is the data decoded based on the same payload example:
02 01 2F 00 03 04 D2 00 01 0B B1
{
“distance”: 1234,
“nodeid”: 303,
“trials”: 1,
“version”: 2,
“voltage”: 2993
}
or 02 01 2F 00 02 0B B1
{
“nodeid”: 303,
“version”: 2,
“voltage”: 2993
}