如何使用IoT中心c#代码中的设备ID获取设备密钥?

时间:2018-10-04 12:13:54

标签: c# azure azure-iot-hub

我已经天蓝色地创建了IoT中心。

使用以下代码将设备注册到IoT中心-

 public async Task<HttpResponseMessage> RegisterDeviceAsyncData(DeviceData deviceApp)
        {


                        deviceApp.PlatformName = _appSettingsAccessor.GetAppSettingValue(DEFAULT_HUB_KEY);



                    var result = await _deviceRegistrationHandler.RegisterDeviceAsync(deviceApp);


                response = HttpResponseMessageFactory.CreateMessageWithObjectBody(results);
            }

它现在已成功将设备注册到Iot集线器,我想使用代码c#将数据发送到这些设备

我有下面的代码可以将数据发送到设备,但是我不知道如何获取特定设备的连接字符串或密钥来发送数据。

 private static async Task SendDeviceToCloudMessagesAsync()
        {
    DeviceClient deviceClient = DeviceClient.CreateFromConnectionString("deviceConnectionString");
            while (true)
            {

                string messageString = string.Empty;
                Message iotHubMsg = new Message();

                foreach (BaseMessage msg in currentDevice.Messages)
                {


                        iotHubMsg = msg.ReadAsIotHubMessage();

                    messageString = Encoding.UTF8.GetString(iotHubMsg.GetBytes());

                        //Send the current messages and clear them
                        await deviceClient.SendEventAsync(iotHubMsg);
                        }
                        }
                        }

现在我尝试使用portal.azure.com获取连接字符串,但是在注册设备后实时如何获取连接字符串?使用SAS令牌或类似的东西我不知道有什么帮助?

1 个答案:

答案 0 :(得分:1)

我将尝试使用以下方法之一解决此问题:

  1. 使用通用设备连接字符串:
    a)转到IoT中心,然后从“共享访问策略”中获取“设备”策略的连接字符串(例如HostName = iothub.azure-devices.net; SharedAccessKeyName = device; SharedAccessKey = abcd1234)
    b)这是一个通用的连接字符串。如果添加“ DeviceId =“,它将特定于您的设备,并且IotHub将能够识别您的新设备/现有设备(例如HostName = iothub.azure-devices.net; SharedAccessKeyName = device; SharedAccessKey = abcd1234; DeviceId = device001)
  2. Azure Device provisioning Service的帮助下使用自动设备置备。我从未亲自使用过它,但是它应该可以正常工作。此外,如果您拥有大量设备,则应该采用这种方法。

希望这对您有所帮助。