This the decoder javascript
function decodeUplink(input) {
let bytes = input.bytes;
let data = {};
// Parcours du payload SenseCAP (peut contenir plusieurs channels)
/*for (let i = 0; i < bytes.length;) {
let channelId = (bytes[i] << 8) | bytes[i+1]; // 2 octets
let dataType = bytes[i+2]; // 1 octet
i += 3;
if (dataType === 0x02) { // Uint16
let value = (bytes[i] << 8) | bytes[i+1];
data["channel_" + channelId] = value;
i += 2;
} else {
// type non supporté (skip ?)
break;
}
}*/
for (let i = 0; i < bytes.length;) {
let channelId = (bytes[i] << 8) | bytes[i+1]; // 2 octets
let dataType = bytes[i+2]; // 1 octet
i += 3;
if (channelId === 0x1301) {
let value = (bytes[i] << 8) | bytes[i+1]; // Uint16
data["dataType"] = dataType;
data.bike_count = value;
i += 2;
} else {
// skip unsupported / unknown
break;
}
}