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

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

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

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

Azure-Iothub от нпм

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

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 генерирует строку подключения устройства.

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

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

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

function generateConnectionString(deviceInfo, hub){
  return `HostName=${hub}.azure-devices.net;DeviceId=${deviceInfo.deviceId};SharedAccessKey=${deviceInfo.authentication.symmetricKey.primaryKey}`;
}
Другие вопросы по тегам