Могу ли я создать устройство IoT Hub из браузера?

Цель: создать устройство концентратора Azure iot в браузере (angular2) с помощью модуля узла azure-iot-hub.

Проблема: azure-iot-common зависит от пакета crypto, который не будет работать в браузере.

Шаги по воссозданию:

import { Component, OnInit } from '@angular/core';
let iothub = require(‘azure-iothub’);

const connectionString = ‘HostName=<my-host>.azure-devices.net;SharedAccessKeyName=<my-key-name>;SharedAccessKey=<my-key>=’;

@Component({
  selector: 'acn-shop',
  template: `
<div class="al-main">
  <div class="al-content container-fluid">
    <h1>Azure IoT Hub Devices</h1>
  </div>
</div>`
})
export class ShopComponent implements OnInit {

  constructor() {
  }

  public ngOnInit() {
    this.connect();
  }

  public connect() {
    console.log('Calling connect()');
    const registry = iothub.Registry.fromConnectionString(connectionString);
  }
}

Из консоли Chrome Tools

Error: Uncaught (in promise): TypeError: crypto.createHmac is not a function
TypeError: crypto.createHmac is not a function
    at Object.hmacHash (authorization.js:36)
    at Function.create (shared_access_signature.js:67)
    at Object.create (shared_access_signature.js:15)
    at Function.fromConnectionString (registry.js:65)
    at ShopComponent.Array.concat.ShopComponent.connect (shop.component.ts:32)
   … (goes on for a bit) ...

Возможное решение: переключить crypto на webcrypto - потребуется переписать azure-iot-common / lib / authorization.js

Вопросы:

  1. Кто-нибудь создавал хаб-устройство из браузера с помощью узлового модуля azure-iot-hub?
  2. Кто-нибудь создавал хаб-девайс из браузера альтернативными методами?
  3. Если нет на вопрос 1, 2 - кажется ли мое потенциальное решение возможным?

person mrh042    schedule 13.04.2017    source источник
comment
Теперь вы можете создавать устройства для Центра Интернета вещей на портале Azure. Перейдите на панель мониторинга Azure IoT Hub и откройте меню обозревателя устройств.   -  person Sneezry    schedule 26.05.2017


Ответы (2)


Узловой модуль azure-iothub представляет собой клиентский SDK service. , который предназначен для создания серверных приложений, которые будут использоваться для управления экземпляром Центра Интернета вещей, а НЕ для устройств.

Что касается устройств, вам необходимо использовать модуль SDK клиента устройства azure-iot- устройство. Тем не менее, это по-прежнему не будет работать, даже если вы решите различные проблемы с зависимостями, такие как обнаруженная вами Crypto, поскольку служба IoT Hub не поддерживает CORS, что означает, что она не будет принимать запросы, поступающие от веб-клиентов. Поддержка CORS для IoT Hub находится в нашей очереди, но еще не имеет приоритетов, поэтому у нас нет ETA.

Что вы можете попытаться обойти это ограничение, так это запустить модуль клиентского узла устройства на внутренней стороне веб-сайта, создав новый экземпляр клиента устройства, когда новый клиент веб-браузера подключается к вашему сайту.

person Olivier Bloch    schedule 17.04.2017
comment
Планирование размещения логики в функции Azure - person mrh042; 18.04.2017

Библиотека https://github.com/PectiveVentures/webcrypto-liner предоставит вам криптовалюту объект, который вы можете использовать в браузере (даже на нижнем уровне / IE). https://github.com/PectiveVentures/node-webcrypto-ossl предоставит вам один для Node.

Проблем с переключением на webcrypto возникнуть не должно, см. https://github.com/diafygi/webcrypto-examples#hmac, чтобы узнать, как позвонить.

person rmhrisk    schedule 13.04.2017
comment
Спасибо за ответы. - person mrh042; 18.04.2017