I just got the Dragino LDDS75 LoRaWAN Distance Detection Sensor and connected it successully to TTN, configured the payload decoder and can receive the sensors readings in Cayenne.
What I want to achieve with the distance sensor is to monitor the amount of fluid level in a tank. What I get is a distance reading to the surface of the fluid. So I need to do some calculations:
($TANK_HEIGHT - $SENSOR_READING) x CONSTANT
to get the amount of fluid in the tank.
Where is the typical place to do such a thing? Should I modify the Payload Decoder or is there any other place to do this kind of stuff?
I thought, i could do some calculations in the payload decoder and return some aditional data from the payload decoder like this
function Decoder(bytes, port) {
// Decode an uplink message from a buffer
// (array) of bytes to an object of fields.
var value=(bytes[0]<<8 | bytes[1]) & 0x3FFF;
var batV=value/1000;//Battery,units:V
value=bytes[2]<<8 | bytes[3];
var distance=(value);//distance,units:mm
//var distance=((1000-value)*7)+" mm";//distance,units:mm
if(value===0)
distance = "No Sensor";
else if(value<280)
distance = "Invalid Reading";
return {
Bat:batV +" V",
Temp:20 +" c",
prox:distance +" cm",
Distance:distance +" mm",
tl: 50 +" null",
liquid: 700 +" l"
};
}
but the additional (bogus) data did not appear in Cayenne. Any ideas what I could do instead? Any hints you can give me?
Thank you very much!