SkillAgentSearch skills...

IOWA

This repository contains sample applications illustrating how to use the IOWA SDK as well as the Evaluation IOWA SDK. The IOWA SDK is the most compact C implementation OMA LwM2M protocol.

Install / Use

/learn @IOTEROP/IOWA

README

IOWA Logo

Ioterop IOWA Ioterop ALASKA DM Platform

IOWA public code

This repository contains a public version of IOWA LwM2M stack, illustrating how to use the LwM2M library.

Don't forget to have a look at the Documentation:

IOWA Doc

This code is provided as-is, under the associated licence (./LICENSE.txt). (This code should not be used in a commercial product and is for personal evaluation ONLY)

With this code, you can jump into LwM2M and validate the build and the execution of the IOWA stack on your device, but with some limitations:

| | IOWA Eval SDK | IOWA Full SDK | | ---------------------------------- | ------------------------------- | ------------------------------------------------------- | | | Free for Evaluation purpose | Contact us | | IOWA-based LwM2M Client | :heavy_check_mark: | :heavy_check_mark: | | IOWA-based LwM2M Server | :x: | :heavy_check_mark: | | IOWA-based Bootstrap Server | :x: | :heavy_check_mark: | | LwM2M 1.0​ | :heavy_check_mark: | :heavy_check_mark: | | LwM2M 1.1​ | :x: | :heavy_check_mark: | | LwM2M 1.2 | :x: | :heavy_check_mark: | | TLV Data Format | :heavy_check_mark: | :heavy_check_mark: | | LwM2M 1.1 Data Formats​ | :x: | :heavy_check_mark: | | LwM2M 1.2 Data Formats​ | :x: | :heavy_check_mark: | | Bootstrap ​Support | :x: | :heavy_check_mark: | | Mandatory LwM2M Objects​ | :heavy_check_mark: | :heavy_check_mark: | | CTO IPSO Objects​ | :heavy_check_mark: | :heavy_check_mark: | | Other IPSO Objects​ | :x: | :heavy_check_mark: | | Custom Objects Creation ​ | :heavy_check_mark: | :heavy_check_mark: | | | | | | UDP Transport​ | :heavy_check_mark: | :heavy_check_mark: | | TCP Transport​ | :x: | :heavy_check_mark: | | WebSockets Transport​ | :x: | :heavy_check_mark: | | SMS Transport​ | :x: | :heavy_check_mark: | | COAP Block​-Wise Transfer | :x: | :heavy_check_mark: | | DTLS Support ​ | :heavy_check_mark: | :heavy_check_mark: | | TLS Support ​ | :x: | :heavy_check_mark: | | OSCORE | :x: | :heavy_check_mark: | | | | | | Muti Server Management ​ | :heavy_check_mark: | :heavy_check_mark: | | Registration Rules Configuration ​ | :x: | :heavy_check_mark: | | Server Access Control | :x: | :heavy_check_mark: | | Firmware Update​ | :x: | :heavy_check_mark: | | MQTT Channels Configuration ​ | :x: | :heavy_check_mark: | | Context Storage | :x: | :heavy_check_mark: | | Power Cycle Management | :x: | :heavy_check_mark: | | Connectivity Management | :x: | :heavy_check_mark: | | Notification Storage | :x: | :heavy_check_mark: | | Asynchronous Response Support | :x: | :heavy_check_mark: | | Payload Streaming | :x: | :heavy_check_mark: | | | | | | Source Code & C-Make​ | :heavy_check_mark: | :heavy_check_mark: | | Full Documentation​ | :x: | :heavy_check_mark: | | Logs | :heavy_check_mark: | :heavy_check_mark: | | Multithread​ Support | :x: | :heavy_check_mark: | | Python Binding | :x: | :heavy_check_mark: | | LwM2M Object Code Generation Tool | :x: | :heavy_check_mark: |

Sdk samples available on this repository

| Category | Sample name | Purpose | | --- | --- | --- | | Basic samples | 01-baseline_client | For creating a working LwM2M Client with IOWA | | Basic samples | 02-IPSO_client | How to add an IPSO temperature sensor Object | | Custom Object | 03-custom_object_baseline_client | How to add a simple custom LwM2M Object | | Custom Object | 04-custom_object_dynamic | How to make the values exposed by the custom Object dynamic | | Custom Object | 06-custom_object_multiple_rsc_inst | Another custom object sample, multiple resources, multiples instances | | Secure client | 07-secure_client_mbedtls3 | Sample client with PSK security over mbedtls3 | | Secure client | 08-secure_client_tinydtls | Sample client with PSK security with tinydtls |

Extra IOWA Sdk samples (available on request)

| Category | Sample name | Purpose | | --- | --- | --- | | Full SDK only | secure_client | How to use secure communications. | | Full SDK only | fwupdate_push_client | How to receive Firmware Updates in push mode. | | Full SDK only | fwupdate_pull_client | How to receive Firmware Updates in pull mode. This sample demonstrates the CoAP APIs. | | Full SDK only | timestamp_IPSO | How to timestamp values in IPSO sensors. | | Full SDK only | timestamp_custom_objects | How to timestamp values in custom LwM2M Objects. | | Full SDK only | streamable_resources | How to work with large values like images or file contents. | | Full SDK only | asynchronous_resources | How to work with time consuming value retrieval. | | Full SDK only | low_MTU_client | How to use adapt to limited network MTU. | | Full SDK only | adaptive_client | How to adapt to degraded network conditions by modifying the CoAP timers. | | | And many more ... |

QuickStart Guide

All the samples can be built/run on Windows and Linux. Other platforms and OS are available in:

Ioterop Github

If you prefer, a Docker version is available in the docker folder.

Tutorials

You can find some interesting tutorials on Hackster.io:

Compile Samples

Initial setup: Don't forget to clone this repository:

git clone https://github.com/IOTEROP/IOWA.git

On Linux

Prerequisites: An x86-64 computer with a Linux distribution installed, the cmake utility, the make utility and a C compiler.

To compile the 08-secure_client_tinydtls sample, you will also need git to be installed.

  1. Inside the IOWA repository, create a build folder

    mkdir build

  2. Go to this folder

    cd build

  3. Launch cmake in debug mode

    cmake -DCMAKE_BUILD_TYPE=Debug ..

    The last parameter point to the fol

View on GitHub
GitHub Stars87
CategoryDevelopment
Updated8mo ago
Forks33

Languages

C

Security Score

77/100

Audited on Jul 2, 2025

No findings