Overview of Azure IoT Device SDKs
The Azure IoT device SDKs include a set of device client libraries, samples, and documentation. The device SDKs simplify the process of programmatically connecting devices to Azure IoT. The SDKs are available in various programming languages with support for multiple RTOSs for embedded devices.
Which SDK should I use?
The main consideration in choosing an SDK is the device's own hardware. General computing devices like PCs and mobile phones, contain microprocessor units (MPUs) and have relatively greater compute and memory resources. A specialized class of devices, which are used as sensors or other special-purpose roles, contain microcontroller units (MCUs) and have relatively limited compute and memory resources. These resource-constrained devices require specialized development tools and SDKs. The following table summarizes the different classes of devices, and which SDKs to use for device development.
|Device SDKs||General-use devices||Includes general purpose MPU-based devices with larger compute and memory resources||PC, smartphone, Raspberry Pi|
|Embedded device SDKs||Embedded devices||Special-purpose MCU-based devices with compute and memory limitations||Sensors|
For more information on different device categories so you can choose the best SDK for your device, see Azure IoT Device Types.
The Microsoft Azure IoT device SDKs contain code that facilitates building applications that connect to and are managed by Azure IoT Hub services. These SDKs can run on a general MPU-based computing device such as a PC, tablet, smartphone, or Raspberry Pi. The SDKs support development in C and in modern managed languages including in C#, Node.JS, Python, and Java.
The SDKs are available in multiple languages providing the flexibility to choose which best suits your team and scenario.
|.NET||NuGet||GitHub||Connect to IoT Hub||Samples||Reference|
|Python||pip||GitHub||Connect to IoT Hub||Samples||Reference|
|Node.js||npm||GitHub||Connect to IoT Hub||Samples||Reference|
|Java||Maven||GitHub||Connect to IoT Hub||Samples||Reference|
|C||packages||GitHub||Connect to IoT Hub||Samples||Reference|
The Java device SDK includes samples for Android.
The C device SDK includes samples for iOS that use CocoaPods.
The Azure IoT C SDK isn't suitable for embedded applications due to its memory management and threading model. For embedded device SDK options, see the embedded device SDKs.
Embedded device SDKs
These SDKs were designed and created to run on devices with limited compute and memory resources and are implemented using the C language.
The embedded device SDKs are available for multiple operating systems providing the flexibility to choose which best suits your scenario.
|Azure RTOS||Azure RTOS Middleware||GitHub||Quickstarts||Reference|
|Bare Metal||Azure SDK for Embedded C||GitHub||Samples||Reference|
To start using the device SDKs to connect devices to Azure IoT, see the following article that provides a set of quickstarts.