Package: azure-iot-device
azure-iot-deviceThe Azure IoT Device SDK for Python enables Python developers to easily create IoT device solutions that seamlessly connect to the Azure IoT Hub ecosystem.If you're looking for the azure-iot-hub library, it is now located in theazure-iot-hub-pythonrepositoryIf you're looking for the v1.x.x client library, it is now preserved in thev1-deprecatedbranch.Installing the libraryThe Azure IoT Device library is available on PyPI:pipinstallazure-iot-devicePython 3.7 or higher is required in order to use the libraryUsing the libraryAPI documentation for this package is available viaMicrosoft Docs.See ourquickstart guidefor step by step instructions for setting up and using an IoTHub with devices.You can also view thesamples repositoryto see additional examples of basic client usage.Want to start off on the right foot? Be sure to learn aboutcommon pitfallsof using this Python SDK before starting a project.Features:heavy_check_mark: feature available  :heavy_multiplication_x: feature planned but not yet supported  :heavy_minus_sign: no support planned**Features that are not planned may be prioritized in a future release, but are not currently plannedThese clients only support theMQTT protocol.IoTHub Device ClientFeaturesStatusDescriptionAuthentication:heavy_check_mark:Connect your device to IoT Hub securely with supported authentication, including symmetric key, X-509 Self Signed, Certificate Authority (CA) Signed, and SASTokenSend device-to-cloud message:heavy_check_mark:Send device-to-cloud messages (max 256KB) to IoT Hub with the option to add custom properties.Receive cloud-to-device messages:heavy_check_mark:Receive cloud-to-device messages and read associated custom and system properties from IoT Hub.Device Twins:heavy_check_mark: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:heavy_check_mark: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:heavy_check_mark:Error reporting for IoT Hub supported error code.Connection Retry:heavy_check_mark:Dropped connections will be retried with a fixed 10 second interval by default. This functionality can be disabled if desired, and the interval can be configuredUpload file to Blob:heavy_check_mark:A device can initiate a file upload and notifies IoT Hub when the upload is complete.IoTHub Module ClientNote:IoT Edge for Python is scoped to Linux containers & devices only.Learn moreabout using Linux containers for IoT edge on Windows devices.FeaturesStatusDescriptionAuthentication:heavy_check_mark:Connect your device to IoT Hub securely with supported authentication, including symmetric key, X-509 Self Signed, and Certificate Authority (CA) Signed. SASToken authentication is not currently supported.Send device-to-cloud message:heavy_check_mark:Send device-to-cloud messages (max 256KB) to IoT Hub with the option to add custom properties.Receive cloud-to-device messages:heavy_check_mark: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:heavy_check_mark: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:heavy_check_mark: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:heavy_check_mark:Error reporting for IoT Hub supported error code.Connection Retry:heavy_check_mark:Dropped connections will be retried with a fixed 10 second interval.  TThis functionality can be disabled if desired, and the interval can be configuredDirect Invocation of Method on Modules:heavy_check_mark:Invoke method calls to another module using using the Edge Gateway.Provisioning Device ClientFeaturesStatusDescriptionTPM Individual Enrollment:heavy_minus_sign:Provisioning viaTrusted Platform Module.X.509 Individual Enrollment:heavy_check_mark:Provisioning viaX.509 root certificate.  Please review thesamplesfolder and thisquickstarton how to create a device client.X.509 Enrollment Group:heavy_check_mark:Provisioning viaX.509 leaf certificate).  Please review thesamplesfolder on how to create a device client.Symmetric Key Enrollment:heavy_check_mark:Provisioning viaSymmetric key attestation).  Please review thesamplesfolder on how to create a device client.Critical Upcoming Changes NoticeCertificatesAll Azure IoT SDK users are advised to be aware of upcoming TLS certificate changes for Azure IoT Hub and Device Provisioning Service
that will impact the SDK's ability to connect to these services. In October 2022, both services will migrate from the currentBaltimore CyberTrust CA Rootto theDigiCert Global G2 CA root. There will be a
transition period beforehand where your IoT devices must have both the Baltimore and Digicert public certificates
installed in their certificate store in order to prevent connectivity issues.Devices with only the Baltimore public certificate installed will lose the ability to connect to Azure IoT hub and Device Provisioning Service in October 2022.To prepare for this change, make sure your device's certificate store has both of these public certificates installed.For a more in depth explanation as to why the IoT services are doing this, please seethis article.ContributingThis 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, visithttps://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 theMicrosoft Open Source Code of Conduct.
For more information see theCode of Conduct FAQor
contactopencode@microsoft.comwith any additional questions or comments.