I have a RakWireless D4H “WisGate” gateway on order that I hope to use to extend an existing Bluetooth LE-centric application to also support LoRa sensors. Over time the hope is to add support for multiple commercially available LoRaWAN sensors from various 3rd parties as needed. I anticipate eventually requiring two way communications but for initial testing/poc I’ve also ordered a Dragino LHT65 temp/humidity sensor. For my app, the sensor data may leave the gateway but often will only be processed locally. So what I’d like to be able to do is to have an api to have the packets delivered as they arrive asynchronously via some sort of callback or similar. From what I’ve read the packets also need to be decrypted beforehand (at least the packet payload) after which I’ll do payload the decoding. Similarly, hopefully the api would provide a way to encrypt and send packets to the end device (sensor) as well. Lastly, just for background, my app is in c++ and my background includes a good familiarity with Bluez and ANT proticols (which from what I’ve been reading may not be that much help!) but only a week’s research regarding LoRaWAN.
All that said, so far it sounds like ChirpStack should be able to provide all the functionality I need. Before heading down that path though I wanted to ask a few questions just to be sure I’m on the right track -
I’m not super clear on OTAA vs OBP, but from my reading it sounds like all 3 ChirpStack components will be required, the Gateway, Network Server, and the Application Server. Mostly to handle the “Join” handshaking, payload encryption/decryption, and downstream messaging. Is that correct? Is there a simple way to handle “Join” handshaking, payload encryption/decryption, and/or downstream messaging without the Network and Application Server components?
Again, from my initial reading it sounds like the gRPC api is the way to get packets to/from my c++ app to/from ChirpStack. I could also see MQTT as an option but I’d like to keep the bridge between the two apps as light, thin, and efficient as possible. Is gRPC the way to go given my requirements? Should it be able to facilitate everything I need?
Lastly, I’m sure I’ve oversimplified things but am just trying to get on the right path up front. Is there anything else obvious that I’m missing? Any help/input appreciated greatly, thanks!