在使用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函数来生成它,以在连接字符串的生成发生更改时将自己与问题隔离开来。
任何帮助将不胜感激。
答案 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);