Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Azure/iot_central_python_sample
Interacting with Azure IoT Central using a device written in Python
https://github.com/Azure/iot_central_python_sample
device iot iot-central
Last synced: 2 months ago
JSON representation
Interacting with Azure IoT Central using a device written in Python
- Host: GitHub
- URL: https://github.com/Azure/iot_central_python_sample
- Owner: Azure
- License: mit
- Created: 2020-06-23T00:06:52.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-09-13T21:24:06.000Z (over 2 years ago)
- Last Synced: 2024-04-23T10:19:38.401Z (9 months ago)
- Topics: device, iot, iot-central
- Language: Python
- Homepage:
- Size: 26.4 KB
- Stars: 5
- Watchers: 9
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-iotcentral - Device Sample - Python SDKs and samples (miscellaneous)
README
# iot_central_python_sample
Interacting with Azure IoT Central using a device written in Pythonuses the Azure IoT Native Python Device SDK details found here: https://github.com/Azure/azure-iot-sdk-python/tree/master/azure-iot-device
The code requires the use of Python version 3.7+ for optimal use
The code uses six library for detecting Q+[enter] key press to perform clean shutdown
install the libraries with:```
pip install azure-iot-device six
```The capability model for IoT Central is in the file device-capability-model.json and should be loaded into the IoT Central application
Views will need to be created to see the telemetry, properties and commandsIn the code add the necessary values for id_scope, device_symmetric_key or group_symmetric_key, device_id, model_identity
and set use_websockets to true or false depending on if MQTT ports are blocked or notFeatures enabled in this sample:
* Supports DPS with cached DPS credentials (to file system) so a DPS call is not needed every connection
* Supports symmetric key and X509 certificate DPS and hub connection
* Supports using group symmetric key to generate a device symmetric key
* if connection fails with cached credentials falls back to re-call DPS
* Supports device side registration of the device in IoT Central with auto-association to a device model
* Illustrates sending telemetry to IoT Central
* Illustrates sending reported properties
* Illustrates receiving desired properties and acknowledging them correctly back to IoT Central
* Illustrates receiving direct methods and acknowledging them and returning a return value
* Illustrates receiving Cloud to device (C2D) messages
* Auto reconnects are handled by the Python device SDKThis sample application uses the device template model in the device-capability-model.json file. This template should be imported into the IoT Central application, and appropriate views generated or created from the device template.
To use first open the iot_central_config.py file and enter in the necessary configuration information based on you IoT Central application. If X509 device authentication is desired please see these articles on generating the necessary certificates for IoT Central https://docs.microsoft.com/en-us/azure/iot-central/core/concepts-get-connected#connect-devices-using-x509-certificates, https://github.com/Azure/azure-iot-sdk-c/tree/master/tools/CACertificates
```python
# IoT Central connection settings
id_scope = " Device connection page>"
device_id = ""
model_identity = " Edit Identity -> Identity>"# device symmetric key support - default
device_symmetric_key = ""# group symmetric key support
use_group_symmetric_key = False # set True to use group_symmetric_key and False to use device_symmetric_key
group_symmetric_key = " Device connection page>"# X509 support
use_x509 = False # set True to use X509 certificate authentication (use_group_symmetric_key must be set False)
x509_public_cert_file = ""
x509_private_cert_file = ""
x509_pass_phrase = ""# General config settings
use_websockets = True # set True to use web sockets for MQTT connection to get through firewall proxies
use_cached_credentials = False # True to use cached credentials to connect to IoT Hub
```After filling in the configuration information run the iot_central_sample.py file using:
```
python iot_central_sample.py
```You should see similar output to the following from the application (pressing the Q key and enter will exit the application):
```
RegistrationStage(RequestAndResponseOperation): Op will transition into polling after interval 2. Setting timer.
The complete registration result is abc123
iotc-6f3e7a04-1498-46cb-8af8-299e1cc4315c.azure-devices.net
initialAssignment
null
Press Q to quit
sending message: {"temp": 89.000000, "humidity": 32.000000}
Sending reported property: {'text': {'value': '6UiewI1SxpSzxI5lQjjqDyhUU0Ekmzrb'}}
Sending reported property: {'boolean': {'value': True}}
Sending reported property: {'number': {'value': 64}}
completed sending message
sending message: {"temp": 78.000000, "humidity": 42.000000}
completed sending message
sending message: {"temp": 70.000000, "humidity": 12.000000}
completed sending message
sending message: {"temp": 74.000000, "humidity": 42.000000}
completed sending message
Sending reported property: {'text': {'value': 'oGafYZ2c2601DRjONuD5G6y4FjCPuFGH'}}
sending message: {"temp": 94.000000, "humidity": 32.000000}
completed sending message
q
Quitting...
Disconnecting from IoT Hub
```Note: Currently the Cloud to Device (C2D) feature is in preview and behind a feature flag. To use C2D please add the following to the url ?flights=c2d