RAK 7200 TTN Mapper tracking decoder

Hallo zusammen

Mit dem RAK 7200 ist es doch möglich eine Integration bei thethingsnetwork.org für ttnmapper.org zu machen, so das die gesendeten Pakete aufgezeichnet werden.
RAK 7200 und Handy App tracken ist möglich und geht auch. Wenn ich tracken möchte ohne Handy App, muss ich jetzt die JSON, bei thethingsnetwork, im Decoder anpassen. Ich verstehe nur nicht wie ich den Decoder schreiben kann bzw. wo ich den Decoder her bekommen.

Vielen Dank im Voraus für die Hilfe


Hi Daniel

I doubt that you’ll get any responses in German on this forum. Rather try asking your questions in English. Luckily I get the most important part of your question.

For TTN Mapper you can use the default RAK7200 decoder as provided here:

When I tested this my device transmitted Cayenne LPP format, which allowed me to choose the default decoder provided on the TTN Console. This will work with TTN Mapper.

Also read how to set everything up here: https://doc.rakwireless.com/quick-start/rak7200-lora-tracker/analyzing-the-data-from-rak7200

My recommendation would also be to use the following settings:

Daniel didn’t want to use the app.

The RAK7200 doesn’t include the hdop in the payload so can’t be used on its own with TTNMapper, but as you suggest, the other settings are good to go as the radio element.

@nmcc I think you should do some research of your own before making statements like these. I’m the author of TTN Mapper, and I understood the original question quite well.

The RAK7200 does work with TTN Mapper, even though it does not send HDOP. You can also see it in the TTN Mapper FAQ (https://ttnmapper.org/faq/):

When using the Cayenne LPP data format, the GPS coordinates will be decoded into a different JSON format, but this format is also supported. Cayenne LPP does not contain a GPS accuracy, and therefore this data will be considered as inferior and will carry less weight in calculation of coverage, and will be deleted first during data cleanup.

@jpmeijers, I have in the past built devices for the express purpose of driving around mapping community gateways I’ve deployed at my own expense, so I have done some research in the past. In this instance, I apologise profusely for not having recognised your name or memorised all of your FAQ. Sadly I can’t afford the time to revisit every site before answering questions.

Keep up the good work, a useful resource.

Hi, I also have two RAK7200 and want to use them on TTN Mapper as well (love your work @jpmeijers).

The issue I’m facing is that I do get GPS details in my application and in Cayenne, but the GPS coordinates in TTN Mapper are only zeros. That is probably why no data is showing up on TTN Mapper. I did create an experiment today and data is showing up there (experiment=rak-test)

TTN Mapper:

lat lon alt accuracy hdop sats
0.000000 0.000000 0.0 0.00 0.0 0
0.000000 0.000000 0.0 0.00 0.0 0

Data in TTN Console - data:

“acceleration_x”: “0.041g”,
“acceleration_y”: “0.013g”,
“acceleration_z”: “0.985g”,
“altitude”: “0.5m”,
“battery”: “3.86V”,
“gyroscope_x”: “-0.26°/s”,
“gyroscope_y”: “1.44°/s”,
“gyroscope_z”: “-0.02°/s”,
“latitude”: “52.0727°”,
“longitude”: “4.4059°”,
“magnetometer_x”: “-8.4μT”,
“magnetometer_y”: “-76.5μT”,
“magnetometer_z”: “16.65μT”

I am using OTAA, SF7 and the default RAK TTN Decoder

What could I be doing wrong?

The problem with your data is the degree sign in:

“latitude”: “52.0727°”,
“longitude”: “4.4059°”,

Try removing the unit signs from all your values, as those don’t change and are always known. Thus only put numbers into the json fields, ex:

“latitude”: 52.0727,
“longitude”: 4.4059,

Thank you, that indeed did the trick.

That does mean however that the default RAK decoder isn’t compatible with TTN Mapper.

For others reading this topic, try replacing the GPS section with the following:

case 0x0188:// GPS
myObj.latitude = parseFloat((parseTriple(str.substring(4, 10), 16) * 0.0001).toFixed(4));//unit:°
myObj.longitude = parseFloat((parseTriple(str.substring(10, 16), 16) * 0.0001).toFixed(4));//unit:°
myObj.altitude = parseFloat((parseTriple(str.substring(16, 22), 16) * 0.01).toFixed(1));//unit:m
str = str.substring(22);

That is what did the trick for me.

should be this for 6 digits precision I think

    myObj.latitude = parseFloat((parseTriple(str.substring(4, 10), 16) * 0.000001).toFixed(6));//unit:°
    myObj.longitude = parseFloat((parseTriple(str.substring(10, 16), 16) * 0.000001).toFixed(6));//unit:°
    myObj.altitude = parseFloat((parseTriple(str.substring(16, 22), 16) * 0.01).toFixed(1));//unit:m
    str = str.substring(28);