В среде Azure Internet of Things при попытке подключения любых устройств, которые не поддерживают использование эталонной архитектуры Microsoft рекомендуется преобразование протокола .
Я реализовал шлюз трансляции, который мультиплексирует соединения и функционирует аналогично этой реализации , которая использует политику доступа «подключение устройства» для отправки сообщений в Cloud IoT Hub как любое устройство через один AMQP подключение. Например, сообщения отправляются по следующей ссылке '/devices/' + deviceIdentifier + '/messages/events';
Это полностью функционально для соединения, образованного device -> my middleware -> Cloud IoT Hub
, и для обратного направления. Я хотел бы реализовать то же самое с введением прозрачного шлюза, то есть device -> my middleware -> Edge IoT Hub -> Cloud IoT Hub
Моя проблема возникает из-за того, что Edge Hub, по-видимому, не принимает ключ политики доступа "подключение устройства".
В качестве аутентификации я создаю SharedAccessSignature
, как видно из примера репозитория и ниже, однако, насколько я могу судить, в отличие от SharedAccessKeyAuthenticationProvider.fromConnectionString
, нет способа указать gatewayHostName.
this.sas = SharedAccessSignature.create(
encodeURIComponent(this.endpoint), this.keyName, this.key,
Math.ceil((Date.now() / 1000) + this.KEY_TIMEOUT)
);
Короче говоря, я пытаюсь, чтобы мое промежуточное ПО "олицетворяло" любое из устройств в концентраторе, через одно соединение TLS, используя ключ политики доступа "соединение устройства", через прозрачный пограничный шлюз IoT, однако я вижу, нет места для указания параметра gatewayHostName
для SharedAccessSignature или для поиска способа поиска и настройки общих политик доступа уровня IoT на концентраторе IoT Edge.