MQTT
發行版本說明
訊息佇列遙測傳輸 (MQTT) 是用於進行 M2M (機器對機器) 通訊的開放式訊息通訊協定,可用訊息形式從普及裝置沿著高延遲或受限網路將遙測型資料傳輸至伺服器,或小型訊息代理程式。從感應器和傳動器,到行動電話、車輛上的嵌入式系統或筆記型電腦及全功能電腦都是普及裝置。
MQTT 適用於發佈/訂閱架構。MQTT 需要訊息代理程式與通訊裝置。通訊裝置可以稱為用戶端。代理程式與用戶端可以發佈及訂閱名為「主題」的參數。您可以使用 SSL 透過 MQTT 保護通訊的安全性。
MQTT 延伸功能提供連至小型電子裝置和感應器的連線,且可與 ThingWorx 進行通訊。
您可以根據貴組織的需求,針對 MQTT 使用任何標準代理程式。如需任何使用者控制設定,請參閱您要安裝之代理程式的產品文件集。
* 
在 Windows 作業系統中,代理程式會在安裝之後作為服務執行。
匯入 MQTT
您可在以下位置下載 MQTT 延伸功能: support.ptc.com「下載軟體」>「訂購或下載軟體更新」> ThingWorx Foundation >「<最新版本> 發行版本」>「ThingWorx MQTT 延伸功能」>「最新日期代碼」> MQTT--<版本>-Extension 下。請參閱 匯入延伸功能並將 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。
4. 按一下「新增」來新增內容。
5. 會出現以下畫面:
6. 輸入內容名稱、基礎類型及其他必填詳細資訊。
7. 儲存與內容相關的資訊。
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. 根據您的需求在欄位中輸入值,然後按一下 Mappings 設定中的「新增」
會出現以下畫面:
10. 在此處輸入您在步驟 6 新增的內容名稱,輸入主題名稱,然後選取「訂閱」與/或「發佈」。內容會以您在此輸入的主題名稱發佈或訂閱該名稱。
11. 按一下「新增」
12. Properties and Alerts 檢視中,按一下「設定值」
13. 下列畫面即會顯示。
在欄位中輸入內容值並儲存。
14. 請遵循您電腦所安裝之代理程式的特有執行指令,並檢查物件內容與代理程式之間的發佈與訂閱活動。