示例#1
0
def provision_new_device_blocking(registration_id=None):
    """provision a new device

    This is a blocking function, called from the async wrapper below.

    azure.iot.device has an aio API,
    but it's proven to fail with fairly low concurrency

    Instead, we call this function in a background process

    To avoid resource issues, we spawn a new process
    for every call!
    """
    from azure.iot.device import ProvisioningDeviceClient

    # TODO: allow requesting keys for an existing id ?!
    if registration_id is None:
        registration_id = new_device_id()
    device_key = derive_device_key(registration_id, group_symmetric_key)
    provisioning_device_client = ProvisioningDeviceClient.create_from_symmetric_key(
        provisioning_host=provisioning_host,
        registration_id=registration_id,
        id_scope=id_scope,
        symmetric_key=device_key,
    )

    result = provisioning_device_client.register()

    if result.status == "assigned":
        return (result.registration_state, device_key)
    else:
        raise ValueError("registration status was %s" % result.status)
示例#2
0
def register_device(registration_id, derived_device_key):
    provisioning_device_client = ProvisioningDeviceClient.create_from_symmetric_key(
        provisioning_host=provisioning_host,
        registration_id=registration_id,
        id_scope=id_scope,
        symmetric_key=derived_device_key,
    )
    return provisioning_device_client.register()
示例#3
0
def result_from_register(registration_id, symmetric_key):
    provisioning_device_client = ProvisioningDeviceClient.create_from_symmetric_key(
        provisioning_host=PROVISIONING_HOST,
        registration_id=registration_id,
        id_scope=ID_SCOPE,
        symmetric_key=symmetric_key,
    )

    return provisioning_device_client.register()
示例#4
0
def result_from_register(registration_id, symmetric_key, protocol):
    protocol_boolean_mapping = {"mqtt": False, "mqttws": True}
    provisioning_device_client = ProvisioningDeviceClient.create_from_symmetric_key(
        provisioning_host=PROVISIONING_HOST,
        registration_id=registration_id,
        id_scope=ID_SCOPE,
        symmetric_key=symmetric_key,
        websockets=protocol_boolean_mapping[protocol],
    )

    return provisioning_device_client.register()
示例#5
0
def result_from_register(registration_id, device_cert_file, device_key_file, protocol):
    x509 = X509(cert_file=device_cert_file, key_file=device_key_file, pass_phrase=device_password)
    protocol_boolean_mapping = {"mqtt": False, "mqttws": True}
    provisioning_device_client = ProvisioningDeviceClient.create_from_x509_certificate(
        provisioning_host=PROVISIONING_HOST,
        registration_id=registration_id,
        id_scope=ID_SCOPE,
        x509=x509,
        websockets=protocol_boolean_mapping[protocol],
    )

    return provisioning_device_client.register()
示例#6
0
def result_from_register(registration_id, device_cert_file, device_key_file):
    x509 = X509(cert_file=device_cert_file,
                key_file=device_key_file,
                pass_phrase=device_password)

    provisioning_device_client = ProvisioningDeviceClient.create_from_x509_certificate(
        provisioning_host=PROVISIONING_HOST,
        registration_id=registration_id,
        id_scope=ID_SCOPE,
        x509=x509,
    )

    return provisioning_device_client.register()
示例#7
0
class Wizard(object):
    def __init__(self, first_name, last_name, dict_of_stuff):
        self.first_name = first_name
        self.last_name = last_name
        self.props = dict_of_stuff


provisioning_host = os.getenv("PROVISIONING_HOST")
id_scope = os.getenv("PROVISIONING_IDSCOPE")
registration_id = os.getenv("PROVISIONING_REGISTRATION_ID")
symmetric_key = os.getenv("PROVISIONING_SYMMETRIC_KEY")

provisioning_device_client = ProvisioningDeviceClient.create_from_symmetric_key(
    provisioning_host=provisioning_host,
    registration_id=registration_id,
    id_scope=id_scope,
    symmetric_key=symmetric_key,
)

properties = {"House": "Gryffindor", "Muggle-Born": "False"}
wizard_a = Wizard("Harry", "Potter", properties)

provisioning_device_client.provisioning_payload = wizard_a
registration_result = provisioning_device_client.register()
# The result can be directly printed to view the important details.
print(registration_result)

# Individual attributes can be seen as well
print("The status was :-")
print(registration_result.status)
print("The etag is :-")
import uuid


provisioning_host = os.getenv("PROVISIONING_HOST")
id_scope = os.getenv("PROVISIONING_IDSCOPE")
registration_id = os.getenv("DPS_X509_REGISTRATION_ID")

x509 = X509(
    cert_file=os.getenv("X509_CERT_FILE"),
    key_file=os.getenv("X509_KEY_FILE"),
    pass_phrase=os.getenv("PASS_PHRASE"),
)

provisioning_device_client = ProvisioningDeviceClient.create_from_x509_certificate(
    provisioning_host=provisioning_host,
    registration_id=registration_id,
    id_scope=id_scope,
    x509=x509,
)

registration_result = provisioning_device_client.register()

# The result can be directly printed to view the important details.
print(registration_result)

if registration_result.status == "assigned":
    print("Will send telemetry from the provisioned device")
    # Create device client from the above result
    device_client = IoTHubDeviceClient.create_from_x509_certificate(
        x509=x509,
        hostname=registration_result.registration_state.assigned_hub,
        device_id=registration_result.registration_state.device_id,