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-阿里云