HTTP/2轉儲功能適用于生活物聯網平臺與企業服務器之間的消息流轉。通過集成和使用HTTP/2 SDK,即可實現身份認證、消息接收的能力。我們推薦使用HTTP/2的方式推送設備數據(如設備狀態數據、設備控制記錄等),用戶信息數據等。
前提條件
說明 當開啟數據同步后,集成HTTP/2客戶端SDK來訂閱數據。如果通過控制臺關閉數據同步再開啟時,客戶端SDK需要重新進行連接流程,否則無法正常接收數據。如果切換不同的HTTP/2客戶端,需要把之前的客戶端斷開,再連接新的客戶端。否則新客戶端無法正常接收數據。
HTTP/2 SDK使用
消息格式
- 物的屬性變更消息
topic:
/${productKey}/${deviceName}/thing/event/property/post
消息字段說明如下。
參數 子參數 子參數 類型 含義 deviceType String 設備所屬品類 gmtCreate Long 數據流轉消息產生時間,自1970-1-1起流逝的毫秒值 iotId String 設備的唯一ID productKey String 設備所屬產品的唯一標識符 deviceName String 設備名稱 items JSON 變更的狀態列表 attribute String 發生變更的屬性,具體取值由具體情況確定 value 具體數據類型由具體情況確定 變更值 time Long 設備屬性發生變化的時間,自1970-1-1起流逝的毫秒值 消息示例如下。
{ "deviceType": "SmartDoor", "iotId": "Xzf15db9xxxxxxxxWR001046b400", "productKey": "a17xxxxTYNA", "gmtCreate": 153xxxx145304, "deviceName": "Xzf15xxxxucTHBgUo6WR", "items": { "WIFI_Rx_Rate": { "value": 74274, "time": 1534299145344 } } }
- 物的事件變更消息
topic:
/${productKey}/${deviceName}/thing/event/{tsl.event.identifier}/post
消息字段說明如下。
參數 子參數 類型 含義 deviceType String 設備所屬品類 iotId String 設備的唯一ID productKey String 設備所屬產品的唯一標識符 deviceName String 設備名稱 identifier String 事件標識符,對應事件的identifier name String 事件名稱 type String 事件類型 time Long 設備上報value對應的時間,自1970-1-1起流逝的毫秒值 value JSON 變更的事件屬性列表:key-value鍵值對 key String 屬性key value 具體數據類型由具體情況確定 屬性取值 消息示例如下。
{ "deviceType": "SmartDoor", "identifier": "Doorxxxxication", "iotId": "Xzf15db9xxxxxxxxx01046b400", "name": "開門通知", "time": 1534319108982, "type": "info", "productKey": "a17xxxxTYNA", "deviceName": "Xzf15xxxxucTHBgUo6WR", "value": { "KeyID": "x8xxxxxkDY", "LockType": 3 } }
- 設備服務返回消息
topic:
/${productKey}/${deviceName}/thing/downlink/reply/message
消息字段說明如下。
參數 類型 含義 gmtCreate Long 數據流轉消息產生時間,自1970-1-1起流逝的毫秒值 iotId String 設備的唯一ID productKey String 設備所屬產品的唯一標識符 deviceName String 設備名稱 requestId String 阿里云產生和設備通信的信息ID code Integer 調用的結果信息 message String 結果信息說明 topic String 服務調用下行時使用的topic data Object 設備返回的結果,非透傳之間返回設備結果,透傳則需要經過腳本轉換 消息示例如下。
{ "gmtCreate": 151xxxx39881, "iotId": "4z819VQHxxxxxxxxxxxx7ee200", "productKey": "p1gxxxxBd", "deviceName": "xxxxxxxxxx", "requestId": "1234", "code": 200, "message": "success", "topic": "/sys/p1gsv0teUBd/xxxxxxxxxx/thing/service/property/set", "data": {} }
- 物的狀態變更消息
為了提高消息有效性,設備上下線過于頻繁時,會對消息進行篩檢。
topic:
/${productKey}/${deviceName}/mqtt/status
消息字段說明如下。
參數 子參數 類型 含義 deviceType String 設備所屬品類 gmtCreate Long 數據流轉消息產生時間,自1970-1-1起流逝的毫秒值 iotId String 設備的唯一ID action String 設備狀態變更動作: - online:上線動作
- offline:下線動作
productKey String 設備所屬產品的唯一標識符 deviceName String 設備名稱 status JSON 狀態信息,元素包括:value-狀態值,time-發生變化的時間 time Long 設備上下線狀態發生變化的時間,自1970-1-1起流逝的毫秒值 value String 設備上下線狀態 value狀態值定義:
- 1:在線
- 0:離線
消息示例如下。
{ "deviceType": "SmartDoor", "iotId": "Xzf15dxxxxxxxxxxxxxxxx01046b400", "action": "online", "productKey": "a17xxxxxxTYNA", "gmtCreate": 153xxxx1368, "deviceName": "Xzf1xxxxxxxxxxxxgUo6WR", "status": { "time": 1534319611368, "value": "1" } }
- 用戶綁定變更消息
用戶綁定/解綁設備產生的回流消息,用于同步用戶與設備的綁定、解綁。
topic:
/${productKey}/${deviceName}/thing/awss/enrollee/user
消息字段說明如下。
參數 子參數 類型 含義 bind bool true-綁定;false-解綁 productKey String 設備所屬產品的唯一標識符 deviceName String 設備名稱 iotId String 設備的唯一ID messageCreateTime JSON 消息創建時間 identityInfos list 用戶信息列表 identityId String 用戶身份ID scopeId String 隔離ID tenantId String 租戶ID owned Integer 擁有標記 - 0:分享者
- 1:擁有者
params Map 擴展參數(暫未使用) { "bind":true, "productKey": "123xxxx569", "deviceName": "deviceNamexxxx34", "iotId": "", "messageCreateTime": 151xxxx9881, "identityInfos":[ { "identityId":"50xxxxxxxxxxxx62060259", "scopeId":"", "tenantId":"1D89B5xxxxxxxxxxxxxxxx861678FF", "owned":1 } ], "params":{ } }