Создание строки подключения для концентратора 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 сгенерирует ее, чтобы изолировать себя от проблем в будущем, если изменится генерация строки соединения.
Любая помощь будет оценена.
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}`;
}