入門
MQTT基礎
MQTT是一種輕量級的發布-訂閱消息傳遞協議,可能使其最適合於各種IoT設備。您可以在此處找到有關MQTT的更多信息。
ThingsBoard服務器節點充當MQTT代理,該代理支持QoS級別0(最多一次)和1(至少一次)以及一組預定義的主題。
客戶端庫設置
您可以在網上找到大量的MQTT客戶端庫。本文中的示例將基於Mosquitto和MQTT.js。為了設置這些工具之一,您可以使用我們的《Hello World》指南中的說明。
MQTT連接
我們將在本文中使用訪問令牌設備憑證,這些憑證稍后將稱為$ ACCESS_TOKEN。應用程序需要使用包含$ ACCESS_TOKEN的用戶名發送MQTT CONNECT消息。連接序列期間可能的返回碼及其原因:
0x00已連接 -已成功連接到ThingsBoard MQTT服務器。
0x04連接被拒絕,用戶名或密碼錯誤 -用戶名為空。
0x05連接被拒絕,未經授權 -用戶名包含無效的$ ACCESS_TOKEN。
鍵值格式
默認情況下,ThingsBoard支持JSON中的鍵值內容。鍵始終是一個字符串,而值可以是字符串,布爾值,雙精度或長整數。也可以使用自定義二進制格式或某些序列化框架。有關更多詳細信息,請參見協議自定義。例如:
{"stringKey":"value1", "booleanKey":true, "doubleKey":42.0, "longKey":73}
遙測上傳API
為了將遙測數據發布到ThingsBoard服務器節點,請將PUBLISH消息發送到以下主題:
v1/devices/me/telemetry
支持的最簡單的數據格式是:
{"key1":"value1", "key2":"value2"}
要么
[{"key1":"value1"}, {"key2":"value2"}]
請注意,在這種情況下,服務器端時間戳將分配給上傳的數據!
如果您的設備能夠獲得客戶端時間戳,則可以使用以下格式:
{"ts":1451649600512, "values":{"key1":"value1", "key2":"value2"}}
在上面的示例中,我們假設“ 1451649600512”是具有毫秒精度的Unix時間戳。例如,值'1451649600512'對應於'星期五,2016年1月1日12:00:00.512 GMT'。
屬性API
ThingsBoard屬性API使設備能夠
- 將客戶端設備屬性上載到服務器。
- 從服務器請求客戶端和共享設備屬性。
- 從服務器訂閱共享的設備屬性。
- 將屬性更新發布到服務器
為了將客戶端設備屬性發布到ThingsBoard服務器節點,請將PUBLISH消息發送到以下主題:
v1/devices/me/attributes
從服務器請求屬性值
為了向ThingsBoard服務器節點請求客戶端或共享設備屬性,請將PUBLISH消息發送到以下主題:
v1/devices/me/attributes/request/$request_id
其中$ request_id是您的整數請求標識符。在發送帶有請求的PUBLISH消息之前,客戶端需要訂閱
v1/devices/me/attributes/response/+
從服務器訂閱屬性更新
為了訂閱共享設備屬性更改,請發送SUBSCRIBE消息到以下主題:
v1/devices/me/attributes
當服務器端組件之一(例如REST API或規則鏈)更改了共享屬性時,客戶端將收到以下更新:
{"key1":"value1"}
RPC API
服務器端RPC
為了從服務器訂閱RPC命令,請將SUBSCRIBE消息發送到以下主題:
v1/devices/me/rpc/request/+
訂閱后,客戶端將以發布消息的形式接收到相應主題的各個命令:
v1/devices/me/rpc/request/$request_id
其中$ request_id是整數請求標識符。
客戶應發布對以下主題的響應:
v1/devices/me/rpc/response/$request_id
客戶端RPC
為了將RPC命令發送到服務器,請將PUBLISH消息發送到以下主題:
v1/devices/me/rpc/request/$request_id
其中$ request_id是整數請求標識符。來自服務器的響應將發布到以下主題:
v1/devices/me/rpc/response/$request_id
參考:https://thingsboard.io/docs/reference/mqtt-api/
交流:https://www.iotschool.com/topics/165
歡迎大家加入thingsboard 二次開發討論群:121202538