AWS IoT ManagedIntegrations Device SDK
The AWS IoT ManagedIntegrations Device SDK enables IoT hub developers to integrate with AWS IoT managed integrations, a feature of AWS IoT Device Management. It provides device onboarding, control, and cloud connectivity for IoT hubs supporting multiple wireless protocols.
Table of Contents
- Overview
- Package Contents
- Requirements
- Middleware
- Dependencies & Toolchain
- Getting Started
- Configuring the Build
- Building
- Cross-Compiling
- Building Examples
- Build Targets
- Product Configurations
- Deploying to Hub Device
- Documentation
- License
Overview
The SDK consists of the following components:
| Component | Description |
|---|---|
| Device Agent | Gateway between the IoT Hub and AWS IoT ManagedIntegrations cloud |
| Common Data Model Bridge (CDMB) | Interface between the Device Agent and protocol-specific CDMB plugins |
| CDMB Plugins | Convert cloud-format commands to protocol-specific commands (Zigbee, Z-Wave) |
| LPW Provisioner | Interacts with cloud and protocol-specific provisioner plugins for device onboarding |
| Provisioner Plugins | Perform protocol-specific onboarding tasks (Zigbee, Z-Wave, WiFi) |
| MQTT Proxy | Manages MQTT communication with AWS IoT |
| Hub Onboarding | Manages hub registration and initial setup with the cloud |
| Log Daemon | Centralized logging infrastructure |
| Matter Plugin | Matter protocol integration |
| Protocol Middlewares | Protocol middleware services for Zigbee, Z-Wave, and WiFi — manages communication between the Hub SDK and underlying radio hardware through a layered architecture (Hub SDK → Middleware Service → HAL → Protocol Gateway → Radio) |
Package Contents
IotManagedIntegrationsDeviceSDK/
├── README.md
├── CMakeLists.txt
├── CMakePresets.json
├── VERSION.txt
├── manifest.yml
├── LICENSE.txt
├── THIRD_PARTY_LICENSES
├── Changelog.txt
│
├── commonUtils/
│ ├── IoTSmartHomeDevice-Log/ # Centralized logging library
│ ├── IoTSmartHomeDevice-IPC/ # Inter-process communication framework
│ ├── IoTSmartHomeDevice-MqttProxy/ # MQTT communication proxy
│ ├── IoTSmartHomeDevice-CertHandler/ # Certificate handling
│ ├── IoTSmartHomeDevice-SecureStorageCertHandler/ # Secure storage certificate handler
│ ├── IoTSmartHomeDevice-ConfigHandler/ # Configuration management
│ ├── IoTSmartHomeDevice-Connectors/ # Cloud connectors
│ ├── IoTSmartHomeDeviceSDK-Client/ # Device SDK client library
│ └── IoTSmartHomeDeviceSDK-MatterPlugin/ # Matter protocol plugin
│
├── control/
│ ├── IoTSmartHomeDevice-Agent/ # ManagedIntegrations Device Agent
│ ├── IoTSmartHomeDevice-AgentCommon/ # Shared agent utilities
│ ├── IoTSmartHomeDevice-CDMBCore/ # Common Data Model Bridge core
│ └── plugins/
│ ├── IoTSmartHomeDevice-Zigbee-CDMB-Plugin/ # Zigbee device control plugin
│ └── IoTSmartHomeDevice-Zwave-CDMB-Plugin/ # Z-Wave device control plugin
│
├── provisioning/
│ ├── IoTSmartHomeDevice-HubOnboarding/ # Hub registration and setup
│ ├── IoTSmartHomeDevice-IoTProvisioningLib/ # IoT provisioning library
│ ├── IoTSmartHomeDevice-LPWProvisionerCore/ # LPW Provisioner core (C++)
│ ├── IotManagedIntegrationsHubSDK-LPWProvisionerCore-C/ # LPW Provisioner core (C)
│ └── plugins/
│ ├── IoTSmartHomeDevice-Zigbee-Provisioner-Plugin/ # Zigbee onboarding plugin
│ ├── IotManagedIntegrationsHubSDK-Zigbee-Provisioner-Plugin-C/ # Zigbee onboarding (C)
│ ├── IoTSmartHomeDevice-Zwave-Provisioner-Plugin/ # Z-Wave onboarding plugin
│ └── IoTSmartHomeDevice-WiFi-Provisioner-Plugin/ # WiFi onboarding plugin
│
├── include/ # Public SDK headers
├── IoTSmartHomeDevice-Tools/ # CMake tools, static checks, startup scripts
├── middleware/
│ ├── IotManagedIntegrationsDeviceSDK-Middlewares/ # Protocol middleware source
│ └── IotSmartHomeDevice-Prebuilt-MW/ # Prebuilt middleware libraries
├── products/ # Build configuration files
├── examples/ # Example applications
│ └── exampleLocalControllerApp/
└── docs/
Requirements
- C++ standard: C++17
- CMake: 3.25 or later
- Dependencies: Listed in manifest.yml. Install all third-party dependencies per the versions specified before building.
Middleware
The SDK includes protocol middleware source code in middleware/IotManagedIntegrationsDeviceSDK-Middlewares/. The middleware provides services for Zigbee, Z-Wave, and WiFi protocols through a layered architecture:
| Component | Description |
|---|---|
| iotmi-ace-general | Core ACE framework (IPC, event management, dispatcher, WiFi middleware, Zigbee middleware) |
| iotmi-ace-dpk | Device Platform Kit — HAL implementations for WiFi, Zigbee, and Z-Wave |
| iotmi-ace-zwave-mw | Z-Wave middleware service |
| iotmi-ace-zware | Z-Wave Host Controller API (Silicon Labs) |
| iotmi-ace-z3-gateway | Zigbee gateway (Silicon Labs Gecko SDK) |
| iotmi-ace-project | Build and product configuration |
The middleware uses the ACE build system (Makefiles). See middleware/IotManagedIntegrationsDeviceSDK-Middlewares/README.md for build instructions.
Prebuilt reference middleware libraries are also provided in:
Replace these with your own middleware build output for production use.
Dependencies & Toolchain
Third-party dependencies and cross-compilation toolchain support files are provided in the Dependencies/ directory. This includes 26 libraries (OpenSSL, cJSON, D-Bus, Curl, AWS IoT SDKs, etc.) and helper files:
install_dependency.sh— Cross-compiles all dependencies into a sysroottoolchain.example.cmake— Example CMake toolchain fileenv.example.sh— Example environment setup for cross-compilationcross_file.example.txt— Example Meson cross-compilation file
See Dependencies/README.md for detailed toolchain setup instructions.
Getting Started
Configuring the Build
Select a product configuration file from the products/ directory to enable or disable SDK features. The default configuration enables Zigbee, Z-Wave, Custom Plugin, Matter, and Hub Onboarding:
# Use the default configuration
cmake -C products/iotshd_default.config --preset "release-configure" -DIOTSHD_CERT_HANDLER_BUILD_SS_STUB=ON
See Product Configurations for all available options.
Build Presets
| Preset | Build Directory | Description |
|---|---|---|
default-configure |
build/default |
Default preset |
debug-configure |
build/debug |
Debug binaries, debug logs enabled |
testing-configure |
build/testing |
Enables building tests |
release-configure |
build/release |
Release config, debug logs disabled |
relwithdeb-configure |
build/relwithdebug |
Release with debug info |
See CMakePresets.json for full details.
Useful CMake Flags
| Flag | Description |
|---|---|
-DIOTSHD_DEVICE_SDK_BUILD_TESTS=ON/OFF |
Enable/disable test building |
-DIOTSHD_CERT_HANDLER_BUILD_SS_STUB=ON |
Enable secure storage stub (recommended for development) |
-DIOTSHD_IPC_TEST_ENABLED=OFF |
Disable IPC testing |
-DIOTSHD_BUILD_EXAMPLES=ON |
Build example applications |
-DCMAKE_TOOLCHAIN_FILE=<path> |
Specify cross-compilation toolchain file |
Building
After configuring, build from the generated build directory:
# Configure (from SDK root)
cmake -C products/iotshd_default.config --preset "release-configure" -DIOTSHD_CERT_HANDLER_BUILD_SS_STUB=ON
# Build
cd build/release
make -j$(nproc)
Resulting binaries and libraries are generated in build/release/bin and build/release/lib respectively. See manifest.yml for the full list of build outputs.
Cross-Compiling
- Source your toolchain environment file, which sets environment variables such as
CC,CXX, andCFLAGS:
Note: An example environment file is provided in the release package. Populate the required variables for your toolchain.
- Configure with the toolchain file:
cmake -C products/iotshd_default.config \
--preset "release-configure" \
-DIOTSHD_CERT_HANDLER_BUILD_SS_STUB=ON \
-DCMAKE_TOOLCHAIN_FILE=<PATH_TO_TOOLCHAIN>/toolchain.cmake
Note: An example
toolchain.cmakefile is provided in the release package. Populate the required CMake variables for your toolchain.
- Build:
Building Examples
The SDK includes an example Local Controller application in examples/exampleLocalControllerApp/. Enable it with the -DIOTSHD_BUILD_EXAMPLES=ON flag:
cmake -C products/iotshd_default.config \
--preset "release-configure" \
-DIOTSHD_CERT_HANDLER_BUILD_SS_STUB=ON \
-DCMAKE_TOOLCHAIN_FILE=<PATH_TO_TOOLCHAIN>/toolchain.cmake \
-DIOTSHD_BUILD_EXAMPLES=ON
Build Targets
Executables
| Binary | Description |
|---|---|
iotmi_device_agent |
ManagedIntegrations Device Agent |
iotmi_cdmb |
Common Data Model Bridge |
iotmi_hub_onboarding |
Hub onboarding service |
iotmi_lpw_provisioner |
LPW Provisioner for device onboarding |
iotmi_mqtt_proxy |
MQTT communication proxy |
iotmi_log_daemon |
Centralized log daemon |
iotmi_matter_plugin |
Matter protocol plugin |
Shared Libraries
| Library | Description |
|---|---|
libiotmi_log_c.so |
C logging library |
libiotmi_mqtt_proxy_lib.so |
MQTT proxy shared library |
libSecureStorageCertHandler.so.1.0 |
Secure storage certificate handler |
Product Configurations
Configuration files in the products/ directory control which SDK features are built. Modify the boolean values in a config file or create your own.
| Configuration File | Description |
|---|---|
iotshd_default.config |
Z-Wave + Zigbee + Custom Plugin + Matter + Hub Onboarding |
iotshd_zigbee_only.config |
Zigbee only |
iotshd_zwave_only.config |
Z-Wave only |
iotshd_wifi_only.config |
WiFi only |
iotshd_matter_plugin_only.config |
Matter plugin only |
iotshd_default_plus_wss.config |
Default with WSS support |
iotshd_c.config |
C configuration |
Example variables from iotshd_default.config:
set(EN_ZWAVE_PROVISIONER true CACHE BOOL "enable ZWAVE Provisioner")
set(EN_ZWAVE_CONTROL true CACHE BOOL "enable ZWAVE Control")
set(EN_ZIGBEE_PROVISIONER true CACHE BOOL "enable Zigbee Provisioner")
set(EN_ZIGBEE_CONTROL true CACHE BOOL "enable Zigbee Control")
set(EN_CUSTOM_PLUGIN_PROVISIONER true CACHE BOOL "enable Custom Plugin Provisioner")
set(EN_CUSTOM_PLUGIN_CONTROL true CACHE BOOL "enable Custom Plugin Control")
set(EN_MATTER_PLUGIN true CACHE BOOL "enable Matter Plugin")
set(EN_WIFI_PROVISIONER false CACHE BOOL "enable WiFi Provisioner")
set(EN_HUB_ONBOARDING true CACHE BOOL "enable Hub Onboarding")
set(EN_HA_PLUGIN false CACHE BOOL "enable HA Plugin")
Deploying to Hub Device
Prerequisites
Complete hub setup and cloud onboarding using the AWS IoT ManagedIntegrations Developer Guide and the Hub SDK Deployment Documentation.
Steps
- Copy the built binaries and shared libraries to a working directory on your hub device, along with the startup script from
IoTSmartHomeDevice-Tools/hubStartupScripts/start_hub_sdk.sh. - Place shared libraries in
<work_directory>/lib/. - Place binaries and the startup script in
<work_directory>/. - Run the startup script:
The script starts all SDK components in the correct sequence.
Documentation
License
See LICENSE.txt and THIRD_PARTY_LICENSES for details.