Data transfer from the CRa LoRaWAN network to TagoIO

Hello,

I would like to ask you for help with setting up data transfer from CRa LoRaWAN network to TagoIO.
I use Moko GPS tracker https://www.mokosmart.com/lw001-bg-lorawan-tm-gps-tracker/
I have a payload parser for this tracker that works fine in The Things Network:

//LW001-BG Payload Decoder rule//Creation time:2021-01-27//Suitable firmware versions:LW001-BG V1.2.5 & V1.2.4 &V1.2.3//Programming languages:Javascript//Suitable platforms:TTN/* Decoder MOKO LW001-BG GPS tracker with The Things Network * by Emanuele Goldoni, Sitip.net, 2020. <emanuele.goldoni@gmail.com>*/function Decoder(bytes, port) {    var decoded = {};    if (bytes[0] !== 0x02) { return decoded; }    decoded.sensor = "MOKO LW001-BG";    decoded.current_pkt = bytes[1];    if (decoded.current_pkt == 1) {        var f_lat = Bytes2Float(bytes.slice(2,6))        var deg_lat = Math.floor(f_lat/100);        decoded.latitude = deg_lat + (f_lat - deg_lat*100)/60;        var f_lon = Bytes2Float(bytes.slice(6, 10))        var deg_lon = Math.floor(f_lon/100);        decoded.longitude = deg_lon + (f_lon - deg_lon*100)/60;    } else if (decoded.current_pkt == 2) {        decoded.battery = (bytes[2] === 0x00) ? "ok" : "warning";        var f_speed = Bytes2Float(bytes.slice(3, 7))        decoded.speed = f_speed * 1.852;  // from knots to km/h        raw_xdir = ((bytes[8] << 8) | bytes[7])        decoded.xdir = raw_xdir / 100        raw_ydir = ((bytes[10] << 8) | bytes[9])        decoded.ydir = raw_ydir / 100    }    return decoded;}/*   Convert to float a value represented in the 4-byte IEEE 754 standard.   Byte order is low byte first.   Implementation based on https://stackoverflow.com/a/37471538 by Ilya Bursov*/function Bytes2Float(bytes) {    var bits = ((bytes[3] << 24) | (bytes[2] << 16) | (bytes[1] << 8) | (bytes[0]));    var sign = ((bits >>> 31) === 0) ? 1.0 : -1.0;    var e = ((bits >>> 23) & 0xff);    var m = (e === 0) ? (bits & 0x7fffff) << 1 : (bits & 0x7fffff) | 0x800000;    var f = sign * m * Math.pow(2, e - 150);    return f}

If the tracker is connected via the CRa LoRaWAN network, the connection works up to TagoIO, but in the TagoIO live inspector for the GPS tracker it is written:

2022-10-26 21:27:16: [POST] HTTP Request: From: 82.99.180.180 [Apache-HttpClient/4.5.2 (Java/1.8.0_292)] - Content-Type: application/json - Token Ending: 0af752022-10-26 21:27:16: Raw payload: {"type":"D","data":"{\"cmd\":\"gw\",\"seqno\":793027102,\"EUI\":\"003E54A26542EEF2\",\"ts\":1666812435447,\"fcnt\":1,\"port\":8,\"freq\":868300000,\"toa\":1482,\"dr\":\"SF12 BW125 4/5\",\"ack\":false,\"gws\":[{\"rssi\":-95,\"snr\":-6.2,\"ts\":1666812435451,\"tmms\":0,\"time\":\"2022-10-26T19:27:15.411763000Z\",\"gweui\":\"647FDAFFFF0069C4\",\"ant\":0,\"lat\":49.187359,\"lon\":16.534279},{\"rssi\":-105,\"snr\":-9,\"ts\":1666812435461,\"tmms\":0,\"time\":\"2022-10-26T19:27:15.411732000Z\",\"gweui\":\"647FDAFFFF0069E8\",\"ant\":0,\"lat\":49.223438,\"lon\":16.626137},{\"rssi\":-107,\"snr\":-5.8,\"ts\":1666812435453,\"tmms\":0,\"time\":\"2022-10-26T19:27:15.411743000Z\",\"gweui\":\"647FDAFFFF006A1C\",\"ant\":0,\"lat\":49.232315,\"lon\":16.581175},{\"rssi\":-107,\"snr\":-8.2,\"ts\":1666812435447,\"tmms\":0,\"time\":\"2022-10-26T19:27:15.411762000Z\",\"gweui\":\"647FDAFFFF006A70\",\"ant\":0,\"lat\":49.215981,\"lon\":16.501905},{\"rssi\":-108,\"snr\":-12.2,\"ts\":1666812435522,\"tmms\":0,\"time\":\"2022-10-26T19:27:15.411747000Z\",\"gweui\":\"647FDAFFFF009592\",\"ant\":0,\"lat\":49.2033,\"lon\":16.593462},{\"rssi\":-115,\"snr\":-2,\"ts\":1666812435460,\"tmms\":0,\"time\":\"2022-10-26T19:27:15.411735000Z\",\"gweui\":\"647FDAFFFF00AE05\",\"ant\":0,\"lat\":49.223373,\"lon\":16.674891}],\"bat\":255,\"data\":\"020200ae47e13dfb45a000\",\"_id\":\"63598a13ed1f97e990ef1025\"}","tech":"L","tags":[]}2022-10-26 21:27:16: Result of [device] payload parser: [{"type":"D","data":"{\"cmd\":\"gw\",\"seqno\":793027102,\"EUI\":\"003E54A26542EEF2\",\"ts\":1666812435447,\"fcnt\":1,\"port\":8,\"freq\":868300000,\"toa\":1482,\"dr\":\"SF12 BW125 4/5\",\"ack\":false,\"gws\":[{\"rssi\":-95,\"snr\":-6.2,\"ts\":1666812435451,\"tmms\":0,\"time\":\"2022-10-26T19:27:15.411763000Z\",\"gweui\":\"647FDAFFFF0069C4\",\"ant\":0,\"lat\":49.187359,\"lon\":16.534279},{\"rssi\":-105,\"snr\":-9,\"ts\":1666812435461,\"tmms\":0,\"time\":\"2022-10-26T19:27:15.411732000Z\",\"gweui\":\"647FDAFFFF0069E8\",\"ant\":0,\"lat\":49.223438,\"lon\":16.626137},{\"rssi\":-107,\"snr\":-5.8,\"ts\":1666812435453,\"tmms\":0,\"time\":\"2022-10-26T19:27:15.411743000Z\",\"gweui\":\"647FDAFFFF006A1C\",\"ant\":0,\"lat\":49.232315,\"lon\":16.581175},{\"rssi\":-107,\"snr\":-8.2,\"ts\":1666812435447,\"tmms\":0,\"time\":\"2022-10-26T19:27:15.411762000Z\",\"gweui\":\"647FDAFFFF006A70\",\"ant\":0,\"lat\":49.215981,\"lon\":16.501905},{\"rssi\":-108,\"snr\":-12.2,\"ts\":1666812435522,\"tmms\":0,\"time\":\"2022-10-26T19:27:15.411747000Z\",\"gweui\":\"647FDAFFFF009592\",\"ant\":0,\"lat\":49.2033,\"lon\":16.593462},{\"rssi\":-115,\"snr\":-2,\"ts\":1666812435460,\"tmms\":0,\"time\":\"2022-10-26T19:27:15.411735000Z\",\"gweui\":\"647FDAFFFF00AE05\",\"ant\":0,\"lat\":49.223373,\"lon\":16.674891}],\"bat\":255,\"data\":\"020200ae47e13dfb45a000\",\"_id\":\"63598a13ed1f97e990ef1025\"}","tech":"L","tags":[]}]2022-10-26 21:27:16: Connection refused, invalid payload: {"zodError":{"variable":[{"message":"Required","path":["variable"]}]}}------2022-10-26 21:27:11: [POST] HTTP Request: From: 82.99.180.180 [Apache-HttpClient/4.5.2 (Java/1.8.0_292)] - Content-Type: application/json - Token Ending: 0af752022-10-26 21:27:11: Raw payload: {"type":"D","data":"{\"cmd\":\"gw\",\"seqno\":793027058,\"EUI\":\"003E54A26542EEF2\",\"ts\":1666812430995,\"fcnt\":0,\"port\":8,\"freq\":868300000,\"toa\":1482,\"dr\":\"SF12 BW125 4/5\",\"ack\":false,\"gws\":[{\"rssi\":-96,\"snr\":-11.8,\"ts\":1666812431003,\"tmms\":0,\"time\":\"2022-10-26T19:27:10.959980000Z\",\"gweui\":\"647FDAFFFF0069E8\",\"ant\":0,\"lat\":49.223438,\"lon\":16.626137},{\"rssi\":-107,\"snr\":-7.2,\"ts\":1666812431010,\"tmms\":0,\"time\":\"2022-10-26T19:27:10.960011000Z\",\"gweui\":\"647FDAFFFF0069C4\",\"ant\":0,\"lat\":49.187359,\"lon\":16.534279},{\"rssi\":-107,\"snr\":-10.8,\"ts\":1666812431009,\"tmms\":0,\"time\":\"2022-10-26T19:27:10.959991000Z\",\"gweui\":\"647FDAFFFF006A1C\",\"ant\":0,\"lat\":49.232315,\"lon\":16.581175},{\"rssi\":-113,\"snr\":-6.5,\"ts\":1666812431008,\"tmms\":0,\"time\":\"2022-10-26T19:27:10.960010000Z\",\"gweui\":\"647FDAFFFF006A70\",\"ant\":0,\"lat\":49.215981,\"lon\":16.501905},{\"rssi\":-115,\"snr\":-4.5,\"ts\":1666812430995,\"tmms\":0,\"time\":\"2022-10-26T19:27:10.959983000Z\",\"gweui\":\"647FDAFFFF00AE05\",\"ant\":0,\"lat\":49.223373,\"lon\":16.674891}],\"bat\":255,\"data\":\"0201589c99457443cd44\",\"_id\":\"63598a0fddcef96fd3288703\"}","tech":"L","tags":[]}2022-10-26 21:27:11: Result of [device] payload parser: [{"type":"D","data":"{\"cmd\":\"gw\",\"seqno\":793027058,\"EUI\":\"003E54A26542EEF2\",\"ts\":1666812430995,\"fcnt\":0,\"port\":8,\"freq\":868300000,\"toa\":1482,\"dr\":\"SF12 BW125 4/5\",\"ack\":false,\"gws\":[{\"rssi\":-96,\"snr\":-11.8,\"ts\":1666812431003,\"tmms\":0,\"time\":\"2022-10-26T19:27:10.959980000Z\",\"gweui\":\"647FDAFFFF0069E8\",\"ant\":0,\"lat\":49.223438,\"lon\":16.626137},{\"rssi\":-107,\"snr\":-7.2,\"ts\":1666812431010,\"tmms\":0,\"time\":\"2022-10-26T19:27:10.960011000Z\",\"gweui\":\"647FDAFFFF0069C4\",\"ant\":0,\"lat\":49.187359,\"lon\":16.534279},{\"rssi\":-107,\"snr\":-10.8,\"ts\":1666812431009,\"tmms\":0,\"time\":\"2022-10-26T19:27:10.959991000Z\",\"gweui\":\"647FDAFFFF006A1C\",\"ant\":0,\"lat\":49.232315,\"lon\":16.581175},{\"rssi\":-113,\"snr\":-6.5,\"ts\":1666812431008,\"tmms\":0,\"time\":\"2022-10-26T19:27:10.960010000Z\",\"gweui\":\"647FDAFFFF006A70\",\"ant\":0,\"lat\":49.215981,\"lon\":16.501905},{\"rssi\":-115,\"snr\":-4.5,\"ts\":1666812430995,\"tmms\":0,\"time\":\"2022-10-26T19:27:10.959983000Z\",\"gweui\":\"647FDAFFFF00AE05\",\"ant\":0,\"lat\":49.223373,\"lon\":16.674891}],\"bat\":255,\"data\":\"0201589c99457443cd44\",\"_id\":\"63598a0fddcef96fd3288703\"}","tech":"L","tags":[]}]2022-10-26 21:27:11: Connection refused, invalid payload: {"zodError":{"variable":[{"message":"Required","path":["variable"]}]}}------

The data bucket is empty.
I think the problem is that the data from the CRa network comes in a different format than the basic payload parser can handle.
I’m just an ordinary user who plays with IoT in my free time, so unfortunately I’m not capable of solving this problem myself.
Can someone with experience help me please?

Hi Petr,

You must build a payload parser that must result in an array of TagoIO variables.

I get your payload and build a payload parser it must help you.

if (payload[0].gws) {

const tagoio_data = [{

variable: ‘battery’,

value: payload[0].bat,

group: String(payload[0].ts),

}];

for (const item of payload[0].gws) {

tagoio_data.push({

variable: ‘location’,

value: `${item.lat}, ${item.lon}`,

group: String(item.ts),

time: item.time,

location: {

lat: item.lat,

lng: item.lon,

}

}, {

variable: ‘rssi’,

value: item.rssi,

time: item.time,

group: String(item.ts),

})

}

payload = tagoio_data;

}

Hello,

Thank you for your answer.
I copied your code into the Payload parser tab in the device settings.
Unfortunately, the same error persists:

2022-10-28 08:46:32: [POST] HTTP Request: From: 82.99.180.180 [Apache-HttpClient/4.5.2 (Java/1.8.0_292)] - Content-Type: application/json - Token Ending: 0af752022-10-28 08:46:32: Raw payload: {"type":"D","data":"{\"cmd\":\"gw\",\"seqno\":794266364,\"EUI\":\"003E54A26542EEF2\",\"ts\":1666939592275,\"fcnt\":1,\"port\":8,\"freq\":868300000,\"toa\":1646,\"dr\":\"SF12 BW125 4/5\",\"ack\":false,\"gws\":[{\"rssi\":-109,\"snr\":-8.2,\"ts\":1666939592286,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227692000Z\",\"gweui\":\"647FDAFFFF0069E8\",\"ant\":0,\"lat\":49.223438,\"lon\":16.626137},{\"rssi\":-110,\"snr\":-5,\"ts\":1666939592275,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227715000Z\",\"gweui\":\"647FDAFFFF0069C4\",\"ant\":0,\"lat\":49.187359,\"lon\":16.534279},{\"rssi\":-110,\"snr\":-13.8,\"ts\":1666939592280,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227707000Z\",\"gweui\":\"647FDAFFFF00ADBD\",\"ant\":0,\"lat\":49.198803,\"lon\":16.579695},{\"rssi\":-111,\"snr\":-13.5,\"ts\":1666939592277,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227714000Z\",\"gweui\":\"647FDAFFFF006A70\",\"ant\":0,\"lat\":49.215981,\"lon\":16.501905},{\"rssi\":-112,\"snr\":1,\"ts\":1666939592277,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227687000Z\",\"gweui\":\"647FDAFFFF00AE05\",\"ant\":0,\"lat\":49.223373,\"lon\":16.674891},{\"rssi\":-112,\"snr\":-14.5,\"ts\":1666939592288,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227699000Z\",\"gweui\":\"647FDAFFFF009592\",\"ant\":0,\"lat\":49.2033,\"lon\":16.593462},{\"rssi\":-115,\"snr\":-17.2,\"ts\":1666939592281,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227726000Z\",\"gweui\":\"647FDAFFFF006A99\",\"ant\":0,\"lat\":49.129841,\"lon\":16.612524},{\"rssi\":-116,\"snr\":-16.5,\"ts\":1666939592305,\"tmms\":1350974810227,\"time\":\"2022-10-28T06:46:32.227693227Z\",\"gweui\":\"B827EBFFFF7DB706\",\"ant\":0,\"lat\":49.200565,\"lon\":16.625501},{\"rssi\":-120,\"snr\":-17.8,\"ts\":1666939592271,\"tmms\":1350974810227,\"time\":\"2022-10-28T06:46:31.227686000Z\",\"gweui\":\"B827EBFFFFD8ACDA\",\"ant\":0,\"lat\":49.290514,\"lon\":16.630845}],\"bat\":255,\"data\":\"020200b81e053e1d46b4fc\",\"_id\":\"635b7ac83e1aeee9ac835b33\"}","tech":"L","tags":[]}2022-10-28 08:46:32: Result of [device] payload parser: [{"type":"D","data":"{\"cmd\":\"gw\",\"seqno\":794266364,\"EUI\":\"003E54A26542EEF2\",\"ts\":1666939592275,\"fcnt\":1,\"port\":8,\"freq\":868300000,\"toa\":1646,\"dr\":\"SF12 BW125 4/5\",\"ack\":false,\"gws\":[{\"rssi\":-109,\"snr\":-8.2,\"ts\":1666939592286,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227692000Z\",\"gweui\":\"647FDAFFFF0069E8\",\"ant\":0,\"lat\":49.223438,\"lon\":16.626137},{\"rssi\":-110,\"snr\":-5,\"ts\":1666939592275,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227715000Z\",\"gweui\":\"647FDAFFFF0069C4\",\"ant\":0,\"lat\":49.187359,\"lon\":16.534279},{\"rssi\":-110,\"snr\":-13.8,\"ts\":1666939592280,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227707000Z\",\"gweui\":\"647FDAFFFF00ADBD\",\"ant\":0,\"lat\":49.198803,\"lon\":16.579695},{\"rssi\":-111,\"snr\":-13.5,\"ts\":1666939592277,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227714000Z\",\"gweui\":\"647FDAFFFF006A70\",\"ant\":0,\"lat\":49.215981,\"lon\":16.501905},{\"rssi\":-112,\"snr\":1,\"ts\":1666939592277,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227687000Z\",\"gweui\":\"647FDAFFFF00AE05\",\"ant\":0,\"lat\":49.223373,\"lon\":16.674891},{\"rssi\":-112,\"snr\":-14.5,\"ts\":1666939592288,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227699000Z\",\"gweui\":\"647FDAFFFF009592\",\"ant\":0,\"lat\":49.2033,\"lon\":16.593462},{\"rssi\":-115,\"snr\":-17.2,\"ts\":1666939592281,\"tmms\":0,\"time\":\"2022-10-28T06:46:32.227726000Z\",\"gweui\":\"647FDAFFFF006A99\",\"ant\":0,\"lat\":49.129841,\"lon\":16.612524},{\"rssi\":-116,\"snr\":-16.5,\"ts\":1666939592305,\"tmms\":1350974810227,\"time\":\"2022-10-28T06:46:32.227693227Z\",\"gweui\":\"B827EBFFFF7DB706\",\"ant\":0,\"lat\":49.200565,\"lon\":16.625501},{\"rssi\":-120,\"snr\":-17.8,\"ts\":1666939592271,\"tmms\":1350974810227,\"time\":\"2022-10-28T06:46:31.227686000Z\",\"gweui\":\"B827EBFFFFD8ACDA\",\"ant\":0,\"lat\":49.290514,\"lon\":16.630845}],\"bat\":255,\"data\":\"020200b81e053e1d46b4fc\",\"_id\":\"635b7ac83e1aeee9ac835b33\"}","tech":"L","tags":[]}]2022-10-28 08:46:32: Connection refused, invalid payload: {"zodError":{"variable":[{"message":"Required","path":["variable"]}]}}------2022-10-28 08:46:28: [POST] HTTP Request: From: 82.99.180.180 [Apache-HttpClient/4.5.2 (Java/1.8.0_292)] - Content-Type: application/json - Token Ending: 0af752022-10-28 08:46:28: Raw payload: {"type":"D","data":"{\"cmd\":\"gw\",\"seqno\":794266324,\"EUI\":\"003E54A26542EEF2\",\"ts\":1666939588052,\"fcnt\":0,\"port\":8,\"freq\":868100000,\"toa\":1482,\"dr\":\"SF12 BW125 4/5\",\"ack\":false,\"gws\":[{\"rssi\":-110,\"snr\":-0.2,\"ts\":1666939588059,\"tmms\":0,\"time\":\"2022-10-28T06:46:28.012527000Z\",\"gweui\":\"647FDAFFFF00AE05\",\"ant\":0,\"lat\":49.223373,\"lon\":16.674891},{\"rssi\":-110,\"snr\":-9.8,\"ts\":1666939588068,\"tmms\":0,\"time\":\"2022-10-28T06:46:28.012532000Z\",\"gweui\":\"647FDAFFFF0069E8\",\"ant\":0,\"lat\":49.223438,\"lon\":16.626137},{\"rssi\":-111,\"snr\":-12.5,\"ts\":1666939588054,\"tmms\":0,\"time\":\"2022-10-28T06:46:28.012555000Z\",\"gweui\":\"647FDAFFFF0069C4\",\"ant\":0,\"lat\":49.187359,\"lon\":16.534279},{\"rssi\":-113,\"snr\":-6.5,\"ts\":1666939588052,\"tmms\":0,\"time\":\"2022-10-28T06:46:28.012535000Z\",\"gweui\":\"647FDAFFFF006A1C\",\"ant\":0,\"lat\":49.232315,\"lon\":16.581175},{\"rssi\":-115,\"snr\":-12.2,\"ts\":1666939588052,\"tmms\":0,\"time\":\"2022-10-28T06:46:28.012554000Z\",\"gweui\":\"647FDAFFFF006A70\",\"ant\":0,\"lat\":49.215981,\"lon\":16.501905},{\"rssi\":-115,\"snr\":-16,\"ts\":1666939588049,\"tmms\":0,\"time\":\"2022-10-28T06:46:28.012522000Z\",\"gweui\":\"647FDAFFFF00AD48\",\"ant\":0,\"lat\":49.215607,\"lon\":16.635107}],\"bat\":255,\"data\":\"0201499c99456443cd44\",\"_id\":\"635b7ac4ed1f97e990f5d1af\"}","tech":"L","tags":[]}2022-10-28 08:46:28: Result of [device] payload parser: [{"type":"D","data":"{\"cmd\":\"gw\",\"seqno\":794266324,\"EUI\":\"003E54A26542EEF2\",\"ts\":1666939588052,\"fcnt\":0,\"port\":8,\"freq\":868100000,\"toa\":1482,\"dr\":\"SF12 BW125 4/5\",\"ack\":false,\"gws\":[{\"rssi\":-110,\"snr\":-0.2,\"ts\":1666939588059,\"tmms\":0,\"time\":\"2022-10-28T06:46:28.012527000Z\",\"gweui\":\"647FDAFFFF00AE05\",\"ant\":0,\"lat\":49.223373,\"lon\":16.674891},{\"rssi\":-110,\"snr\":-9.8,\"ts\":1666939588068,\"tmms\":0,\"time\":\"2022-10-28T06:46:28.012532000Z\",\"gweui\":\"647FDAFFFF0069E8\",\"ant\":0,\"lat\":49.223438,\"lon\":16.626137},{\"rssi\":-111,\"snr\":-12.5,\"ts\":1666939588054,\"tmms\":0,\"time\":\"2022-10-28T06:46:28.012555000Z\",\"gweui\":\"647FDAFFFF0069C4\",\"ant\":0,\"lat\":49.187359,\"lon\":16.534279},{\"rssi\":-113,\"snr\":-6.5,\"ts\":1666939588052,\"tmms\":0,\"time\":\"2022-10-28T06:46:28.012535000Z\",\"gweui\":\"647FDAFFFF006A1C\",\"ant\":0,\"lat\":49.232315,\"lon\":16.581175},{\"rssi\":-115,\"snr\":-12.2,\"ts\":1666939588052,\"tmms\":0,\"time\":\"2022-10-28T06:46:28.012554000Z\",\"gweui\":\"647FDAFFFF006A70\",\"ant\":0,\"lat\":49.215981,\"lon\":16.501905},{\"rssi\":-115,\"snr\":-16,\"ts\":1666939588049,\"tmms\":0,\"time\":\"2022-10-28T06:46:28.012522000Z\",\"gweui\":\"647FDAFFFF00AD48\",\"ant\":0,\"lat\":49.215607,\"lon\":16.635107}],\"bat\":255,\"data\":\"0201499c99456443cd44\",\"_id\":\"635b7ac4ed1f97e990f5d1af\"}","tech":"L","tags":[]}]2022-10-28 08:46:29: Connection refused, invalid payload: {"zodError":{"variable":[{"message":"Required","path":["variable"]}]}}------

Hi Petr,

Comment the code provided above (don’t delete your gonna user later).

insert this code:

payload = [{

variable: ‘payload’,

metadata: {

payload  

},

}]

it must send the variable ‘payload’ to your bucket. So, send us the result of this payload parser.

Hello,

Thank you again for your reply.
So I replaced the payload parser with this code and found a variable named payload in the bucket.
I am attaching screenshots from the bucket and also the log from the live inspector.
It looks like all the important data I care about (like location or battery) is stored in metadata now.

2022-10-28 19:55:21: [POST] HTTP Request: From: 82.99.180.180 [Apache-HttpClient/4.5.2 (Java/1.8.0_292)] - Content-Type: application/json - Token Ending: 0af752022-10-28 19:55:21: Raw payload: {"type":"D","data":"{\"cmd\":\"gw\",\"seqno\":794664540,\"EUI\":\"003E54A26542EEF2\",\"ts\":1666979721151,\"fcnt\":1,\"port\":8,\"freq\":867500000,\"toa\":1482,\"dr\":\"SF12 BW125 4/5\",\"ack\":false,\"gws\":[{\"rssi\":-101,\"snr\":-11.2,\"ts\":1666979721151,\"tmms\":0,\"time\":\"2022-10-28T17:55:21.102803000Z\",\"gweui\":\"647FDAFFFF0069C4\",\"ant\":0,\"lat\":49.187389,\"lon\":16.534273},{\"rssi\":-101,\"snr\":-18.2,\"ts\":1666979721263,\"tmms\":0,\"time\":\"2022-10-28T17:55:21.102787000Z\",\"gweui\":\"647FDAFFFF009592\",\"ant\":0,\"lat\":49.2033,\"lon\":16.593464},{\"rssi\":-110,\"snr\":-8,\"ts\":1666979721153,\"tmms\":0,\"time\":\"2022-10-28T17:55:21.102802000Z\",\"gweui\":\"647FDAFFFF006A70\",\"ant\":0,\"lat\":49.215973,\"lon\":16.501926},{\"rssi\":-113,\"snr\":0,\"ts\":1666979721160,\"tmms\":0,\"time\":\"2022-10-28T17:55:21.102775000Z\",\"gweui\":\"647FDAFFFF00AE05\",\"ant\":0,\"lat\":49.222599,\"lon\":16.674744},{\"rssi\":-114,\"snr\":-6,\"ts\":1666979721153,\"tmms\":0,\"time\":\"2022-10-28T17:55:21.102783000Z\",\"gweui\":\"647FDAFFFF006A1C\",\"ant\":0,\"lat\":49.232258,\"lon\":16.58124},{\"rssi\":-117,\"snr\":-15.2,\"ts\":1666979721151,\"tmms\":1351014939103,\"time\":\"2022-10-28T17:55:21.102775102Z\",\"gweui\":\"B827EBFFFFD8ACDA\",\"ant\":0,\"lat\":49.290515,\"lon\":16.630847}],\"bat\":255,\"data\":\"0202007b142e3e1946c2fc\",\"_id\":\"635c1789ddcef96fd330a02d\"}","tech":"L","tags":[]}2022-10-28 19:55:21: Result of [device] payload parser: [{"variable":"payload","metadata":{"payload":[{"type":"D","data":"{\"cmd\":\"gw\",\"seqno\":794664540,\"EUI\":\"003E54A26542EEF2\",\"ts\":1666979721151,\"fcnt\":1,\"port\":8,\"freq\":867500000,\"toa\":1482,\"dr\":\"SF12 BW125 4/5\",\"ack\":false,\"gws\":[{\"rssi\":-101,\"snr\":-11.2,\"ts\":1666979721151,\"tmms\":0,\"time\":\"2022-10-28T17:55:21.102803000Z\",\"gweui\":\"647FDAFFFF0069C4\",\"ant\":0,\"lat\":49.187389,\"lon\":16.534273},{\"rssi\":-101,\"snr\":-18.2,\"ts\":1666979721263,\"tmms\":0,\"time\":\"2022-10-28T17:55:21.102787000Z\",\"gweui\":\"647FDAFFFF009592\",\"ant\":0,\"lat\":49.2033,\"lon\":16.593464},{\"rssi\":-110,\"snr\":-8,\"ts\":1666979721153,\"tmms\":0,\"time\":\"2022-10-28T17:55:21.102802000Z\",\"gweui\":\"647FDAFFFF006A70\",\"ant\":0,\"lat\":49.215973,\"lon\":16.501926},{\"rssi\":-113,\"snr\":0,\"ts\":1666979721160,\"tmms\":0,\"time\":\"2022-10-28T17:55:21.102775000Z\",\"gweui\":\"647FDAFFFF00AE05\",\"ant\":0,\"lat\":49.222599,\"lon\":16.674744},{\"rssi\":-114,\"snr\":-6,\"ts\":1666979721153,\"tmms\":0,\"time\":\"2022-10-28T17:55:21.102783000Z\",\"gweui\":\"647FDAFFFF006A1C\",\"ant\":0,\"lat\":49.232258,\"lon\":16.58124},{\"rssi\":-117,\"snr\":-15.2,\"ts\":1666979721151,\"tmms\":1351014939103,\"time\":\"2022-10-28T17:55:21.102775102Z\",\"gweui\":\"B827EBFFFFD8ACDA\",\"ant\":0,\"lat\":49.290515,\"lon\":16.630847}],\"bat\":255,\"data\":\"0202007b142e3e1946c2fc\",\"_id\":\"635c1789ddcef96fd330a02d\"}","tech":"L","tags":[]}]}}]2022-10-28 19:55:21: Bucket [2911]: 1 Data Added------2022-10-28 19:55:17: [POST] HTTP Request: From: 82.99.180.180 [Apache-HttpClient/4.5.2 (Java/1.8.0_292)] - Content-Type: application/json - Token Ending: 0af752022-10-28 19:55:17: Raw payload: {"type":"D","data":"{\"cmd\":\"gw\",\"seqno\":794664495,\"EUI\":\"003E54A26542EEF2\",\"ts\":1666979716687,\"fcnt\":0,\"port\":8,\"freq\":867900000,\"toa\":1482,\"dr\":\"SF12 BW125 4/5\",\"ack\":false,\"gws\":[{\"rssi\":-109,\"snr\":-8.5,\"ts\":1666979716688,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651754000Z\",\"gweui\":\"647FDAFFFF006A70\",\"ant\":0,\"lat\":49.215973,\"lon\":16.501926},{\"rssi\":-111,\"snr\":-11,\"ts\":1666979716690,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651748000Z\",\"gweui\":\"647FDAFFFF0069EA\",\"ant\":0,\"lat\":49.175945,\"lon\":16.570679},{\"rssi\":-113,\"snr\":-4.8,\"ts\":1666979716704,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651724000Z\",\"gweui\":\"647FDAFFFF0069E8\",\"ant\":0,\"lat\":49.223427,\"lon\":16.626116},{\"rssi\":-114,\"snr\":-0.5,\"ts\":1666979716691,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651735000Z\",\"gweui\":\"647FDAFFFF006A1C\",\"ant\":0,\"lat\":49.232258,\"lon\":16.58124},{\"rssi\":-114,\"snr\":-8,\"ts\":1666979716694,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651755000Z\",\"gweui\":\"647FDAFFFF0069C4\",\"ant\":0,\"lat\":49.187389,\"lon\":16.534273},{\"rssi\":-114,\"snr\":-18.8,\"ts\":1666979716710,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651740000Z\",\"gweui\":\"647FDAFFFF00958D\",\"ant\":0,\"lat\":49.217834,\"lon\":16.592491},{\"rssi\":-115,\"snr\":-4.2,\"ts\":1666979716697,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651739000Z\",\"gweui\":\"647FDAFFFF00ADBD\",\"ant\":0,\"lat\":49.198818,\"lon\":16.579655},{\"rssi\":-115,\"snr\":-8.8,\"ts\":1666979716780,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651740000Z\",\"gweui\":\"647FDAFFFF00699E\",\"ant\":0,\"lat\":49.203041,\"lon\":16.619505},{\"rssi\":-115,\"snr\":-16,\"ts\":1666979716710,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651735000Z\",\"gweui\":\"647FDAFFFF011AC7\",\"ant\":0,\"lat\":49.205093,\"lon\":16.659164},{\"rssi\":-115,\"snr\":-16.5,\"ts\":1666979716687,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651743000Z\",\"gweui\":\"647FDAFFFF006A6C\",\"ant\":0,\"lat\":49.200386,\"lon\":16.608809},{\"rssi\":-116,\"snr\":-2,\"ts\":1666979716694,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651727000Z\",\"gweui\":\"647FDAFFFF00AE05\",\"ant\":0,\"lat\":49.222599,\"lon\":16.674744},{\"rssi\":-116,\"snr\":-12.2,\"ts\":1666979716758,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651740000Z\",\"gweui\":\"647FDAFFFF00699C\",\"ant\":0,\"lat\":49.195522,\"lon\":16.609989},{\"rssi\":-117,\"snr\":-9.5,\"ts\":1666979716722,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651739000Z\",\"gweui\":\"647FDAFFFF009592\",\"ant\":0,\"lat\":49.2033,\"lon\":16.593464}],\"bat\":255,\"data\":\"0201379c99457d43cd44\",\"_id\":\"635c17843e1aeee9ac85c876\"}","tech":"L","tags":[]}2022-10-28 19:55:17: Result of [device] payload parser: [{"variable":"payload","metadata":{"payload":[{"type":"D","data":"{\"cmd\":\"gw\",\"seqno\":794664495,\"EUI\":\"003E54A26542EEF2\",\"ts\":1666979716687,\"fcnt\":0,\"port\":8,\"freq\":867900000,\"toa\":1482,\"dr\":\"SF12 BW125 4/5\",\"ack\":false,\"gws\":[{\"rssi\":-109,\"snr\":-8.5,\"ts\":1666979716688,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651754000Z\",\"gweui\":\"647FDAFFFF006A70\",\"ant\":0,\"lat\":49.215973,\"lon\":16.501926},{\"rssi\":-111,\"snr\":-11,\"ts\":1666979716690,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651748000Z\",\"gweui\":\"647FDAFFFF0069EA\",\"ant\":0,\"lat\":49.175945,\"lon\":16.570679},{\"rssi\":-113,\"snr\":-4.8,\"ts\":1666979716704,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651724000Z\",\"gweui\":\"647FDAFFFF0069E8\",\"ant\":0,\"lat\":49.223427,\"lon\":16.626116},{\"rssi\":-114,\"snr\":-0.5,\"ts\":1666979716691,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651735000Z\",\"gweui\":\"647FDAFFFF006A1C\",\"ant\":0,\"lat\":49.232258,\"lon\":16.58124},{\"rssi\":-114,\"snr\":-8,\"ts\":1666979716694,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651755000Z\",\"gweui\":\"647FDAFFFF0069C4\",\"ant\":0,\"lat\":49.187389,\"lon\":16.534273},{\"rssi\":-114,\"snr\":-18.8,\"ts\":1666979716710,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651740000Z\",\"gweui\":\"647FDAFFFF00958D\",\"ant\":0,\"lat\":49.217834,\"lon\":16.592491},{\"rssi\":-115,\"snr\":-4.2,\"ts\":1666979716697,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651739000Z\",\"gweui\":\"647FDAFFFF00ADBD\",\"ant\":0,\"lat\":49.198818,\"lon\":16.579655},{\"rssi\":-115,\"snr\":-8.8,\"ts\":1666979716780,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651740000Z\",\"gweui\":\"647FDAFFFF00699E\",\"ant\":0,\"lat\":49.203041,\"lon\":16.619505},{\"rssi\":-115,\"snr\":-16,\"ts\":1666979716710,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651735000Z\",\"gweui\":\"647FDAFFFF011AC7\",\"ant\":0,\"lat\":49.205093,\"lon\":16.659164},{\"rssi\":-115,\"snr\":-16.5,\"ts\":1666979716687,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651743000Z\",\"gweui\":\"647FDAFFFF006A6C\",\"ant\":0,\"lat\":49.200386,\"lon\":16.608809},{\"rssi\":-116,\"snr\":-2,\"ts\":1666979716694,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651727000Z\",\"gweui\":\"647FDAFFFF00AE05\",\"ant\":0,\"lat\":49.222599,\"lon\":16.674744},{\"rssi\":-116,\"snr\":-12.2,\"ts\":1666979716758,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651740000Z\",\"gweui\":\"647FDAFFFF00699C\",\"ant\":0,\"lat\":49.195522,\"lon\":16.609989},{\"rssi\":-117,\"snr\":-9.5,\"ts\":1666979716722,\"tmms\":0,\"time\":\"2022-10-28T17:55:16.651739000Z\",\"gweui\":\"647FDAFFFF009592\",\"ant\":0,\"lat\":49.2033,\"lon\":16.593464}],\"bat\":255,\"data\":\"0201379c99457d43cd44\",\"_id\":\"635c17843e1aeee9ac85c876\"}","tech":"L","tags":[]}]}}]2022-10-28 19:55:17: Bucket [2911]: 1 Data Added------

For the sake of completeness, I am adding information on how the messages received from the device in the administration of the CRa LoRaWAN network look like:

{"cmd": "gw","seqno": 794673477,"ts": 1666980620972,"fcnt": 7,"port": 8,"freq": 867700000,"toa": 1482,"dr": "SF12 BW125 4/5","ack": false,"gws": [{"rssi": -111,"snr": -2.2,"ts": 1666980620981,"gweui": "647FDAFFFF0069E8","lat": 49.223427,"lon": 16.626116},{"rssi": -112,"snr": -4.2,"ts": 1666980620992,"gweui": "647FDAFFFF006A70","lat": 49.215973,"lon": 16.501926},{"rssi": -113,"snr": -2.2,"ts": 1666980620988,"gweui": "647FDAFFFF006A1C","lat": 49.232258,"lon": 16.58124},{"rssi": -114,"snr": -2,"ts": 1666980620976,"gweui": "647FDAFFFF00AE05","lat": 49.222599,"lon": 16.674744},{"rssi": -114,"snr": -2.5,"ts": 1666980620989,"gweui": "647FDAFFFF0069C4","lat": 49.187389,"lon": 16.534273},{"rssi": -114,"snr": -4.2,"ts": 1666980620974,"gweui": "647FDAFFFF00ADBD","lat": 49.198818,"lon": 16.579655},{"rssi": -115,"snr": -9,"ts": 1666980620996,"gweui": "647FDAFFFF00699E","lat": 49.203041,"lon": 16.619505},{"rssi": -115,"snr": -18.5,"ts": 1666980621009,"gweui": "647FDAFFFF00958D","lat": 49.217834,"lon": 16.592491},{"rssi": -116,"snr": -8.8,"ts": 1666980621023,"gweui": "647FDAFFFF011AC7","lat": 49.205093,"lon": 16.659164},{"rssi": -116,"snr": -18.5,"ts": 1666980620992,"gweui": "647FDAFFFF00ADEA","lat": 49.222404,"lon": 16.674545},{"rssi": -117,"snr": -17.5,"ts": 1666980621033,"gweui": "647FDAFFFF011ABC","lat": 49.191715,"lon": 16.609274},{"rssi": -118,"snr": -16,"ts": 1666980620972,"gweui": "B827EBFFFFD8ACDA","lat": 49.290515,"lon": 16.630847},{"rssi": -122,"snr": -17.5,"ts": 1666980620990,"gweui": "647FDAFFFF00AD48","lat": 49.215614,"lon": 16.635054}],"bat": 255,"data": "0202000ad7233c1746bffc","encdata": null,"EUI": "003E54A26542EEF2"}

I think there is information about all the network gateways the device has just connected through and at the very bottom is the data item.

Hi Petr,

Analyzing the logs and think the following code will work:

if (payload[0].data) {

const data = JSON.parse(payload[0].data);

const tagoio_data = [{

variable: ‘battery’,

value: data.bat,

group: String(data.ts),

}];

for (const item of data.gws) {

tagoio_data.push({

variable: ‘location’,

value: `${item.lat}, ${item.lon}`,

group: String(item.ts),

time: item.time,

location: {

lat: item.lat,

lng: item.lon,

}

}, {

variable: ‘rssi’,

value: item.rssi,

time: item.time,

group: String(item.ts),

})

}

payload = tagoio_data;

}

NOTE: This code will parse the message sent in your logs if your device sends other types of messages you must implement in the payload parser. I recommend you read the payload parser documentation.

Thank you so much for your amazing support.
The data is now stored in the bucket.
I found that all the location data are the locations of the gateways through which the GPS tracker connected to the network. However, data on the location of the tracker itself is missing.
I found that the tracker position data (and other other data) is encoded at the end of the information coming from CRa’s LoRaWAN network on TagoIO. Here in the data item:

],"bat": 255,"data": "0202000ad7233c1746bffc","encdata": null,"EUI": "003E54A26542EEF2"}

So I assume that I would need to filter this “data” item from the data coming from the CRa network on TagoIO and decode it using the payload parser that I mentioned in the first post and save the obtained data in a bucket.

Hi Petr,

Exactly. You must decode this data in hex and convert the TagoIO variables JSON.

You need to read the hardware documentation and see how to decode this data payload.

See the updated payload parser below, you just need to implement de decodePayload function:

function decodePayload(data) {const hardware_variables = [];// decode your hardware payloadreturn hardware_variables; //}if (payload[0].data) {const data = JSON.parse(payload[0].data);const tagoio_data = [{variable: 'battery',value: data.bat,group: String(data.ts),}];for (const item of data.gws) {tagoio_data.push({variable: 'location',value: `${item.lat}, ${item.lon}`,group: String(item.ts),time: item.time,location: {lat: item.lat,lng: item.lon,}}, {variable: 'rssi',value: item.rssi,time: item.time,group: String(item.ts),})}const hardware_variables = decodePayload(data.data);payload = tagoio_data.concat(hardware_variables);}