示例#1
0
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
示例#4
0
# -------------------------------------------------------------------------
# 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)
示例#6
0
# 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):