Hi everyone, Maria from Ubidots here. I just bumped into this forum while reading about the LGT-92 so I thought I’d jump in. I have an LGT-92 setup in my Ubidots account and is working just fine:
Please find my decoder below. I took the one in Dragino’s user manual and only changes one line of code so the returned JSON is one that Ubidots can understand as a position (needs to be a tuple, or within a “context”, as @KruisR’s attempt). In this case, I’m using a tuple:
JSON payload returned by the decoder:
{
“position”: {“lat”: 6.32122, “lng”: -75.23234},
“alarm”: false,
“batV”: 2.761,
“pitch”: 4.57,
“roll”: 0.83
}
Here my decoder:
function Decoder(bytes, port) {
// Decode an uplink message from a buffer
// (array) of bytes to an object of fields.
var alarm=(bytes[6] & 0x40)?true:false;//Alarm status
value=((bytes[6] & 0x3f) <<8) | bytes[7];
var batV=value/1000;//Battery,units:Volts
value=bytes[8]<<8 | bytes[9];
if(bytes[8] & 0x80)
{
value |=0xFFFF0000;
}
var roll=value/100;//roll,units: °
value=bytes[10]<<8 | bytes[11];
if(bytes[10] & 0x80)
{
value |=0xFFFF0000;
}
var pitch=value/100; //pitch,units: °
var json={
roll:roll,
pitch:pitch,
batV:batV,
alarm:alarm
};
var value=bytes[0]<<16 | bytes[1]<<8 | bytes[2];
if(bytes[0] & 0x80)
{
value |=0xFFFFFF000000;
}
var value2=bytes[3]<<16 | bytes[4]<<8 | bytes[5];
if(bytes[3] & 0x80)
{
value2 |=0xFFFFFF000000;
}
if (value == 0x0FFFFF && value2 == 0x0FFFFF)
{
//gps disabled (low battery)
} else if (value === 0 && value2 === 0) {
//gps no position yet
} else {
json.position = {"lat": value/10000, "lng": value2/10000};
}
return json;
}