# Rak811 Tracker Board

**URL:** <https://www.thethingsnetwork.org/forum/t/rak811-tracker-board/11006>\
**Category:** End Devices (Nodes)\
**Created:** [December 7, 2017, 1:39am UTC](https://www.thethingsnetwork.org/forum/t/rak811-tracker-board/11006 "2017-12-07T01:39:45Z")\
**Posts on this page:** 1\
**Showing post:** 249

<div class="post-metadata">

**Author:** ![jcaridadhdez](https://www.thethingsnetwork.org/forum/user_avatar/www.thethingsnetwork.org/jcaridadhdez/32/40195_2.png) [@jcaridadhdez](https://www.thethingsnetwork.org/forum/u/jcaridadhdez)\
**Post date:** [April 25, 2018, 10:57am UTC](https://www.thethingsnetwork.org/forum/t/rak811-tracker-board/11006/249 "2018-04-25T10:57:51Z")

</div>

I use some similar like this one: [Best practices when sending GPS location data](https://www.thethingsnetwork.org/forum/t/best-practices-when-sending-gps-location-data/1242/21)

this for the encoder:  
int32\_t lat = latitude \* 10000;  
int32\_t lon = longitude \* 10000;  
int16\_t alt = altitudeGps \* 100;  
int8\_t hdev = hdopGps \* 10;

```
    if (ret == SUCCESS) {

        AppData[0] = lat;
        AppData[1] = lat >> 8;
        AppData[2] = lat >> 16;

        AppData[3] = lon;
        AppData[4] = lon >> 8;
        AppData[5] = lon >> 16;

        AppData[6] = alt;
        AppData[7] = alt >> 8;

        AppData[8] = hdev;

        AppDataSize = 9;

```

and this for the decoder:

```
function Decoder(b, port) {
var decoded = {};
switch (port) {
    case 2:
    var lat = (b[0] | b[1]<<8 | b[2]<<16 | (b[2] & 0x80 ? 0xFF<<24 : 0)) / 10000.0;
    var lon = (b[3] | b[4]<<8 | b[5]<<16 | (b[5] & 0x80 ? 0xFF<<24 : 0)) / 10000.0;
    var alt = (b[6] | b[7]<<8 | (b[7] & 0x80 ? 0xFFFF<<16 : 0)) / 100.0;
    var hdop = b[8] / 10.0;

        decoded = {
            "location": {
                "latitude": lat,
                "longitude": lon,
                "altitude": alt,
                "hdop": hdop
            },
        };
    break;

    case 3:
    var bat = (b[0] | b[1]<<8 | (b[1] & 0x80 ? 0xFFFF<<16 : 0)) * 10.0;

    decoded ={
        "battery":{
            "bat":bat
        }
    };
    break;

    case 4:
    var aX = (b[0] | b[1]<<8 | (b[1] & 0x80 ? 0xFFFF<<16 : 0)) / 10.0;
    var aY = (b[2] | b[3]<<8 | (b[3] & 0x80 ? 0xFFFF<<16 : 0)) / 10.0;
    var aZ = (b[4] | b[5]<<8 | (b[5] & 0x80 ? 0xFFFF<<16 : 0)) / 10.0;

    decoded ={
        "acceleration":{
            "aX":aX,
            "aY":aY,
            "aZ":aZ,
        }
    };
    break;
}
return decoded;

}

```

Tested in Salamanca (where I have negative longitude) and Budapest (all positive) and good results

---

_[View the full topic](https://www.thethingsnetwork.org/forum/t/rak811-tracker-board/11006)._
