def get_azure_client(): connection_string = get_connection_string() azure_iot_hub_mock = os.environ.get("AZURE_IOTHUB_MOCK") if azure_iot_hub_mock: client = IoTHubRegistryManager( connection_string=connection_string, host="mock_host", token_credential="test_token", ) client.protocol.config.connection.verify = False return client return IoTHubRegistryManager.from_connection_string(connection_string)
def create_device_with_symmetric_key(): desc = IdentityDescription() desc.authentication_description = "shared private key" desc.device_id = "00e2etest-delete-me-python-key-" + str(uuid.uuid4()) registry_manager = IoTHubRegistryManager.from_connection_string( e2e_settings.IOTHUB_CONNECTION_STRING) dev = registry_manager.create_device_with_sas(desc.device_id, None, None, "enabled") desc.primary_key = dev.authentication.symmetric_key.primary_key desc.connection_string = ("HostName=" + e2e_settings.IOTHUB_HOSTNAME + ";DeviceId=" + desc.device_id + ";SharedAccessKey=" + desc.primary_key) return desc
def create_device_with_sas(): desc = IdentityDescription() desc.authentication_description = "application supplied SAS" desc.device_id = "00e2etest-delete-me-python-sas-" + str(uuid.uuid4()) registry_manager = IoTHubRegistryManager.from_connection_string( e2e_settings.IOTHUB_CONNECTION_STRING) dev = registry_manager.create_device_with_sas(desc.device_id, None, None, "enabled") desc.primary_key = dev.authentication.symmetric_key.primary_key uri = "{}/devices/{}".format(e2e_settings.IOTHUB_HOSTNAME, desc.device_id) expiry = time.time() + 3600 desc.sas_token = generate_sas_token(uri, desc.primary_key, None, expiry) print("token = {}".format(desc.sas_token)) return desc
# ------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for # license information. # -------------------------------------------------------------------------- import sys import os from azure.iot.hub import IoTHubRegistryManager connection_str = os.getenv("IOTHUB_CONNECTION_STRING") device_id = os.getenv("IOTHUB_DEVICE_ID") try: # Create IoTHubRegistryManager registry_manager = IoTHubRegistryManager.from_connection_string( connection_str) print("Conn String: {0}".format(connection_str)) # Send Message To Device send_message = "Sending c2d message 1" registry_manager.send_c2d_message(device_id, send_message) # Send 2nd Message To Device with property send_message = b"{ 'message': 'this is message 2' }" registry_manager.send_c2d_message(device_id, send_message, { "contentType": "application/json", "prop1": "value1" }) # Send 2nd Message To Device with property send_message = "Sending c2d message 3"
def delete_device(device_id): registry_manager = IoTHubRegistryManager.from_connection_string( e2e_settings.IOTHUB_CONNECTION_STRING) registry_manager.delete_device(device_id)
# Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for # license information. import uuid import e2e_settings import time from azure.iot.hub import IoTHubRegistryManager from base64 import b64encode, b64decode from hashlib import sha256 from six.moves.urllib import parse from hmac import HMAC registry_manager = IoTHubRegistryManager.from_connection_string( e2e_settings.IOTHUB_CONNECTION_STRING) def generate_sas_token(uri, key, policy_name, expiry): sign_data = "%s\n%d" % ((parse.quote_plus(uri)), int(expiry)) signature = b64encode( HMAC(b64decode(key), sign_data.encode("utf-8"), sha256).digest()) rawtoken = {"sr": uri, "sig": signature, "se": str(int(expiry))} if policy_name is not None: rawtoken["skn"] = policy_name return "SharedAccessSignature " + parse.urlencode(rawtoken) class DeviceIdentityDescription(object):