本文以Windows系統下MQTT.fx為例,介紹如何將MQTT協議雲網關裝置類比接入物聯網平台,並上報資料。
前提條件
已完成以下操作:
背景資訊
MQTT.fx是一款基於Eclipse Paho使用Java語言編寫的MQTT用戶端,支援Windows、Mac和Linux作業系統,可用於驗證裝置是否可與物聯網平台正常串連,並通過Topic通訊。
MQTT協議雲網關提供一方認證和三方認證兩種認證方式,裝置可選擇任一認證方式,使用自訂認證、服務端認證和自訂Topic通訊等能力,實現與物聯網平台串連並進行通訊。
MQTT協議雲網關裝置認證和通訊說明,請參見MQTT協議雲網關概述。
裝置使用MQTT.fx接入(一方認證)
步驟一:建立雲網關產品和裝置
建立雲網關產品(MQTT):配置如下圖所示,服務端認證私密金鑰為
server.key
和服務端認證為server.crt
。在雲網關列表,複製網關URL儲存。
大量新增裝置:本樣本添加一個裝置,MQTT Username為
device_01
,MQTT Password為hello123
。
步驟二:配置MQTT.fx接入
開啟MQTT.fx軟體,單擊功能表列中的Extras,選擇Edit Connection Profiles。
在Edit Connection Profiles頁面,完成以下參數的設定。
設定以下基本資料,其他參數使用預設值。
參數
說明
Profile Name
輸入您的自訂名稱。
Profile Type
MQTT伺服器串連,選擇MQTT Broker。
Broker Address
MQTT雲網關接入地區,即已建立雲網關產品的網關URL中網域名稱。
Broker Port
設定為自訂連接埠號碼,預設為
1883
。Client ID
(可選)用戶端ID,需自訂,長度不可超過64個字元。建議使用裝置的MAC地址或SN碼,方便您識別區分不同的用戶端。
單擊User Credentials,選中Use Username/Password複選框,設定User Name和Password。
User Name和Password分別對應已添加雲網關裝置的MQTT Username和MQTT Password。
單擊SSL/TLS,選中Enable SSL/TLS,設定Protocol為TLSv1.2。
選中CA certificate file,然後選擇根憑證檔案
root-ca.crt
的路徑。
設定完成後,單擊右下角的OK。
單擊Connect。
右側亮綠燈,表示串連成功。在物聯網平台控制台執行個體下的裝置管理 > 裝置頁面,裝置
device_01
狀態顯示為線上。
裝置使用MQTT.fx接入(三方認證)
步驟一:建立裝置認證的FC函數
在頂部功能表列,選擇華東2(上海)地區,然後在服務列表頁面,單擊建立服務。
在建立服務面板,填寫服務名稱,例如:IoT_Service,然後單擊確定。
在函數管理頁面,單擊建立函數。
在建立函數頁面,配置以下配置項,然後單擊建立。
在函數詳情頁面,將範例程式碼替換為以下代碼,單擊部署代碼。
認證函數將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)
步驟二:建立雲網關產品
建立雲網關產品(MQTT):配置如下圖所示,其中服務端認證私密金鑰為
server.key
和服務端認證為server.crt
,裝置認證FC服務和裝置認證FC函數,選擇為已添加的IoT_Service和three_part_auth。在雲網關列表,複製網關URL儲存。
步驟三:配置MQTT.fx接入
開啟MQTT.fx軟體,單擊功能表列中的Extras,選擇Edit Connection Profiles。
在Edit Connection Profiles頁面,完成以下參數的設定。
設定以下基本資料,其他參數使用預設值。
參數
說明
Profile Name
輸入您的自訂名稱。
Profile Type
MQTT伺服器串連,選擇MQTT Broker。
Broker Address
MQTT雲網關接入地區,即已建立雲網關產品的網關URL中網域名稱。
Broker Port
設定為自訂連接埠號碼,預設為
1883
。Client ID
(可選)用戶端ID,需自訂,長度不可超過64個字元。建議使用裝置的MAC地址或SN碼,方便您識別區分不同的用戶端。
單擊User Credentials,選中Use Username/Password複選框,設定User Name(例如:
threeParty_device_001
)和Password。說明User Name支援英文字母、數字、短劃線(-)、底線(_)、at(@)、英文句號(.)和英文冒號(:),長度限制為4~32個字元。User Name在產品維度下不可重複。
Password支援英文字母、數字、短劃線(-)、底線(_)、at(@)、英文句號(.)和英文冒號(:),長度限制為1~32個字元。
單擊SSL/TLS,選中Enable SSL/TLS,設定Protocol為TLSv1.2。
選中CA certificate file,然後選擇根憑證檔案
root-ca.crt
的路徑。
設定完成後,單擊右下角的OK。
單擊Connect。
右側亮綠燈,表示串連成功。通過FC認證函數返回的deviceName:
threeParty_device_001
會作為物聯平台裝置的DeviceName,在物聯網平台控制台執行個體下的裝置管理 > 裝置頁面,自動建立裝置threeParty_device_001
,裝置狀態顯示為線上。