MQTT
訊息佇列遙測傳輸 (MQTT) 是用於進行 M2M (機器對機器) 通訊的開放式訊息通訊協定,可用訊息形式從普及裝置沿著高延遲或受限網路將遙測型資料傳輸至伺服器,或小型訊息代理程式。從感應器和傳動器,到行動電話、車輛上的嵌入式系統或筆記型電腦及全功能電腦都是普及裝置。
MQTT 適用於發佈/訂閱架構。MQTT 需要訊息代理程式與通訊裝置。通訊裝置可以稱為用戶端。代理程式與用戶端可以發佈及訂閱名為「主題」的參數。您可以使用 SSL 透過 MQTT 保護通訊的安全性。
MQTT 延伸功能提供連至小型電子裝置和感應器的連線,且可與 ThingWorx 進行通訊。
您可以根據貴組織的需求,針對 MQTT 使用任何標準代理程式。如需任何使用者控制設定,請參閱您要安裝之代理程式的產品文件集。
* 
在 Windows 作業系統中,代理程式會在安裝之後作為服務執行。
匯入 MQTT
* 
ThingWorx 延伸功能支援模型最近已變更。大多數延伸功能都無法再從下載頁取得。如需其他資訊,請參閱此文章
請參閱匯入延伸功能,並將 MQTT_Extension.zip 匯入至 ThingWorx。安裝延伸功能時,下列項目會顯示在「物範本」清單中:
MQTTConnection
允許供 MQTTSubscriber 物件使用的共用連線。
MQTTSubscriber
允許在 MQTT 伺服器上訂閱一或多個主題。在「組態」>「內容」下將內容新增至 MQTT 主題對應區塊。
編輯 MQTTSubscriber 物件時,重新啟動相關聯的 MQTTConnection 物件,以便重新整理。
MQTT
可將上列所有組態放置在單一物件中。
配置 MQTT
接下來這部份內容描述當您在 ThingWorx 中安裝延伸功能之後,並想要與代理程式建立連線的情況下,如何在 MQTT 中配置參數。
1. 執行您在電腦中安裝的代理程式。
2. 在 ThingWorx 中,建立一個新「物件」,選取 MQTT 作為「物範本」,然後按一下「儲存」
3. 按一下「內容與警示」檢視,下列畫面即會顯示:
在上圖中,1 和 2 圖說文字的指示說明如下:
圖說文字
描述
1
綠色圖示表示您所建立的物件已連線至代理程式。當物件中斷連線時,它會顯示為紅色。
2
當在物件與代理程式之間建立連線時,「值」欄位中的 isConnected 內容會設定為 TRUE。當中斷連線時,「值」欄位會設定為 FALSE。
當 ThingWorx HA 環境中的單一節點與代理程式間存在連線問題時,此內容會設定為 false。但是,即使此內容為 false,其他節點也會繼續發佈訊息。
4. 按一下「新增」來新增內容。
5. 會出現以下畫面:
6. 輸入內容名稱、基礎類型及其他必填詳細資訊。
7. 儲存與內容相關的資訊。
* 
若要成功執行資料變更事件,請確定系統使用者擁有下列權限。
集合層級的 Service ExecuteEvent Subscribe 權限。例如,在「物件」、「物範本」或「物形式」層級。
8. 按一下「組態」檢視,下列畫面即會顯示:
下表描述您可在「組態」檢視中找到的不同參數。
JDBC Settings
描述
clientIdFormat
向 MQTT 代理程式註冊之用戶端的名稱。
* 
對於一個 MQTT 代理程式而言,它應該具唯一性。
權杖 {s} 用於 ThingWorx 平台的伺服器名稱。它會取用「聯合子系統」組態中所提及之伺服器名稱的值。
權杖 {t} 用於目前物件名稱。如果您想要將不同的平台連線至一個代理程式,並使物件具有相同名稱,建議在「聯合子系統」中指定伺服器名稱
useSSL
如果您的代理程式支援安全連線,請選取此設定。
serverName
MQTT 代理程式執行所在的主機名稱。
* 
如果代理程式在與 ThingWorx Platform 相同的電腦上執行,請將此欄位保留空白。
serverPort
MQTT 代理程式的埠。預設值為 1883。
userId
連線至代理程式的使用者名稱。
Password
userId 的密碼。
Timeout
等待發佈請求成功的時間 (以毫秒為單位)。預設值為 5000 mS。
ConnectTimeout
等待在 ThingWorx Platform 與 MQTT 代理程式之間建立連線的時間 (以毫秒為單位)。
retryInterval
與 MQTT 代理程式連線中斷時重試連線的間隔時間 (以毫秒為單位)。
只有在已在某個時間建立連線,而稍後連線又中斷的情況下,重試機制才有效。
retryAttempts
進行重試連線嘗試的次數。
例如,如果已建立的連線因網路干擾或其他任何問題而中斷,則嘗試重設連線的次數由在此欄位中輸入的值提供。每次重試嘗試都由上述的 retryInterval 分隔。
pingInterval
定期檢查 ThingWorx Platform 與 MQTT 代理程式之間連線狀況的時間 (以毫秒為單位)。
預設值為 45 秒。每隔 45 秒,都傳送一個 ping 訊息到 MQTT 代理程式,檢查是否有回應。來自代理程式的回應表示該連線有效。
connectionIdleTimeout
連線的閒置時間 (以毫秒為單位)。
如果連線在此設定時間之外閒置,則表示在通道中沒有訊息通訊,且物件會標記為已中斷連線。
當未發佈或未訂閱內容時,pingInterval 會繼續更新上次使用中時間,使物件不會中斷連線。
qos
此值會設定代理程式與其用戶端之間通訊的優先順序層級。
AutoMapping 組態表包含的設定可自動對應發佈或訂閱的內容。啟用自動對應時,您不需要指定 Mappings 的表格。您在物件中建立的任何內容都會自動對應至主題。主題名稱由下述 format 決定:
AutoMapping
描述
format
與內容對應之主題名稱的格式。
{s} 權杖用於伺服器名稱,{t} 用於物件名稱,{p} 用於內容名稱。
enabled
您可以選取自動對應功能。
9. 欲手動將物件內容對應至 MQTT 主題,請按一下 Mappings 部份下的「新增」
會出現以下畫面:
下表列出了各對應可用的組態選項:
Subscribe
訂閱內容以從 MQTT 代理程式接收指定主題的已發佈變更。
Publish
使用指定的主題,將內容值變更發佈至 MQTT 代理程式。
Retain
保留 MQTT 代理程式中最後發佈的內容值。當新裝置或用戶端訂閱包含保留訊息的主題時,代理程式會自動傳送包含最後發佈值的訊息。當用戶端需要初始值時,保留訊息值可能很有用。會傳送保留值,而不是設定初始預留位置值並等待下一個訊息。
「名稱」
要將 MQTT 代理程式對應至之物內容的名稱。
「主題」
要在 MQTT 代理程式上發佈或訂閱之主題的名稱。
10. 在此處輸入您在步驟 6 新增的內容名稱,輸入主題名稱,然後選擇是要「訂閱」「發佈」還是「保留」。內容會以您輸入的主題名稱發佈或訂閱該名稱。
11. 按一下「新增」
12. Properties and Alerts 檢視中,按一下「設定值」
13. 下列畫面即會顯示。
在欄位中輸入內容值並儲存。
14. 請遵循您電腦所安裝之代理程式的特有執行指令,並檢查物件內容與代理程式之間的發佈與訂閱活動。
這是否有幫助?