【 Cloud 】使用 MQTT 傳送訊息到 Azure IoT Hub 並透過 Built-in endpoint 接收訊息 ( Node.js )

【 Cloud 】使用 MQTT 傳送訊息到 Azure IoT Hub 並透過 Built-in endpoint 接收訊息 ( Node.js )
Photo by Michael Rodock / Unsplash

內容

  • 前置準備作業
  • 建立與設定 Azure IoT Hub
  • 撰寫接收與傳送訊息程式
  • 測試與驗證

前置準備作業

建立服務所使用的名稱

屬性 名稱
Resource group telemetry-rg
Azure IoT Hub iot-hub-svc
Device ID device01

建立與設定 Azure IoT Hub

Step 1. 建立 Azure IoT Hub Service

  • 於搜尋框輸入 iot hub > 點選 IoT Hub 的搜尋結果

---2023-07-07---8.01.08


Step 2. 點選左上角 + Create 按鈕

---2023-07-07---8.02.38


Step 3. 輸入相關資訊

  • Resource group 欄位請選擇唯一且可識別的名稱。
  • IoT hub name 欄位請輸入唯一且可識別的名稱。
  • Region 欄位請選擇所要使用服務的所在位置。
  • Tier 欄位請選擇所要使用的規格。
  • Daily message limit 欄位請選擇每月的訊息量。
  • 以上資訊輸入完成後點選左下角的 Review + Create

---2023-07-07---8.21.11

---2023-07-07---8.22.30


Step 4. 確認相關資訊

  • 確認完成後請點選左下角的 Create

---2023-07-07---8.24.50


Step 5. 建立過程中

---2023-07-07---8.52.18


Step 6. 建立完成,點選 Go to resource

---2023-07-07---8.54.30


Step 7. 建立 Device ID

  • 點選左側的 Devices > 再點選上方的 + Add Device

---2023-07-07---8.56.32-1

  • Device ID 欄位輸入 device01 後再點選下方的 Save

---2023-07-07---9.00.59

---2023-07-07---9.01.50


Step 8. 取得 Device 的 Primary connection stringPrimary key

  • 點選 device01

---2023-07-07---9.04.03

  • 取得 Connection StringKey

---2023-07-07---9.06.49


Step 9. 取得 Event Hub 相關資訊

  • 回到所建立的 Azure IoT Hub 頁面,再點選左側的 Built-in endpoints 即可取得 Event Hub-compatible nameConsumer GroupsEvent Hub-compatible endpoint

---2023-07-07---9.10.35

撰寫接收與傳送訊息程式

└── Azure_IoT_Hub_Send_Receive
    ├── Nodejs
    │   ├── .env-Sample
    │   ├── mqtt_send.js
    │   ├── package-lock.json
    │   ├── package.json
    │   ├── receive.js
    │   └── send.js
    ├── Python
    │   ├── .env-Sample
    │   ├── receive.py
    │   └── send.py
    └── README.md
  • 切換工作路徑到 ./Azure_IoT_Hub_Send_Receive/Nodejs

    • 請於終端機輸入下方指令
      cd ./Azure_IoT_Hub_Send_Receive/Nodejs
      
  • 安裝相關套件

    • 請於終端機輸入下方指令

      npm i
      

      ---2023-07-07---9.20.29

  • 建立與設定 .env

    • ./Azure_IoT_Hub_Send_Receive/Nodejs 路徑中建立 .env 的檔案並輸入以下的內容
      • 第 1 行的 IOT_HUB_DEVICE_CONNECTION_STRING 等號右邊請輸入 建立與設定 Azure IoT Hub 段落 Step 8 所取得的 Primary connection string
      • 第 2 行的 EVENT_HUB_NAME 等號右邊請輸入 建立與設定 Azure IoT Hub 段落 Step 9 所取得的 Event Hub-compatible name
      • 第 3 行的 EVENT_HUB_COMPATIBLE_ENDPOINT 等號右邊請輸入 建立與設定 Azure IoT Hub 段落 Step 9 所取得的 Event Hub-compatible endpoint
      • 第 4 行的 CONSUMER_GROUP_NAME 等號右邊請輸入 建立與設定 Azure IoT Hub 段落 Step 9 所取得的 Consumer Groups
      • 第 5 行的 IOT_HUB_DEVICE_ID 等號右邊請輸入 建立與設定 Azure IoT Hub 段落 Step 7 所建立的 Device ID
      • 第 5 行的 DEVICE_KEY 等號右邊請輸入 建立與設定 Azure IoT Hub 段落 Step 8 所取得的 Primary key

測試與驗證

  • 開啟 2 個終端機,第 1 個終端機輸入下方指令
node receive.js

---2023-07-07---9.37.27

  • 開啟 2 個終端機,第 2 個終端機輸入下方指令
node mqtt_send.js

---2023-07-07---3.18.28-1

  • 回到第 1 個終端機看結果

---2023-07-07---3.18.44-1

[
   {
      "body":{
         "temperature":0.18216750068202936,
         "humidity":0.26031225741329145,
         "timestamp":"2023/7/7 15:18:11.103"
      },
      "properties":{
         
      },
      "offset":"833184",
      "sequenceNumber":1708,
      "enqueuedTimeUtc":"2023-07-07T07:18:11.372Z",
      "systemProperties":{
         "iothub-connection-device-id":"device01",
         "iothub-connection-auth-method":"{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
         "iothub-connection-auth-generation-id":"638242885636433004",
         "iothub-enqueuedtime":1688714291131,
         "iothub-message-source":"Telemetry",
         "contentType":"application/json",
         "contentEncoding":"utf-8"
      },
      "contentType":"application/json"
   }
]

Sample Code

GitHub

List of blogs