This adds the option to add a service-profile to a gateway and a service-profile flag to make all gateways under that service-profile private. It also adds a global configuration option to make all gateways private. When a gateway is private, only devices under the same service-profile will be able to use the gateway.
Pluggable ADR algorithms
This adds the option to configure custom ADR algorithms through a plugin system. See the examples/adr-plugin directory for an example plugin skeleton.
Improvements
Implement uplink frame counter for Prometheus. (#507)
I hope this resolves the issue I was seeing after update on 3.12.0:
Devices started to slowly decrease their DR (devices internal ADR engine I guess), but server seemed to not send new ADR commands, so they would end up on DR0 after some time.
Edit: OK, didn’t help. Has default ADR algorithm changed? Seems like I will have to reactivate the devices every day to keep them on higher datarate.
First I re-activate ABP device and wait for device to send uplink.
Server sends downlink answer with LinkADRReq parameters: DR, power, channel settings…
Device changes its DR accordingly and acks the LinkADRReq command in next uplink:
Depending on situation this repeats few times while server tries to lower the devices power, which is OK as the device is nearby so it has good RF conditions.
This is OK untill server tries to send LinkADRReq with DR:5 / txPower:7 for which the device does not ack the power settings:
Server then keeps repeating same LinkADRReq for every uplink until “max_mac_command_error_count” is reached.
After that it does not send any other LinkADRReq command.
Main problem seems to me that it does not send new LinkADRReq even if the RF conditions changes.
That seems weird to me and also different than older versions (can not exactly confirm this unfortunatelly).
After some time device lowers its DR because of “network hiccups” (confirmed uplink not acked). Server seems to not send any new ADR setting even if the device has good SNR, so it ends up on DR0 with +10dB SNR for example. That does not seem right to me.
I have no idea what else I can do to mitigate this behaviour other than reactivatin all devies which forces the server to send new LinkADRReq, which is terrible workaround.