2025-02-24 05:58 AM - last edited on 2025-02-24 06:03 AM by Andrew Neil
Hello everyone,
I’m an intern software engineer currently developing a Qt-based desktop application for configuring and monitoring IoT devices running Zephyr OS.
At the moment, I’m researching which protocol would be best suited for this purpose. I initially explored SNMP v3 (Simple Network Management Protocol), but it seems that Zephyr OS does not fully support it. Then, I discovered the CoAP (Constrained Application Protocol), which is supported by Zephyr OS and provides both client and server implementations. After that, I looked into the LwM2M protocol, and now I’m exploring mcumgr.
I’m evaluating these protocols based on the following criteria:
Regarding the architecture, I’d like to know if it’s possible for the application to act as a client that pulls data from IoT devices while also allowing data to be pushed using the observe option (in CoAP and LwM2M). Configuration would be done using PUT and POST requests, with the IoT devices acting as servers.
I’d appreciate any insights or recommendations.
Thanks!
2025-02-24 06:08 AM
@TheRedFreedom wrote:Regarding the architecture, I’d like to know if it’s possible for the application to act as a client that pulls data from IoT devices while also allowing data to be pushed using the observe option (in CoAP and LwM2M). Configuration would be done using PUT and POST requests, with the IoT devices acting as servers.
Far too vague to say anything concrete.
Need more details of these "IoT devices".
Often, being a Server is a poor choice for an "IoT device", because it requires the device to be always on & ready to respond to a Client request - which has a huge impact on power consumption ...
2025-02-24 06:18 AM
The IoT devices include switches, routers, encryptors, and various sensors.
The goal of the application is to monitor sensor data and configure the other devices.
As you mentioned, having the server on the application side would help optimize power consumption. However, I’m still struggling to decide which protocol would be the best choice for this use case.