在某些場景,設備不是直接接入平臺,而是通過第三方MQTT服務,如:emqtt
. 消息編解碼與MQTT服務一樣,從消息協議中使用DefaultTransport.MQTT
來獲取消息編解碼器. 本文使用mqtt.fx爲設備端,通過emqtt接入平臺。
創建MQTT客戶端網絡組件
- 選擇
網絡組件
-->組件管理
--> 點擊新增組件
按鈕。 - 在創建完成的模塊上點擊
啓動
按鈕。
創建MQTT客戶端設備網關
- 選擇
網絡組件
-->設備網關
--> 點擊新建
按鈕。
注意
和MQTT服務設備網關不同的是,客戶端必須指定消息協議,因爲無法通過消息識別出對應的設備標識. 在消息解碼時也無法通過上下文(
MessageDecodeContext
)獲取到設備操作接口(DeviceOperator
). 此處使用演示協議v1
.
此處使用的Topics:/another-message,/device_online_status,/fire_alarm
。 2. 在操作列點擊啓動
按鈕啓動網關。
安裝並啓動EMQ
可直接前往官網下載 emqttd。
本文使用docker搭建。
拉取鏡像
docker pull registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6
運行鏡像
docker run --name emq -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 -d registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6
訪問EMQ Dashboard
在瀏覽器中輸入 http:192.168.99.100: 18083,默認賬號密碼爲用戶名:admin 密碼:public。
使用MQTT.fx連接EMQ
設置連接參數。
配置參數請參考使用MQTT.fx接入。
此處參數設置:
連接EMQ
單擊 Mqtt.fx客戶端 中Connect
進行連接。
連接成功後EMQ Dashboard頁面上將會顯示這條連接記錄。
模擬設備上下線
使用MQTT.fx模擬設備上下線。
-
單擊
Publish
。 -
輸入設備上下線的topic和事件內容,點擊單擊Publish按鈕,將消息推送到EMQ, EMQ將消息轉發到平臺。
此處使用的topic: /device-online-status
此處使用的事件內容:
{
"deviceId":"MQTT_FX_Client",
"status":"1"
}
消息發送成功後:
離線操作及效果展示:
模擬設備消息訂閱
-
在MQTT.fx上點擊
Subscribe
,輸入topic:test
,點擊Subscribe按鈕訂閱。 -
在平臺中選擇
網絡組件
-->組件管理
,找到MQTT客戶端組件,點擊調試
按鈕。 -
在調試頁面,選擇
推送消息
,編輯內容後,點擊發送
按鈕,MQTT.fx將會收到消息。