Hmmm, it is a bit confusing. My device sends a 3 byte data. On the application server, device - > live event logs , for the âdataâ key , the value is âAQUAâ. When I decode this base64 string to bytes (used online decoder like https://cryptii.com/base64-to-hex) , I get the 3 byte sensor data.
My payload function for now is very simple :
function Decode(fPort, bytes) {
return {âmyresultâ:bytes};
}
Shouldnât myresult object show the bytes, instead shows the same BASE64 data? I am sorry if my confusion is silly, I am very new to the world of LoRa itself.
still not understanding why my custom codec wonât decode the data/bytes.
I have a data field that is about 64 characters (base64 looking), data is encoded in bytes, so why does my payload return just 1⌠like the number 1 when i do return bytes;
Thoughts?
UPDATE
I wasnât using the correct signature for my function. I needed this:
function (fport, bytes)
char * str = "Hello, world!";
for(int i = 0 ; i < strlen(str) ; i++ )
printf("%02x", str[i]);
by using the c code above to transfer the âHello, world!â
we will get 48656c6c6f2c20776f726c6421
use the lora module to tranfer this hex mac tx cnf 1 48656c6c6f2c20776f726c6421
function Decode(fPort, bytes) {
var data = {
"cmd":""
};
for (var i = 0; i < bytes.length; i++) {
data.cmd+= String.fromCharCode(bytes[i]);
}
return data;
}
my appID is 1 we can sub the topic to see into the payload
use mosquitto_sub or any mqtt client like mqtt.fx mosquitto_sub -t âapplication/1/#â -v
the payload will show the string:
âobjectJSONâ:"{âcmdâ:âHello, world!â}",
Hi Moonlca, this seems like a very good answer, if you could expand on it a little more, more than one of us would appreciate it.
I think we need more examples like this.
Thank you
Hi, I too have a same query while I am creating my decode code in Custom Payload Codec I have tried to convert data using my code.Before I start my I checked by returning {âDataâ : bytes} I am getting output as * objectJSON:âData : Payloadâ Payload as base64 encoded String instead of array of bytes. And I donât why I am getting Base64. Can you check my query and tell how I can proceed.
Thank You
if i put the âDecodeDataStringâ AQMECIEPwWwb into a Base64 to Hex converter online, i get 010304080810fc16c1b which matches the DecodeDataHex if you were to add the commas and 0x in front of each number.
But i need the data to be different and dont know how to modify. The 01 is my SensorID, the 03 is the READ function, the 04 how many bytes i have. The two bytes 08 and 08 go together to make 0808 Hex that needs to convert to decimal to give the temp in C x100 or 2056. the two bytes 10 and fc go together to be 10fc hex to be converted to decimal RH x 100 or 4348. The last bit is CRC and doesnt need to be extracted.
So how do i do this in Javascript