物聯網資訊匯流第一站,教你如何以以 MQTT 連接微軟 Azure IoT HUB

IoT Hub 是 Azure 物聯網套件(Azure IoT Suite)中的主要 PaaS 服務,負責管理與連接物聯網裝置並協助企業蒐集、管理和處理從物聯網裝置上所產生的資料。
評論
評論

IoT Hub 是 Azure 物聯網套件(Azure IoT Suite)中的主要 PaaS 服務,負責管理與連接物聯網裝置並協助企業蒐集、管理和處理從物聯網裝置上所產生的資料。

這個文章將提供逐步引導,如何以 MQTT 連接微軟 Azure IoT Hub,以及進階設定指令,與程式碼範例。

微軟 Azure 初步設定

1.  若您沒有帳號,請於 https://azure.microsoft.com/en-us 建立

create-free-account

2.  登入您的帳號

sign-in-to-azure

3.  選取 New > Internet of Things > Azure IoT Hub.

create-new-iot-hub

4.  為新增的 Azure* IoT Hub 輸入必要資訊,並點選 Create

create-new-iot-hub-2

您的 Azure* IoT Hub 將馬上建立

取得共用存取簽章 (SAS)token ,作為 administrative 管理用途

一旦您的 Azure IoT Hub 被創造,您必須取得 SAS 簽章 token ,以執行主管理員動作,像是新增或列出裝置。
欲達成目標:

1. 在主控台,點選您新增的 Azure IoT Hub 連結.

2. 點選 Settings > Shared access policies > registryReadWrite.

obtain-sas

3. 取得 Primary key 以及其對應的 Connection string

4. 新增 SAS token,如下步驟:

sastoken < 您的 IoT Hub 名>.azure-devices.net/devices/ < 您的 primary key> 1440 registryReadWrite

Note: 執行此步驟時,您必須在您下載(或複製)此範例的目錄下執行
(例如: C:\Users\me\Documents\GitHub\intel-iot-examples-mqtt\support\azure\build\windows)
您的 SAS token 應如下顯示:

該 SAS token 只會於 24 小時內有效,且只可用作執行 administrative 功能,例如新增新裝置。每個裝置亦需他自己的 SAS token,將在後續步驟中建立。

您可以在 support\azure 下找到 SAS token 程式, Windows 、 OS X 和 Linux 可在 support\azure\build 資料夾下找到 Precompiled binaries 檔。

新增新裝置

你可以使用 cURL 指令於你的 Azure* IoT Hub 新增新裝置,以 SAS token registryReadWrite 權限獲取,如上述提及。例如,新增一個名為“edison1”的新裝置,請輸入以下指令:

$ curl -i -X PUT -H "Content-Type: application/json" -H "Authorization: < 您的 SharedAccessSignature>" -d "{deviceId: \"edison1\"}" https://< 您的 IoT Hub 名>.azure-devices.net/devices/edison1?api-version=2016-02-03

若您使用 Windows ,您需安裝 Cygwin 才可使用 cURL 。相關資訊請參考 installing cygwin.md
您應接收到如下回應:

create-new-device-curl

取得裝置列表

您可以使用 cURL 指令,以 SAS token registryReadWrite 權限獲取您的 Azure* IoT Hub 目前裝置清單,如下所示:

curl -i -H "Accept: application/json" -H "Authorization: " https://< 您的 IoT Hub 名>.azure-devices.net/devices?api-version=2016-02-03

您應接收到如下回應:

list-devices-curl

將裝置與 Azure* IoT Hub 連接,您需要裝置的 Primary key 或 Secondary key 以取得 SAS token 。

獲取裝置用 SAS token

您需要新建一個 SAS token ,讓 Intel® Edison board 與您的 Azure* IoT Hub 連接並錄取資料。此種 SAS token 的權限比 administrative 的 SAS token 權限相較較小。您可以使用 SAS token 如下:

sastoken .azure-devices.net/devices/< 您的裝置名> 1440

您的 SAS token 應和下圖類似:

device-sas-example

它的有效期限為 24 小時,且只應使用於它創建的裝置上。也就是說,每個您欲連接的裝置都需要自己的 SAS token。

總結

若您依照上述步驟執行,應已經擁有您的程式與 MQTT 伺服器連接所需資訊:

  • MQTT_SERVER -- use <Your IoT Hub Name>.azure-devices.net, along with the ssl:// (for C++) or the mqtts:// (for JavaScript*) protocol
  • MQTT_CLIENTID -- use < 您的裝置名>
  • MQTT_TOPIC -- use devices/< 您的裝置名>/messages/events/
  • MQTT_USERNAME -- use < 您的 IoT Hub 名>.azure-devices.net/< 您的裝置名>
  • MQTT_PASSWORD – 以您裝置的 SAS token 作為字串.

C++附加設定

在 Intel® Edison board 執行您的 C++ 程式碼時,您需要在 Eclipse 設定 MQTT 客戶端參數如下:

1.  於 Run configurations 以及 Commands to execute before application field 裡執行以下設定:

chmod 755 /tmp/< 您的應用程式名>; export MQTT_SERVER="ssl://< 您的 IoT Hub 名>.azure-devices.net:8883″; export MQTT_CLIENTID="< 您的裝置 ID>"; export MQTT_USERNAME=".azure-devices.net/< 您的裝置名>"; export MQTT_PASSWORD="< 您的裝置 SAS token>"; export MQTT_TOPIC="devices/< 您的裝置名>/messages/events/"

2.  點選 Apply 存取設定。

3.  點選 Run ,於您的主板上執行該程式碼。

Javascript 附加設定

在 Intel® Edison board 執行您的 JavaScript 程式碼時,您需要在 Intel® XDK IDE 設定 MQTT 客戶端參數。新增以下設定至 config.json 檔:

螢幕截圖 2016-06-21 20.12.03

精選熱門好工作

iOS 工程師

FunNow
臺北市.台灣

獎勵 NT$15,000

資深前端工程師 - Solution (Senior Frontend Engineer)

iKala 愛卡拉
臺北市.台灣

獎勵 NT$15,000

Android 工程師

Omlet Arcade 美商歐姆雷特
臺北市.台灣

獎勵 NT$15,000

評論