Skip to content

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

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:

middleware/IotSmartHomeDevice-Prebuilt-MW/lib/release/<TOOLCHAIN_NAME>/

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 sysroot
  • toolchain.example.cmake — Example CMake toolchain file
  • env.example.sh — Example environment setup for cross-compilation
  • cross_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

  1. Source your toolchain environment file, which sets environment variables such as CC, CXX, and CFLAGS:
source <PATH_TO_TOOLCHAIN_ENV_FILE>/env.sh

Note: An example environment file is provided in the release package. Populate the required variables for your toolchain.

  1. 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.cmake file is provided in the release package. Populate the required CMake variables for your toolchain.

  1. Build:
cd build/release
make -j$(nproc)

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

  1. 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.
  2. Place shared libraries in <work_directory>/lib/.
  3. Place binaries and the startup script in <work_directory>/.
  4. Run the startup script:
./start_hub_sdk.sh

The script starts all SDK components in the correct sequence.

Documentation

License

See LICENSE.txt and THIRD_PARTY_LICENSES for details.