This guide will instruct you to create a codec for a LoRaWAN node to decode uplinks in Easy LoRaWAN Cloud.

  • Easy LoRaWAN Server: https://lorawan.easylorawan.com
  • Codec repository: here
  • The uplink data is in field data with Base64 format. We need to decode the data into object with readable values.

1. Sample codecs for commercial LoRaWAN Nodes

Step 1.1: Sample codecs are collected here

Step 1.2: (Optional) If you have a codec for TTNv2 or ChirpStack v3, you need to put the below wrapper function to convert a codec to ChirpStack v4.

// TTNv2
function Decoder(bytes, port) {
   ...
}

// TTNv2 to V4 converter
function decodeUplink(input) {
   return {
   data: Decoder(input.bytes, input.fPort)
   };
}
// V3
function Decode(fPort, bytes, variables) {
   ...
}

// V3 to V4 converter
function decodeUplink(input) {
   // Wrapper function for ChirpStack v4
   return {
      data: Decode(input.fPort, input.bytes, input.variables)
   };
}

2. To create a custom codec if a sample codec is not available

Step 2.1: We need to decode uplink data into required JSON format for Easy LoRaWAN Cloud.

  • To choose “Custom JavaScript codec functions”.
  • To populate the function decodeUplink(input).
  • To check sample codecs for hints.

Step 2.2: We can use the below codec as a starting point to convert bytes into a JSON object.

  • To convert bytes into other format, you can check this guide.
function decodeUplink(input) {
var bytes = input.bytes;

var BatV = (bytes[0] << 8 | bytes[1]) / 1000 + 0.277;
var PayVER = bytes[2];
// If AT+DATAUP=1, PayloadCount=1 byte, payload#=1 byte
var Temp = (bytes[3] << 8 | bytes[4]) / 10;
var Humid = (bytes[5] << 8 | bytes[6]) / 10;

return {"data": {"BatV":BatV, "PayVER":PayVER, "Temp":Temp, "Humid":Humid}};
}

Step 2.3: After a successful decode, we will see the decoded value in “object”.

Done.

3.8 5 votes
Article Rating
Subscribe
Notify of
2 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments

How can I convert bytes into float?
Thanks a lot.

Need help for your projects?

Please chat with us on the red chatbox to get help or discuss about your projects.
Thanks for reaching us.