The estimated and observed growth in the number of connected devices is enormous. Ericsson made a near-future prediction that the connected devices will reach 29 billion in number, by 2022. A number of other independent organizations also predict the connected device to grow at similar or higher rate in future. These growth predictions are consistent with the number of diverse fields and use cases that can be served by Internet-of-Things (IoT) applications.
A robust IoT application is usually a mixture of variety of IT domains: embedded computing, telecommunications and networking, cloud, cyber security, artificial intelligence, to name a few. There are some IoT development board manufacturers that provide software development kits (SDKs) and/or libraries that provide developers with abstraction from low-level implementation details of these technologies. These libraries can be readily used and integrated to deploy IoT applications swiftly. However, there are manufactures that provide limited or now support with libraries for some IoT technologies. Thus, IoT application development in such cases requires the developers to have the expertise in the IT domains mentioned above. It slows down the pace of application development, as well as makes the process laborious and expensive.
Light-Weight Machine-to-Machine (LWM2M) protocol is a device management and service enablement protocol for IoT devices. For development boards with Arduino form factor such as SODAQ SARA, Arduino Uno, Arduino Mega there is no library or SDK support to port LWM2M protocol stack on them. As my thesis work, I worked on adding the LWM2M library and SDK support for such development boards. The primary goal of enabling the library and SDK support is to allow deployment of LWM2M protocol stack over Narrow-Band IoT (NB-IoT), which is a Low-Power Wide-Area Network (LPWAN) technology. My study, findings, design-decisions and implementation details at different levels in LWM2M protocol stack have been explained in detail in this thesis book.