1028
微信
JAVA版demo__設備基於CCP接入_設備端接入手冊_阿裏雲物聯網套件-阿裏雲
本文以JAVA版為例,演示如何讓設備連接到阿裏雲IoT,並通過PUB/SUB實現一個簡單的M2M通信。
第一步
登錄IoT控製台獲得相關配置信息。
- 創建產品得到productKey和productSecret;
- 在產品下添加設備得到deviceID和deviceSecret;
- 授權設備操作某個Topic
具體請參考控製台使用手冊文檔中的創建產品
、添加設備
以及設備授權
部分。
備注:本文以JAVA版為例 演示如何使設備連接阿裏雲IoT並實現消息的收發。
第二步
下載JAVA版demo,參考IotClientDemo.java,將第一步獲得的信息配置初始化:
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);//心跳時間
opts.setSignMethod("md5");// HmacMD5 HmacSh1 Md5
opts.setAutoReconnect(true);//是否自動重連
opts.setAutoReconnectDelay(5000);//重連間隔時間
備注:本demo使用 eclipse - IDE 運行,可以通過 mvn eclipse:eclipse 命令初始化 然後導入工程。
第三步
運行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-08-08 11:13:40
上一篇:
附錄__設備基於CCP接入_設備端接入手冊_阿裏雲物聯網套件-阿裏雲
下一篇:
接入詳細說明__設備端接入手冊_阿裏雲物聯網套件-阿裏雲
按量計費__計費說明_日誌服務-阿裏雲
C-SDK使用(其它)__SDK使用參考_設備端接入手冊_阿裏雲物聯網套件-阿裏雲
控製台更新記錄__更新記錄_產品簡介_E-MapReduce-阿裏雲
獲取解析負載均衡的子域名列表__解析負載均衡接口_API文檔_雲解析-阿裏雲
如何舉報違法網站?__規則FAQ_常見問題_阿裏雲規則-阿裏雲
UploadPartCopy__關於MultipartUpload的操作_API 參考_對象存儲 OSS-阿裏雲
在線幫助__使用手冊_性能測試-阿裏雲
無法連接RDS for PostgreSQL數據庫的解決方法__PostgreSQL使用_技術運維問題_雲數據庫 RDS 版-阿裏雲
推送通知給android__API列表_OpenAPI 1.0_移動推送-阿裏雲
手動建站(Windows環境)__建站教程_雲服務器 ECS-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲