First question: according to the document, the server takes the 20 most recent uplinks as the input of ADR. I’m a little puzzled here:
Is it necessary to carry out ADR processing for every 20 packets, and then clear the saved data set until another 20 packets appear? In other words, the ADR is processed every 20 packets.
Another understanding is that starting from the 20th packet, each new packet received will be processed by ADR. But in this case, the packet that first entered the queue needs to be kicked out to ensure that the current amount of data stored is always 20 packets. This also meets the description of “the last 20 packets”.
In short, the difference between the above two understandings is whether the data of each packet is cleared after being used only once by ADR, or whether it will be reused.
Another problem is how to obtain the transmission power of the device.
I know that through MQTT or other integration, I can subscribe to the SF, bandwidth, and datarate of the device, but it seems that the tx power cannot be obtained in this way.
But I think this is accessible to the server, otherwise, the server has no reference to calculate the power to be reduced next time and send it to the device through LinkADRReq. If the server can get the data, the user can also get it in theory.
Thanks for your reply.