全部產品
Search
文件中心

IoT Platform:MQTT協議雲網關裝置使用MQTT.fx接入

更新時間:Jun 30, 2024

本文以Windows系統下MQTT.fx為例,介紹如何將MQTT協議雲網關裝置類比接入物聯網平台,並上報資料。

前提條件

已完成以下操作:

  • 購買企業版執行個體:本樣本購買華東2(上海)地區的尊享型執行個體。

  • 下載並安裝MQTT.fx軟體。MQTT.fx軟體安裝和使用說明,請參見MQTT.fx

    本文操作以mqttfx-5.2.0-windows-x64版本為例示範具體操作。由於第三方軟體不定期更新,建議您以實際頁面為準。

  • 自訂認證。

    本文樣本需自訂認證包含:根憑證root-ca.crt、服務端認證私密金鑰server.key和服務端認證server.crt

    您可以使用OpenSSL工具產生自訂認證,製作方法,請參見產生自訂認證

背景資訊

MQTT.fx是一款基於Eclipse Paho使用Java語言編寫的MQTT用戶端,支援Windows、Mac和Linux作業系統,可用於驗證裝置是否可與物聯網平台正常串連,並通過Topic通訊。

MQTT協議雲網關提供一方認證和三方認證兩種認證方式,裝置可選擇任一認證方式,使用自訂認證、服務端認證和自訂Topic通訊等能力,實現與物聯網平台串連並進行通訊。

MQTT協議雲網關裝置認證和通訊說明,請參見MQTT協議雲網關概述

裝置使用MQTT.fx接入(一方認證)

步驟一:建立雲網關產品和裝置

  1. 建立雲網關產品(MQTT):配置如下圖所示,服務端認證私密金鑰server.key服務端認證server.crt

    image

  2. 在雲網關列表,複製網關URL儲存。

    image

  3. 大量新增裝置:本樣本添加一個裝置,MQTT Usernamedevice_01MQTT Passwordhello123

步驟二:配置MQTT.fx接入

  1. 開啟MQTT.fx軟體,單擊功能表列中的Extras,選擇Edit Connection Profiles

  2. Edit Connection Profiles頁面,完成以下參數的設定。

    1. 設定以下基本資料,其他參數使用預設值。

      參數

      說明

      Profile Name

      輸入您的自訂名稱。

      Profile Type

      MQTT伺服器串連,選擇MQTT Broker

      Broker Address

      MQTT雲網關接入地區,即已建立雲網關產品的網關URL中網域名稱。

      Broker Port

      設定為自訂連接埠號碼,預設為1883

      Client ID

      (可選)用戶端ID,需自訂,長度不可超過64個字元。建議使用裝置的MAC地址或SN碼,方便您識別區分不同的用戶端。

    2. 單擊User Credentials,選中Use Username/Password複選框,設定User NamePassword

      User NamePassword分別對應已添加雲網關裝置的MQTT UsernameMQTT Password

    3. 單擊SSL/TLS,選中Enable SSL/TLS,設定ProtocolTLSv1.2

    4. 選中CA certificate file,然後選擇根憑證檔案root-ca.crt的路徑。image

  3. 設定完成後,單擊右下角的OK

  4. 單擊Connect

    右側亮綠燈,表示串連成功。在物聯網平台控制台執行個體下的裝置管理 > 裝置頁面,裝置device_01狀態顯示為線上image

裝置使用MQTT.fx接入(三方認證)

步驟一:建立裝置認證的FC函數

  1. 登入Function Compute控制台,在左側導覽列,單擊服務及函數

  2. 在頂部功能表列,選擇華東2(上海)地區,然後在服務列表頁面,單擊建立服務

  3. 建立服務面板,填寫服務名稱,例如:IoT_Service,然後單擊確定。

  4. 函數管理頁面,單擊建立函數

  5. 建立函數頁面,配置以下配置項,然後單擊建立

    image

  6. 函數詳情頁面,將範例程式碼替換為以下代碼,單擊部署代碼

    認證函數將UserName作為deviceName返回。

    # -*- coding: utf-8 -*-
    import logging
    import json
    import time
    import enum
    import random
    import string
    
    class Request:
        def __init__(self, json_str):
            self.clientId = None
            self.username = None
            self.password = None
            self.certificateCommonName = None
    
            for key, value in json.loads(json_str).items():
                setattr(self, key, value)
    
    class Response:
        def __init__(self):
            self.deviceName = None
            self.result = 'true'
            self.message = 'success'
    
        def handler(self, request):
            # 按照業務需求驗證UserName和Password的合法性
        
            self.deviceName = request.username
            
            
            return json.dumps(self.__dict__)
    
    def handler(event, context):
        request = Request(event)
        return Response().handler(request)

步驟二:建立雲網關產品

  1. 建立雲網關產品(MQTT):配置如下圖所示,其中服務端認證私密金鑰server.key服務端認證server.crt,裝置認證FC服務和裝置認證FC函數,選擇為已添加的IoT_Servicethree_part_auth

    image

  2. 在雲網關列表,複製網關URL儲存。

    image

步驟三:配置MQTT.fx接入

  1. 開啟MQTT.fx軟體,單擊功能表列中的Extras,選擇Edit Connection Profiles

  2. Edit Connection Profiles頁面,完成以下參數的設定。

    1. 設定以下基本資料,其他參數使用預設值。

      參數

      說明

      Profile Name

      輸入您的自訂名稱。

      Profile Type

      MQTT伺服器串連,選擇MQTT Broker

      Broker Address

      MQTT雲網關接入地區,即已建立雲網關產品的網關URL中網域名稱。

      Broker Port

      設定為自訂連接埠號碼,預設為1883

      Client ID

      (可選)用戶端ID,需自訂,長度不可超過64個字元。建議使用裝置的MAC地址或SN碼,方便您識別區分不同的用戶端。

    2. 單擊User Credentials,選中Use Username/Password複選框,設定User Name(例如:threeParty_device_001Password

      說明
      • User Name支援英文字母、數字、短劃線(-)、底線(_)、at(@)、英文句號(.)和英文冒號(:),長度限制為4~32個字元。User Name在產品維度下不可重複。

      • Password支援英文字母、數字、短劃線(-)、底線(_)、at(@)、英文句號(.)和英文冒號(:),長度限制為1~32個字元。

    3. 單擊SSL/TLS,選中Enable SSL/TLS,設定ProtocolTLSv1.2

    4. 選中CA certificate file,然後選擇根憑證檔案root-ca.crt的路徑。image

  3. 設定完成後,單擊右下角的OK

  4. 單擊Connect

    右側亮綠燈,表示串連成功。通過FC認證函數返回的deviceNamethreeParty_device_001會作為物聯平台裝置的DeviceName,在物聯網平台控制台執行個體下的裝置管理 > 裝置頁面,自動建立裝置threeParty_device_001,裝置狀態顯示為線上image

裝置使用自訂Topic上報資料

  1. 在MQTT.fx上,單擊Publish,在Publish文字框中,輸入自訂Topic:/home/garden/fountain

  2. 在文本編輯頁面,輸入要發送的訊息內容,然後單擊Publish

  3. 登入物聯網平台控制台,在對應執行個體下的監控營運 > Log Service頁面,查看裝置到雲訊息日誌訊息。具體操作,請參見查詢雲端作業記錄image