Создание строки подключения для Azure IoT Hub из JSON устройства после создания

Как сгенерировать строку подключения к Центру Интернета вещей Azure из deviceInfo, который является объектом JSON информации об устройстве после создания нового устройства с помощью API NodeJS службы Центра Интернета вещей.

Это мой фрагмент кода ниже. Внутри обратного вызова, где находится комментарий, я пытаюсь получить строку подключения устройства для разрешения, а не всю информацию об устройстве.

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. Вот информация об устройстве определения объектов. Я знаю, что мог бы разобрать его сам, но я также не смог найти в документации конкретного определения того, из чего состоит строка подключения. По своему опыту я знаю, что это имя хоста, идентификатор устройства и симметричный ключ, хотя я надеялся, что лазурная функция сгенерирует его, чтобы изолировать себя от проблем в будущем, если генерация строки подключения изменится.

azure-iothub от npm

Любая помощь будет оценена.


person technogeek1995    schedule 22.08.2018    source источник


Ответы (3)


В azure-iot-device npm (IoT Hub Device SDK для Node.js) есть функция для генерации строки подключения устройства:

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

Вы также можете сослаться на полный код , чтобы узнать, как Azure IoT Toolkit генерирует строку подключения устройства.

person Jun Han    schedule 25.08.2018

Это функция, которую я придумал. Однако я хотел бы по возможности использовать функцию из пакета Azure IoT Hub.

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

Насколько мне известно, в пакете нет функции для создания строки подключения для устройства. Но я могу найти способ отформатировать строку подключения в util.

   import * as util from 'util';
   var connectionString = util.format('HostName=xxx-lab.azure-devices.net;DeviceId=%s;SharedAccessKey=%s', deviceId, deviceKey);
person Michael Xu - MSFT    schedule 23.08.2018
comment
Благодарю за ваш ответ. Рад узнать, что не только мне удалось найти функцию для генерации строки подключения. - person technogeek1995; 23.08.2018