创建后从设备JSON生成Azure IoT中心的连接字符串

时间:2018-08-22 13:17:28

标签: node.js azure es6-promise azure-iot-hub azure-iot-hub-device-management

在使用IoT中心服务NodeJS API创建新设备后,如何从deviceInfo生成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。这是device information对象定义。我知道我可以自己解析它,但是我也找不到文档中有关连接字符串组成的特定定义。根据我的经验,我知道这是一个主机名,一个设备ID和一个对称密钥-尽管我希望通过azure函数来生成它,以在连接字符串的生成发生更改时将自己与问题隔离开来。

azure-iothub from npm

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

fun npm(用于Node.js的IoT中心设备SDK)中有一个函数来生成设备连接字符串:

#include <stdio.h>
char* fun(void);
int main()
{
   printf("%s",fun());
   return 0;
}

char* fun(void)
{
   static char str[]="Hello";
   return str;
}

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

答案 1 :(得分:0)

这是我想到的功能。但是,如果可能的话,我想使用Azure IoT中心包中的功能。

function generateConnectionString(deviceInfo, hub){
  return `HostName=${hub}.azure-devices.net;DeviceId=${deviceInfo.deviceId};SharedAccessKey=${deviceInfo.authentication.symmetricKey.primaryKey}`;
}

答案 2 :(得分:0)

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

   import * as util from 'util';
   var connectionString = util.format('HostName=xxx-lab.azure-devices.net;DeviceId=%s;SharedAccessKey=%s', deviceId, deviceKey);