Device Management (DM) allows operators to remotely configure and monitor very high volumes of IoT devices simultaneously.
Configuration for the devices can be pushed to devices, whether the target devices are online or offline. If the device is offline it will pick up the new configuration when it reconnects. Device operators can also retrieve the status of each device, including whether device configuration updates have been successfully applied or not.
Enabling these features for IoT devices requires a central, robust, and reliable mechanism to store and to deploy the configuration data to the target devices, and monitor device status - at scale.
A complete solution requires the following:
-
A Robust/Scalable Cloud Service to store the desired and reported states of the various devices.
- Azure IoT Hub and Azure Device Management offer a highly scalable and efficient cloud service for managing millions of devices.
-
A Client that runs on the device and can apply the desired configuration and report the state of the device.
- The Windows IoT Azure DM Client (an open source SDK + runtime), in conjunction with Azure IoT Hub, can apply and report on a large set of common, sometimes critical, Windows configurations.
-
A Portal or an Application that will be used by the operator to configure and query the devices remotely.
- This must be customized for devices by the device OEM or operator. As part of this solution, we also provide an open source data model and implementation for easier interaction with the IoT Hub storage and the Windows IoT client.
This repo holds the Windows IoT Azure DM Client open source SDK + runtime components necessary to achieve the described scenario.
The Windows IoT Azure DM Client integrates tightly with the user's application on the device. This integration allows some interaction scenarios between the remote configuration and the application business logic.
The DM client consists of:
- A UWP library (Windows IoT Azure DM Client Library) that is to be linked to the user's application. The application can be a foreground application or a background application.
- An NT service (SystemConfigurator) that is running with System privilege and can listen to Azure IoT Hub notifications relayed by the UWP library and carry out the necessary device management actions.
- IoT Core Azure Device Management Overview
- Azure IoT Hub
- Sample Applications
- DM Application Creation Walk-through
- Exposing New Configuration Walk-through
- Visual Studio 2017 (download).
- Make sure the following is selected:
- VC++ 2017 v141 toolset (x86, x64)
- Visual C++ compilers and libraries for ARM.
- Visual C++ 2017 redistributable update.
- Visual C++ runtime for UWP.
- Visual Studio C++ Core Features
- Visual C++ ATL support
- Windows 10 SDK (10.0.15063.0) for Desktop
- Windows 10 SDK (10.0.15063.0) for UWP
- Windows 10 SDK (10.0.16299.0) for UWP (For DMController)
- Make sure the following is selected:
- Windows IoT Core build 15063 (March 2017) or later.