This repository contains code for the Azure IoT SDKs for Python. This enables python developers to easily create IoT device solutions that semealessly connection to the Azure IoTHub ecosystem.
If you're looking for the v1.x.x client library, it is now preserved in the v1-deprecated branch.
This repository contains the following libraries:
-
Coming Soon: Azure IoT Device Provisioning Service Library
Pip installs are provided for all of the SDK libraries in this repo:
✔️ feature available ✖️ feature planned but not yet supported ➖ no support planned*
*Features that are not planned may be prioritized in a future release, but are not currently planned
Device Client Library (azure-iot-device)
Features | Status | Description |
---|---|---|
Authentication | ✔️ | Connect your device to IoT Hub securely with supported authentication, including private key, SASToken, X-509 Self Signed and Certificate Authority (CA) Signed. |
Send device-to-cloud message | ✔️ | Send device-to-cloud messages (max 256KB) to IoT Hub with the option to add custom properties. |
Receive cloud-to-device messages | ✔️ | Receive cloud-to-device messages and read associated custom and system properties from IoT Hub, with the option to complete/reject/abandon C2D messages. |
Device Twins | ✔️ | IoT Hub persists a device twin for each device that you connect to IoT Hub. The device can perform operations like get twin tags, subscribe to desired properties. |
Direct Methods | ✔️ | IoT Hub gives you the ability to invoke direct methods on devices from the cloud. The SDK supports handler for method specific and generic operation. |
Connection Status and Error reporting | ✖️ | Error reporting for IoT Hub supported error code. *This SDK supports error reporting on authentication and Device Not Found. |
Retry policies | ✔️ | Retry policy for unsuccessful device-to-cloud messages. |
Features | Status | Description |
---|---|---|
Authentication | ✔️ | Connect your device to IoT Hub securely with supported authentication, including private key, SASToken, X-509 Self Signed and Certificate Authority (CA) Signed. |
Send device-to-cloud message | ✔️ | Send device-to-cloud messages (max 256KB) to IoT Hub with the option to add custom properties. |
Receive cloud-to-device messages | ✔️ | Receive cloud-to-device messages and read associated custom and system properties from IoT Hub, with the option to complete/reject/abandon C2D messages. |
Device Twins | ✔️ | IoT Hub persists a device twin for each device that you connect to IoT Hub. The device can perform operations like get twin tags, subscribe to desired properties. |
Direct Methods | ✔️ | IoT Hub gives you the ability to invoke direct methods on devices from the cloud. The SDK supports handler for method specific and generic operation. |
Connection Status and Error reporting | ✖️ | Error reporting for IoT Hub supported error code. *This SDK supports error reporting on authentication and Device Not Found. |
Retry policies | ✔️ | Retry policy for connecting disconnected devices and resubmitting messages. |
Direct Invocation of Method on Modules | ✔️ | Invoke method calls to another module using using the Edge Gateway. |
Features | Status | Description |
---|---|---|
TPM Individual Enrollment | ➖ | Provisioning via Trusted Platform Module. |
X.509 Individual Enrollment | ✔️ | Provisioning via X.509 root certificate. Please review the samples folder and this quickstart on how to create a device client. |
X.509 Enrollment Group | ✔️ | Provisioning via X.509 leaf certificate). Please review the samples folder on how to create a device client. |
Symmetric Key Enrollment | ✔️ | Provisioning via Symmetric key attestation). Please review the samples folder on how to create a device client. |
IoTHub Service Library (azure-iot-hub)
Features | Status | Description |
---|---|---|
Identity registry (CRUD) | ✔️ | Use your backend app to perform CRUD operation for individual device or in bulk. |
Cloud-to-device messaging | ✖️ | Use your backend app to send cloud-to-device messages, and set up cloud-to-device message receivers. |
Direct Methods operations | ✔️ | Use your backend app to invoke direct method on device. |
Device Twins operations | ✔️ | Use your backend app to perform device twin operations. *Twin reported property update callback and replace twin are in progress. |
Query | ✖️ | Use your backend app to perform query for information. |
Jobs | ✖️ | Use your backend app to perform job operation. |
Feature is Coming Soon
Features | Status | Description |
---|---|---|
CRUD Operation with TPM Individual Enrollment | ✖️ | Manage device enrollment using TPM with the service SDK. Please visit the samples folder to learn more about this feature. |
Bulk CRUD Operation with TPM Individual Enrollment | ✖️ | Bulk manage device enrollment using TPM with the service SDK. Please visit the samples folder to learn more about this feature. |
CRUD Operation with X.509 Individual Enrollment | ✖️ | Manages device enrollment using X.509 individual enrollment with the service SDK. Please visit the samples folder to learn more about this feature. |
CRUD Operation with X.509 Group Enrollment | ✖️ | Manages device enrollment using X.509 group enrollment with the service SDK. Please visit the samples folder to learn more about this feature. |
Query enrollments | ✖️ | Query registration states with the service SDK. Please visit the samples folder to learn more about this feature. |
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.