MQTT協(xié)議云網(wǎng)關(guān)設(shè)備使用MQTT.fx接入
本文以Windows系統(tǒng)下MQTT.fx為例,介紹如何將MQTT協(xié)議云網(wǎng)關(guān)設(shè)備模擬接入物聯(lián)網(wǎng)平臺,并上報(bào)數(shù)據(jù)。
前提條件
已完成以下操作:
購買企業(yè)版實(shí)例:本示例購買華東2(上海)地域的尊享型實(shí)例。
下載并安裝MQTT.fx軟件。MQTT.fx軟件安裝和使用說明,請參見MQTT.fx。
本文操作以mqttfx-5.2.0-windows-x64版本為例演示具體操作。由于第三方軟件不定期更新,建議您以實(shí)際頁面為準(zhǔn)。
自定義證書。
本文示例需自定義證書包含:根證書
root-ca.crt
、服務(wù)端證書私鑰server.key
和服務(wù)端證書server.crt
。您可以使用OpenSSL工具生成自定義證書,制作方法,請參見生成自定義證書。
背景信息
MQTT.fx是一款基于Eclipse Paho使用Java語言編寫的MQTT客戶端,支持Windows、Mac和Linux操作系統(tǒng),可用于驗(yàn)證設(shè)備是否可與物聯(lián)網(wǎng)平臺正常連接,并通過Topic通信。
MQTT協(xié)議云網(wǎng)關(guān)提供一方認(rèn)證和三方認(rèn)證兩種認(rèn)證方式,設(shè)備可選擇任一認(rèn)證方式,使用自定義證書、服務(wù)端認(rèn)證和自定義Topic通信等能力,實(shí)現(xiàn)與物聯(lián)網(wǎng)平臺連接并進(jìn)行通信。
MQTT協(xié)議云網(wǎng)關(guān)設(shè)備認(rèn)證和通信說明,請參見MQTT協(xié)議云網(wǎng)關(guān)概述。
設(shè)備使用MQTT.fx接入(一方認(rèn)證)
步驟一:創(chuàng)建云網(wǎng)關(guān)產(chǎn)品和設(shè)備
創(chuàng)建云網(wǎng)關(guān)產(chǎn)品(MQTT):配置如下圖所示,服務(wù)端證書私鑰為
server.key
和服務(wù)端證書為server.crt
。在云網(wǎng)關(guān)列表,復(fù)制網(wǎng)關(guān)URL保存。
批量添加設(shè)備:本示例添加一個設(shè)備,MQTT Username為
device_01
,MQTT Password為hello123
。
步驟二:配置MQTT.fx接入
打開MQTT.fx軟件,單擊菜單欄中的Extras,選擇Edit Connection Profiles。
在Edit Connection Profiles頁面,完成以下參數(shù)的設(shè)置。
設(shè)置以下基本信息,其他參數(shù)使用默認(rèn)值。
參數(shù)
說明
Profile Name
輸入您的自定義名稱。
Profile Type
MQTT服務(wù)器連接,選擇MQTT Broker。
Broker Address
MQTT云網(wǎng)關(guān)接入地域,即已創(chuàng)建云網(wǎng)關(guān)產(chǎn)品的網(wǎng)關(guān)URL中域名。
Broker Port
設(shè)置為自定義端口號,默認(rèn)為
1883
。Client ID
(可選)客戶端ID,需自定義,長度不可超過64個字符。建議使用設(shè)備的MAC地址或SN碼,方便您識別區(qū)分不同的客戶端。
單擊User Credentials,選中Use Username/Password復(fù)選框,設(shè)置User Name和Password。
User Name和Password分別對應(yīng)已添加云網(wǎng)關(guān)設(shè)備的MQTT Username和MQTT Password。
單擊SSL/TLS,選中Enable SSL/TLS,設(shè)置Protocol為TLSv1.2。
選中CA certificate file,然后選擇根證書文件
root-ca.crt
的路徑。
設(shè)置完成后,單擊右下角的OK。
單擊Connect。
右側(cè)亮綠燈,表示連接成功。在物聯(lián)網(wǎng)平臺控制臺實(shí)例下的設(shè)備管理 > 設(shè)備頁面,設(shè)備
device_01
狀態(tài)顯示為在線。
設(shè)備使用MQTT.fx接入(三方認(rèn)證)
步驟一:創(chuàng)建設(shè)備認(rèn)證的FC函數(shù)
在頂部菜單欄,選擇華東2(上海)地域,然后在服務(wù)列表頁面,單擊創(chuàng)建服務(wù)。
在創(chuàng)建服務(wù)面板,填寫服務(wù)名稱,例如:IoT_Service,然后單擊確定。
在函數(shù)管理頁面,單擊創(chuàng)建函數(shù)。
在創(chuàng)建函數(shù)頁面,配置以下配置項(xiàng),然后單擊創(chuàng)建。
在函數(shù)詳情頁面,將示例代碼替換為以下代碼,單擊部署代碼。
認(rèn)證函數(shù)將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): # 按照業(yè)務(wù)需求驗(yàn)證UserName和Password的合法性 self.deviceName = request.username return json.dumps(self.__dict__) def handler(event, context): request = Request(event) return Response().handler(request)
步驟二:創(chuàng)建云網(wǎng)關(guān)產(chǎn)品
創(chuàng)建云網(wǎng)關(guān)產(chǎn)品(MQTT):配置如下圖所示,其中服務(wù)端證書私鑰為
server.key
和服務(wù)端證書為server.crt
,設(shè)備認(rèn)證FC服務(wù)和設(shè)備認(rèn)證FC函數(shù),選擇為已添加的IoT_Service和three_part_auth。在云網(wǎng)關(guān)列表,復(fù)制網(wǎng)關(guān)URL保存。
步驟三:配置MQTT.fx接入
打開MQTT.fx軟件,單擊菜單欄中的Extras,選擇Edit Connection Profiles。
在Edit Connection Profiles頁面,完成以下參數(shù)的設(shè)置。
設(shè)置以下基本信息,其他參數(shù)使用默認(rèn)值。
參數(shù)
說明
Profile Name
輸入您的自定義名稱。
Profile Type
MQTT服務(wù)器連接,選擇MQTT Broker。
Broker Address
MQTT云網(wǎng)關(guān)接入地域,即已創(chuàng)建云網(wǎng)關(guān)產(chǎn)品的網(wǎng)關(guān)URL中域名。
Broker Port
設(shè)置為自定義端口號,默認(rèn)為
1883
。Client ID
(可選)客戶端ID,需自定義,長度不可超過64個字符。建議使用設(shè)備的MAC地址或SN碼,方便您識別區(qū)分不同的客戶端。
單擊User Credentials,選中Use Username/Password復(fù)選框,設(shè)置User Name(例如:
threeParty_device_001
)和Password。說明User Name支持英文字母、數(shù)字、短劃線(-)、下劃線(_)、at(@)、英文句號(.)和英文冒號(:),長度限制為4~32個字符。User Name在產(chǎn)品維度下不可重復(fù)。
Password支持英文字母、數(shù)字、短劃線(-)、下劃線(_)、at(@)、英文句號(.)和英文冒號(:),長度限制為1~32個字符。
單擊SSL/TLS,選中Enable SSL/TLS,設(shè)置Protocol為TLSv1.2。
選中CA certificate file,然后選擇根證書文件
root-ca.crt
的路徑。
設(shè)置完成后,單擊右下角的OK。
單擊Connect。
右側(cè)亮綠燈,表示連接成功。通過FC認(rèn)證函數(shù)返回的deviceName:
threeParty_device_001
會作為物聯(lián)平臺設(shè)備的DeviceName,在物聯(lián)網(wǎng)平臺控制臺實(shí)例下的設(shè)備管理 > 設(shè)備頁面,自動創(chuàng)建設(shè)備threeParty_device_001
,設(shè)備狀態(tài)顯示為在線。
設(shè)備使用自定義Topic上報(bào)數(shù)據(jù)
在文本編輯頁面,輸入要發(fā)送的消息內(nèi)容,然后單擊Publish。
登錄物聯(lián)網(wǎng)平臺控制臺,在對應(yīng)實(shí)例下的監(jiān)控運(yùn)維 > 日志服務(wù)頁面,查看設(shè)備到云消息日志消息。具體操作,請參見查詢云端運(yùn)行日志。