I am dynamically provision an iot device using the python azure-iot-device python package. I am using v2 and not 3.0.0b2. I can't even get that to compile.
Here's my python code trying to provision a device:
import asyncio
import os
from azure.iot.device.aio import (
ProvisioningDeviceClient,
)
from dotenv import load_dotenv
load_dotenv(dotenv_path=".env")
CONNECTION_STRING = os.getenv("IOTHUB_DEVICE_CONNECTION_STRING")
ID_SCOPE = os.getenv("PROVISIONING_IDSCOPE")
REGISTRATION_ID = os.getenv("PROVISIONING_REGISTRATION_ID")
SYMMETRIC_KEY = os.getenv("PROVISIONING_SYMMETRIC_KEY")
PROVISIONING_HOST = os.getenv("PROVISIONING_HOST")
# PROVISIONING_SHARED_ACCESS_KEY = os.getenv("PROVISIONING_SHARED_ACCESS_KEY")
async def main():
print("Starting multi-feature sample")
provisioning_device_client = ProvisioningDeviceClient.create_from_symmetric_key(
provisioning_host=PROVISIONING_HOST,
registration_id=REGISTRATION_ID,
id_scope=ID_SCOPE,
symmetric_key=SYMMETRIC_KEY,
)
provisioning_device_client.provisioning_payload = "<Your Payload>"
provisioning_result = None
try:
provisioning_result = await provisioning_device_client.register()
except Exception as e:
print(f"an error occurred provisioning the device -- {e}")
finally:
print(f"result -- {provisioning_result}")
if __name__ == "__main__":
try:
asyncio.run(main())
except KeyboardInterrupt:
# Exit application because user indicated they wish to exit.
# This will have cancelled `main()` implicitly.
print("User initiated exit. Exiting.")
The symmetric key is derived by using the enrollment group master key to compute an HMAC-SHA256 of the registration ID for the device. I simply followed the "Derive a Device Key" section in this guide -- https://learn.microsoft.com/en-us/azure/iot-dps/how-to-legacy-device-symm-key?tabs=linux&pivots=programming-language-python#derive-a-device-key
I keep getting 'Unexpected Failure' error. The code is so little that there's almost nothing to debug. I believe I followed the steps closely in setting up my iot hub and dps. Please let me know any suggestions
source https://stackoverflow.com/questions/76687814/dynamically-provision-iot-device-with-azure-dps-unexpected-failure-python-sdk
Comments
Post a Comment