繁体   English   中英

如何使用 C# 从 IoT 中心使用设备 ID 获取设备密钥?

[英]How to get device key using device id from IoT hub using C#?

我在 Azure 中创建了一个 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. 使用通用设备连接字符串:
    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 设备预配服务的帮助下使用自动设备预配。 我从来没有亲自使用过它,但它应该可以工作。 此外,如果您有大量设备,这应该是方法。

希望这对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM