1

如何在deviceInfo使用 IoT 中心服务 NodeJS API 创建新设备后从 生成 Azure IoT 中心连接字符串,该字符串是设备信息的 JSON 对象。

这是我下面的代码片段。在评论所在的回调内部,我试图获取要解析的设备连接字符串,而不是所有设备信息。

import iothub from 'azure-iothub';
const myIoTHub = iothub.Registry.fromConnectionString(...);

function createDevice(device) {
  return new Promise((resolve, reject) => {
    myIoTHub.create(device, function (err, deviceInfo, res) {
      if (err) reject(err);
      // deviceInfo ---> connectionString
      resolve(connectionString);
    });
  });
}

我查看了 Microsoft 网站上的文档,但唯一专门针对连接字符串的文档是this。这是设备信息对象定义。我知道我可以自己解析它,但我也无法在文档中找到关于连接字符串包含什么的具体定义。根据我的经验,我知道它是一个主机名、一个设备 ID 和一个对称密钥——尽管我希望有一个 azure 函数来生成它,以便在连接字符串生成发生变化时将自己与未来的问题隔离开来。

来自 npm 的 azure-iothub

任何援助将不胜感激。

4

3 回答 3

3

npm(IoT Hub Device SDK for Node.js)中有一个函数azure-iot-device可以生成设备连接字符串:

import { ConnectionString as DeviceConnectionString } from "azure-iot-device";
const deviceConnectionString = DeviceConnectionString.createWithSharedAccessKey(hostName, device.deviceId, device.authentication.SymmetricKey.primaryKey);

您还可以参考此处的完整代码,了解Azure IoT Toolkit如何生成设备连接字符串。

于 2018-08-25T10:55:59.093 回答
0

这是我想出的功能。但是,如果可能的话,我想使用 Azure IoT Hub 包中的一个函数。

function generateConnectionString(deviceInfo, hub){
  return `HostName=${hub}.azure-devices.net;DeviceId=${deviceInfo.deviceId};SharedAccessKey=${deviceInfo.authentication.symmetricKey.primaryKey}`;
}
于 2018-08-22T13:28:20.423 回答
0

据我所知,包中没有生成设备连接字符串的功能。但我可以找到一种方法来格式化util中的连接字符串。

   import * as util from 'util';
   var connectionString = util.format('HostName=xxx-lab.azure-devices.net;DeviceId=%s;SharedAccessKey=%s', deviceId, deviceKey);
于 2018-08-23T09:55:17.093 回答