2017-04-13 127 views
0

目標:使用節點模塊azure-iot-hub從瀏覽器(角度2)創建天藍色iot集線器設備。我可以從瀏覽器創建IoT Hub設備嗎?

問題:蔚IOT常見取決於封裝,加密,不會在瀏覽器中運行。

步驟重新創建:

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); 
    } 
} 

從Google Chrome工具控制檯

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) ... 

潛在的解決方案:開關加密webcrypto - 將需要重寫蔚IOT-common/lib目錄/ authorization.js

問題:

  1. 有任何人使用節點模塊從瀏覽器創建集線器設備azure-iot-hub
  2. 有沒有人使用替代方法從瀏覽器創建集線器設備?
  3. 如果不是Q1.2 - 我的潛在解決方案是否可行?
+0

您現在可以在Azure門戶中爲IoT Hub創建設備。轉到Azure IoT Hub儀表板,然後打開Device Explorer菜單。 – Sneezry

回答

0

azure-iothub節點模塊是服務客戶端SDK,這是創建將用於管理物聯網中心的實例,而不是設備的後端應用程序。

在設備方面,您需要使用設備客戶端SDK模塊azure-iot-device。 也就是說,即使您解決了各種依賴性問題,例如您發現的Crypto,因爲IoT Hub服務不支持CORS,這意味着它不會接受來自Web客戶端的請求,所以這仍然不起作用。 CORS對IoT Hub的支持在我們的積壓中,但尚未確定優先級,所以我們沒有ETA。

可以嘗試解決此限制的方法是在網站後端運行設備客戶端節點模塊,並在新的Web瀏覽器客戶端連接到您的站點時創建設備客戶端的新實例。

+0

計劃將邏輯放入Azure函數 – mrh042

相關問題