Quandify configuration
Configuration guide
Payload codec
Application setup
Add the device to UMA
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
function Decode(fPort, bytes, LoRaObject) {
var data = {};
if (!bytes || bytes.length !== 28) {
data.errors = ["Payload missing or wrong length"];
return data;
}
if (fPort !== 1) {
data.errors = ["Not a status report"];
return data;
}
function toUInt16LE(b, i) { return b[i] | (b[i+1] << 8); }
function toUInt32LE(b, i) { return b[i] | (b[i+1] << 8) | (b[i+2] << 16) | (b[i+3] << 24); }
function toBattery(v) { return 1800 + v * 8; }
function toTemperature(v) { return (v / 2) - 20; }
var errorField = toUInt16LE(bytes, 4);
data.uptime = toUInt32LE(bytes, 0);
data.errorCode = errorField & 0x7fff;
data.isSensing = !(errorField & 0x8000);
data.totalVolume = toUInt32LE(bytes, 6);
data.totalHeat = toUInt32LE(bytes, 10);
data.leakState = bytes[22];
data.batteryActive = toBattery(bytes[23]);
data.batteryRecovered = toBattery(bytes[24]);
data.waterTemperatureMin = toTemperature(bytes[25]);
data.waterTemperatureMax = toTemperature(bytes[26]);
data.ambientTemperature = toTemperature(bytes[27]);
if (LoRaObject) {
data.devEUI = LoRaObject.devEUI;
data.rssi = LoRaObject.rxInfo && LoRaObject.rxInfo[0] ? LoRaObject.rxInfo[0].rssi : null;
data.snr = LoRaObject.rxInfo && LoRaObject.rxInfo[0] ? LoRaObject.rxInfo[0].loRaSNR : null;
data.rawData = LoRaObject.data;
data.time = LoRaObject.time ? LoRaObject.time : new Date().toISOString();
} else {
data.time = new Date().toISOString();
}
return data;
}