1023
windows
JAVA-SDK使用(CCP)__SDK使用參考_設備端接入手冊_阿裏雲物聯網套件-阿裏雲
本文以JAVA版SDK為例,演示如何讓設備通過CCP協議連接到阿裏雲IoT,並通過PUB/SUB實現一個簡單的M2M通信。
第一步
下載JAVA版SDK,導入JAVA工程,參考IotClientDemo.java,將SDK使用準備中獲得的信息配置初始化:
ConnectOpts opts = new ConnectOpts();
opts.setDeviceName("xxx");//設備名稱
opts.setDeviceSecret("xxx");//設備密鑰
opts.setProductAppKey("xxx");//產品證書key
opts.setProductAppSecret("xxx");//產品證書密鑰
opts.setAuthUrl("https://iot.channel.aliyun.com");
opts.setAliveSeconds((short) 80);//心跳時間,不能小於60秒
opts.setSignMethod("md5");// HmacMD5 HmacSh1 Md5
opts.setAutoReconnect(true);//是否自動重連
opts.setAutoReconnectDelay(5000);//重連間隔時間
備注:本demo使用 eclipse - IDE 創建
第二步
運行IotClientDemo.java:
//創建ccp客戶端
CcpClient ccpClient = new CcpClient(opts);
// 把當前實例增加為監聽對象,異步消息會回調到監聽對象
ccpClient.attachListener(new CcpMessageListener() {
@Override
public void onMessage(AbstractMessage message) {
LogUtil.print("收到消息:" + message);
//有異步消息到達會回調這裏
}
@Override
public void onConnect(ConnectACK message) {
LogUtil.print("連接消息:" + message);
//連接成功會回調這裏
}
@Override
public void onOffLine() {
LogUtil.print("會話斷開");
}
});
// 連接數據服務器
ccpClient.connect();
demo運行有3個階段:
(1)調用授權接口初始化設備,服務器返回公鑰以及數據通道服務器地址(這個地址是可變的)
(2)設備端生成自己的私鑰seedkey,並使用服務器公鑰加密發給服務器,成功後得到sessionId(sid)
(3)使用sid連接數據通道建立TCP連接(即第一步返回的服務器地址),進行數據傳輸
分別對應的日誌示例:
調用設備授權認證接口:
{"servers":"8.8.8.8:8080","pubkey":"-----BEGIN CERTIFICATE--此處省略...----END CERTIFICATE-----","deviceId":"xxxx"}
拿到pubkey後,客戶端需要使用pubkey傳輸自己的私鑰seedkey,發起確認授權:
iot/sid 獲取會話認證返回結果:
{"sid":"QMAOohO+7vVawxF4eHo2hktfmUa2yyWHeZlNWGcwWTANDstjcUquadlfQD1+oGLq"}
sid=32f3fb1a0a98df3eeaefdd3e07201254
服務器確認後,返回sid即sessionid,設備即可使用此sid tcp方式連接第一步的servers數據通信,通信過程中數據使用seedkey私鑰加密,而seedkey僅僅在上一步使用pubkey加密告知服務器,數據是安全可靠的。
from server: FixedHeader{remainLength=48, messageType=2, compress=true, qosLevel=1, hasData=true}
接收到消息:FixedHeader{remainLength=48, messageType=2, compress=true, qosLevel=1, hasData=true}
ConnectACK{FixedHeader{remainLength=48, messageType=2, compress=true, qosLevel=1, hasData=true}, sequenceID=0};
ConnectACK{statusCode=success, connectionToken='mP2qbVZYOA6GX4BKLHfSiQ==', suggestionIPs='',latestSDKPath:}
5秒後模擬一個sub、再5秒發送pub、再15秒發送unsub、5秒後再嚐試pub
5秒後 ,模擬發送一個數據sub請求,訂閱的隊列=xxxxx/test
消息發送成功:Subscribe[sequenceID:+0,topicFilters:[xxxxx/test]]
from server: FixedHeader{remainLength=16, messageType=28, compress=true, qosLevel=1, hasData=true}
接收到消息:FixedHeader{remainLength=16, messageType=28, compress=true, qosLevel=1, hasData=true}
SubAck[sequenceID:+0,codes:[0],msgs:[]]
5秒後 ,模擬發送一個數據pub請求,發布到隊列=xxxxx/test
消息發送成功:Publish[sequenceID:+0,topic:23301499/test,aliveSecond:0,payload.length:19],payload轉字符串:你好啊,約嗎?
from server: FixedHeader{remainLength=48, messageType=25, compress=true, qosLevel=1, hasData=true}
接收到消息:FixedHeader{remainLength=48, messageType=25, compress=true, qosLevel=1, hasData=true}
Publish[sequenceID:+4,topic:xxxxx/test,aliveSecond:0,payload.length:19],payload轉字符串:你好啊,約嗎?
15秒後 ,模擬發送一個unsub請求,取消隊列=xxxxx/test
消息發送成功:UnSubscribe[sequenceID:+0,topicFilters:[xxxxx/test]]
from server: FixedHeader{remainLength=16, messageType=30, compress=true, qosLevel=1, hasData=true}
接收到消息:FixedHeader{remainLength=16, messageType=30, compress=true, qosLevel=1, hasData=true}
UnSubAck[sequenceID:+0,codes:[0]]
5秒後 ,再發送一個pub消息,隊列=xxxxx/test
消息發送成功:Publish[sequenceID:+0,topic:xxxxx/test,
aliveSecond:0,payload.length:19],payload轉字符串:你好啊,約嗎?
備注:在第二步進行數據通信時需要創建Topic,請在控製台將設備添加授權。如果多個設備使用同一個Topic即可實現M2M通信。
最後更新:2016-07-20 11:33:41
上一篇:
JAVA-SDK使用(MQTT)__SDK使用參考_設備端接入手冊_阿裏雲物聯網套件-阿裏雲
下一篇:
設備認證__設備基於MQTT接入_設備端接入手冊_阿裏雲物聯網套件-阿裏雲
樣例代碼__Python SDK_SDK參考_E-MapReduce-阿裏雲
回滾磁盤__磁盤_用戶指南_雲服務器 ECS-阿裏雲
更新媒體工作流__媒體工作流接口_API使用手冊_視頻點播-阿裏雲
查詢消費端連接__消費管理相關接口_Open API_消息隊列 MQ-阿裏雲
雲虛擬主機安裝 ECShop__程序安裝_使用指南_雲虛機主機-阿裏雲
設置透明數據加密__安全管理_用戶指南_雲數據庫 RDS 版-阿裏雲
解讀物聯網圈重磅成人禮!阿裏雲Link物聯網平台出擊“智聯網”!
C__客戶端連接實例_快速入門_雲數據庫 Memcache 版-阿裏雲
使用說明-php__SDK使用參考_服務器端API_阿裏雲物聯網套件-阿裏雲
DescribeTable__API 概覽_API 參考_表格存儲-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲