RAK811 gateway data

Hi guys,

I am using a RAK811 and RAK7249 gatway with built in server. I am just curious,on my sent/receive, why does my transmission always states it is ‘unconfirmed’? What is the difference if it is ‘confirmed’ or ‘unconfirmed’? How does the transmission be classified as confirmed?

Thanks

Unconfirmed data is just “thrown out there to hope for the best” - it might be received, or it might not.

In contrast a confirmed uplink requests that the network server send an acknowledgement back through the gateway. If the ack is not received, the packet will be sent again, up to several times.

But there are two problems with this idea:

First, downlinks are very “expensive” in that while a gateway can be receiving up to eight signals at once, once it starts transmitting it entirely ceases receiving at all.

Additional there are some design issues with the acknowledgement protocol. If a gateway actually does hear an uplink, the network server will tell it to send an ack in reply. But if the node for some reason doesn’t hear that ack, it will think the uplink was not received, and resend it - with the same value of the frame counter. Because the network has already seen that value of the frame counter, it will ignore this re-send and not send an ack - ever. The result is that if you ever miss an ack, you’ll re-send that packet until giving up. This is very inefficient, especially as the data you are trying to send to a network server now determined to ignore it is probably becoming more and more out-of-date anyway.

For most purposes, instead of using confirmed uplinks, it is much better to just send newer measurement data in place of the old. If your network is small, you may be able to afford to have something plugged in on the application side of the server that generates application level replies.

But generally speaking, LoRaWAN only works when operated “uplink-mostly” - if the rate of downlinks becomes anywhere close to that of uplinks, the system will start to perform poorly as a result of interfering with itself.

Hi @ton12,

I think @cstratton has expained what’s “confirm” and “unconfirm” very clear, thank you!

In RAK LoRa modules/products including RAK811 surely, you can configure “confirm” or “unconfirm” using AT command:
image

Noted. Thank you for the clear explanation @cstratton and for the command @Fomi.

A followup question, I am trying to interface arduino and RAK811 to send data. Regarding the payload sent by RAK811, in what format is the data sent? is it HexString? So if I want to send my decimal value 10 (hex A), should first convert the decimal value 10 to Hex A at my arduino, then attach the Hex value in the command at+send?

Sorry I am all new to this.
Thank you

Hi @ton12,

Sorry for late reply.
Actually, RAK811 send LoRa packet in Hex format, if you use AT command to send the data from UART into RAK811, it must be a string and looks like a “Hexstring”, then it will be transmitted to Hex data automatically by default.
For example, if you send “at+send=lora:2:1234567890” to RAK811 through UART, RAK811 will send out a Hex packet who’s payload is 0x1234567890.

Thanks for the reply @Fomi.

So I need to encode the data to be send by converting it to the hex format in my arduino then send it using RAK811. Then the data will be received by the gateway and should be decoded to get the actual data. Am i right? Also, I am using RAK7249 built in server, is it possible to decode the hex data there?

Thank you

Hi @ton12,

RAK7249 built in lora server can receive hex data surely.
For example if you want the lora server receive a value 0x1234567890 in LoRaWAN port 2, you should send the following AT command from your Arduino:
at+send=lora:2:1234567890
Please note, this AT command is a String.

Noted @Fomi.

Is it possible to decode to the actual data at the RAK7249 built in lora server? How can I acquire the meta data of all of my transmissions?

Thank you

You can transmit the data from built-in loraserver to another application platform for decoding through MQTT. For loraserver, it can only check the receive packet in the webpage.