azure-iot-device

A Python SDK for connecting devices to Microsoft Azure IoT services

https://github.com/azure/azure-iot-sdk-python

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.8%) to scientific vocabulary

Keywords

azure azure-iot azure-iot-device azure-iot-sdks azure-iothub device-sdk iot iothub microsoft python sdk

Keywords from Contributors

cameratrap azure-sdk ai-systems camera-traps conservation ecology megadetector wildlife
Last synced: 6 months ago · JSON representation

Repository

A Python SDK for connecting devices to Microsoft Azure IoT services

Basic Info
  • Host: GitHub
  • Owner: Azure
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 44.8 MB
Statistics
  • Stars: 434
  • Watchers: 82
  • Forks: 383
  • Open Issues: 17
  • Releases: 70
Topics
azure azure-iot azure-iot-device azure-iot-sdks azure-iothub device-sdk iot iothub microsoft python sdk
Created over 9 years ago · Last pushed over 1 year ago
Metadata Files
Readme Contributing License Security

README.md

azure-iot-device

Build Status

The 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 the azure-iot-hub-python repository

  • If you're looking for the v1.x.x client library, it is now preserved in the v1-deprecated branch.

Installing the library

The Azure IoT Device library is available on PyPI:

Shell pip install azure-iot-device

Python 3.8 or higher is required in order to use the library

Using the library

API documentation for this package is available via Microsoft Docs.

See our quickstart guide for step by step instructions for setting up and using an IoTHub with devices.

You can also view the samples repository to see additional examples of basic client usage.

Want to start off on the right foot? Be sure to learn about common pitfalls of using this Python SDK before starting a project.

Features

:heavycheckmark: feature available :heavymultiplicationx: feature planned but not yet supported :heavyminussign: no support planned*

*Features that are not planned may be prioritized in a future release, but are not currently planned

These clients only support the MQTT protocol.

IoTHub Device Client

| Features | Status | Description | |------------------------------------------------------------------------------------------------------------------|----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Authentication | :heavycheckmark: | Connect your device to IoT Hub securely with supported authentication, including symmetric key, X-509 Self Signed, Certificate Authority (CA) Signed, and SASToken | | Send device-to-cloud message | :heavycheckmark: | Send device-to-cloud messages (max 256KB) to IoT Hub with the option to add custom properties. | | Receive cloud-to-device messages | :heavycheckmark: | Receive cloud-to-device messages and read associated custom and system properties from IoT Hub. | | Device Twins | :heavycheckmark: | 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 | :heavycheckmark: | 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 | :heavycheckmark: | Error reporting for IoT Hub supported error code. | | Connection Retry | :heavycheckmark: | 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 configured | | Upload file to Blob | :heavycheckmark: | A device can initiate a file upload and notifies IoT Hub when the upload is complete. |

IoTHub Module Client

Note: IoT Edge for Python is scoped to Linux containers & devices only. Learn more about using Linux containers for IoT edge on Windows devices.

| Features | Status | Description | |------------------------------------------------------------------------------------------------------------------|----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Authentication | :heavycheckmark: | 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 | :heavycheckmark: | Send device-to-cloud messages (max 256KB) to IoT Hub with the option to add custom properties. | | Receive cloud-to-device messages | :heavycheckmark: | 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 | :heavycheckmark: | 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 | :heavycheckmark: | 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 | :heavycheckmark: | Error reporting for IoT Hub supported error code. | | Connection Retry | :heavycheckmark: | Dropped connections will be retried with a fixed 10 second interval. TThis functionality can be disabled if desired, and the interval can be configured | | Direct Invocation of Method on Modules | :heavycheckmark: | Invoke method calls to another module using using the Edge Gateway. |

Provisioning Device Client

| Features | Status | Description | |-----------------------------|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | TPM Individual Enrollment | :heavyminussign: | Provisioning via Trusted Platform Module. | | X.509 Individual Enrollment | :heavycheckmark: | 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 | :heavycheckmark: | Provisioning via X.509 leaf certificate). Please review the samples folder on how to create a device client. | | Symmetric Key Enrollment | :heavycheckmark: | Provisioning via Symmetric key attestation). Please review the samples folder on how to create a device client. |

Critical Upcoming Changes Notice

Certificates

All 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 current Baltimore CyberTrust CA Root to the DigiCert 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 see this article.

Contributing

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.

Owner

  • Name: Microsoft Azure
  • Login: Azure
  • Kind: organization
  • Location: United States of America

APIs, SDKs and open source projects from Microsoft Azure

GitHub Events

Total
  • Issues event: 11
  • Watch event: 13
  • Issue comment event: 25
  • Pull request event: 2
  • Fork event: 16
Last Year
  • Issues event: 11
  • Watch event: 13
  • Issue comment event: 25
  • Pull request event: 2
  • Fork event: 16

Committers

Last synced: 12 months ago

All Time
  • Total Commits: 578
  • Total Committers: 28
  • Avg Commits per committer: 20.643
  • Development Distribution Score (DDS): 0.635
Past Year
  • Commits: 6
  • Committers: 3
  • Avg Commits per committer: 2.0
  • Development Distribution Score (DDS): 0.333
Top Committers
Name Email Commits
Carter Tinney c****y@m****m 211
Bert Kleewein B****n 134
olivakar o****e@g****m 105
Oliva Kar o****r@m****m 19
Jelani Brandon j****n@m****m 18
Zoltan Varga z****a@m****m 16
Elena Horton 5****n 15
Yoseph Maguire y****e@m****m 10
Vishnu Reddy v****y@m****m 9
Sebastian s****r@m****m 8
Dan Hellem d****m@g****m 7
fratster f****r@h****m 5
Pierre Cauchois p****s@g****m 4
Microsoft Open Source m****e 2
Pierre Cauchois p****a@m****m 2
Bradley D'Amato 5****o 1
Dane Walton d****n@m****m 1
Dominic Betts d****s 1
Eric e****t@h****m 1
Jimaco Brannian 8****4 1
Ludovic Rivallain l****n 1
Microsoft GitHub User m****s@m****m 1
Walter Bonetti I****r 1
ks6088ts k****s@g****m 1
Steve Busby s****s@m****m 1
microsoft-github-policy-service[bot] 7****] 1
sharmasejal 6****l 1
timtay-microsoft t****y@m****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 69
  • Total pull requests: 100
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 20 days
  • Total issue authors: 65
  • Total pull request authors: 13
  • Average comments per issue: 4.55
  • Average comments per pull request: 1.13
  • Merged pull requests: 72
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 11
  • Pull requests: 4
  • Average time to close issues: 11 days
  • Average time to close pull requests: N/A
  • Issue authors: 9
  • Pull request authors: 3
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.75
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • Siecje (3)
  • JPHutchins (2)
  • Gamecock (1)
  • mathaou (1)
  • fdelu (1)
  • henkjan-van-wijk (1)
  • cartertinney (1)
  • devcopilot (1)
  • jeremielalanne (1)
  • leolauleolau (1)
  • Addepalli-b (1)
  • torntrousers (1)
  • mquilling (1)
  • yateenbbaluja (1)
  • robbinvandamme (1)
Pull Request Authors
  • cartertinney (73)
  • olivakar (15)
  • BertKleewein (8)
  • IniterWorker (4)
  • lev-i (4)
  • ks6088ts (2)
  • YoshitakaNaraoka (2)
  • ryanwinter (2)
  • albaintor (2)
  • Siecje (2)
  • vishnureddy17 (1)
  • lrivallain (1)
  • nkgami (1)
Top Labels
Issue Labels
IoTSDK (38) bug (29) question (21) waiting-on-reply (9) enhancement (9) investigation-required (5) suggestion (2) needs-repro (1) blocked (1) IoTEdge (1) external bug (1)
Pull Request Labels
enhancement (1)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 217,811 last-month
  • Total docker downloads: 1,962
  • Total dependent packages: 10
    (may contain duplicates)
  • Total dependent repositories: 187
    (may contain duplicates)
  • Total versions: 42
  • Total maintainers: 3
pypi.org: azure-iot-device

Microsoft Azure IoT Device Library

  • Versions: 40
  • Dependent Packages: 8
  • Dependent Repositories: 182
  • Downloads: 215,482 Last month
  • Docker Downloads: 1,962
Rankings
Downloads: 0.7%
Dependent packages count: 1.1%
Dependent repos count: 1.1%
Average: 1.8%
Docker downloads count: 2.0%
Forks count: 2.6%
Stargazers count: 3.2%
Maintainers (3)
Last synced: 6 months ago
pypi.org: azure-iothub-provisioningserviceclient

IoT Hub Provisioning Service Client Library

  • Versions: 2
  • Dependent Packages: 2
  • Dependent Repositories: 5
  • Downloads: 2,329 Last month
Rankings
Forks count: 2.6%
Stargazers count: 3.2%
Average: 5.0%
Downloads: 5.3%
Dependent repos count: 6.7%
Dependent packages count: 7.3%
Maintainers (3)
Last synced: 6 months ago

Dependencies

.github/workflows/issuelabeler.yml actions
  • Naturalclar/issue-action v1.0.0 composite
.github/workflows/syncToDevOps.yml actions
  • danhellem/github-actions-issue-to-work-item master composite
.devcontainer/Dockerfile docker
  • mcr.microsoft.com/vscode/devcontainers/python 0-${VARIANT} build
sdklab/meantimerecovery/aedes/Dockerfile docker
  • mcr.microsoft.com/mirror/docker/library/node 18-bullseye-slim build
sdklab/meantimerecovery/aedes/package.json npm
  • aedes ^0.42.5
dev_utils/setup.py pypi
pip_alias/azure-iothub-device-client/setup.py pypi
  • azure-iot-device *
pip_alias/iothub-client/setup.py pypi
  • azure-iot-device *
pyproject.toml pypi
requirements_dev.txt pypi
  • black * development
  • pre-commit * development
  • py * development
  • pylint * development
  • rope * development
  • setuptools >=40.1.0 development
  • twine * development
  • wheel >=0.32.1 development
requirements_test.txt pypi
  • azure-eventhub * test
  • azure-iot-hub * test
  • azure-iothub-provisioningserviceclient >=1.2.0 test
  • flake8 * test
  • psutil * test
  • pytest * test
  • pytest-asyncio <=0.16 test
  • pytest-cov * test
  • pytest-mock * test
  • pytest-testdox >=1.1.1 test
  • pytest-timeout * test
setup.py pypi
  • Actual *
  • Define *
  • PySocks *
  • Security *
  • deprecation >=2.1.0,<3.0.0
  • https *
  • janus *
  • paho-mqtt >=1.6.1,<2.0.0
  • requests *
  • requests >=2.20.0,<3.0.0
  • requests-unixsocket >=0.1.5,<1.0.0
  • urllib3 >=1.26.5,<1.27