The Internet of Things (IoT) is currently fragmented by numerous proprietary methods of device management. In order for the IoT to reach its full potential, devices from different vendors must be able to communicate effectively with each other. This is where open standards such as the Open Mobile Alliance's (OMA) Lightweight Machine to Machine protocol (LWM2M) become important.
The LWM2M protocol has been designed to be highly efficient in terms of data transfer and memory footprint, making it suitable for deployment on larger gateway devices as well as the more constrained devices.
Awa LightweightM2M is an implementation of the OMA Lightweight M2M protocol that provides a secure and standards compliant device management solution to simplify the development of M2M applications by providing an intuitive API that enables customization without the need for an intimate knowledge of M2M protocols.
Awa LightweightM2M is a development suite that provides a number of components and tools which can be combined in various ways depending on requirement. For example:
- When running on a larger Linux based device, Awa LightweightM2M can be deployed as a series of daemons that interact with your application via the Awa API.
- For more constrained devices, your application code can be built against the Awa static API and compiled along with the Awa LightweightM2M client code into a binary to be deployed on your device.
Regardless of the method, adding LWM2M support for your device is simply a matter of incorporating any objects you need into your own M2M application.
2016-08-17: Awa LightweightM2M is a finalist in the New Zealand Open Source Awards.
The easiest way to get started with Awa LightweightM2M is to use our docker container.
Alternatively, you can build Awa on a Linux PC. The following instructions are based on the Ubuntu Linux distribution and assume that the user is familiar with the GNU compiler toolchain, and with the process of installing packages using the package manager.
Firstly, to obtain a copy of the Awa LightweightM2M source code:
-
Sign up for a Github account
-
Install Git:
sudo apt-get install git
- Clone the repository:
git clone https://github.com/FlowM2M/AwaLWM2M.git
Further information can be found in the Quick start guide.
This project assumes a basic knowledge of The Open Mobile Alliance's (OMA) LWM2M, its functionality and services. For more detail, see our introductory LWM2M overview.
Awa LightweightM2M documentation is available both at a general level (project information, user and developer guides), and a technical level (the API guide). All documentation is available in this repository. The doc directory contains information relating to the project in general, and the api/doc directory contains the lower level documentation for the Awa API.
Note that for our purposes the terms user and developer have the following definitions:
- User - An M2M application developer who uses the tools and libraries supplied by this project as the foundation of, or enhancement to, their own M2M application.
- Developer - A developer who develops for and contributes to the Awa LightweightM2M project.
-
For project users:
- For build instructions, see the Quick start guide.
- Examples of how to use the tools can be found in the User guide.
- A sample application tutorial using the Awa API can be found here.
- A list of Awa API examples can be found here.
- A sample application tutorial using the Awa Static API can be found here.
-
For contributors:
- An overview of the system can be found in the Contributing developer guide.
- Information regarding the testing framework, can be found in the Testing guide.
The Awa API documentation is available as a Doxygen presentation which is generated via the following process.
-
sudo apt-get install doxygen graphviz
-
Generate the documentation:
make docs
The output can be found in the api/doc/html directory and viewed by opening index.html with your web browser.
For convenience you can also find the latest version of this documentation here.
We welcome all contributions to this project and we give credit where it's due. Anything from enhancing functionality to improving documentation and bug reporting - it's all good.
Find out more in the contributor guide.
We would like to thank all of our current contributors.
We would also like to acknowledge and thank the authors of the following projects.
- libcoap: https://github.com/obgm/libcoap
- googletest: https://code.google.com/p/googletest/
- jsmn: https://github.com/zserge/jsmn
- contiki: https://github.com/contiki-os/contiki
A list of ongoing development tasks can be seen here.
- All code and documentation developed by Imagination Technologies Limited is licensed under the BSD 3-clause license.
- LibCoAP by Olaf Bergmann is under the GNU General Public License (GPL), Version 2 or higher, OR the simplified BSD license.
- Jsmn by Serge A. Zaitsev is licensed under the MIT license.
- Erbium/TinyDTLS by Contiki are licensed under the BSD 3-clause license.
Made in New Zealand.