一、什么是CoAP
CoAP(Constrained Application Protocol)也叫做“受限应用协议”是一种在物联网世界的类web协议,它的详细规范定义在 RFC 7252。参考如下两篇博客学习更多关于CoAP信息。
CoAP简介
CoAP协议使用
二、在安卓中使用CoAP
1、Californium(Cf)
Californium是一个强大的CoAP框架,是与物联网设备通信的后端服务。它为所有支持CoAP特性的REST类型web服务提供了一个方便的API。内置于单个可自我执行的jar中,可以在任何Java8+环境中运行。
github地址作者在Maven Central发布了Californium的里程碑和版本,Android可以直接在build.gradle(app)
引入
2、Andlink设备接入实现要求及协议规范
Andlink是中国移动提出的一套设备接入和管理的协议,实现方式复杂,在此不做过多描述,该协议可进行设备与网关之间通信,从而实现设备绑定和管控。Andlink采用CoAP或MQTT作为通信协议。
三、具体实现思路
网关绑定逻辑
1、APP进入网关绑定页面,确认wifi是否开启(如果未开启,提示用户开启wifi并绑定到与网关相同wifi下
2、进入网关绑定页后,APP在局域网中每隔1秒发送/qlink/searchdevice的广播,同时调用全屋平台startBind接口
coap://局域网广播ip地址:5683/qlink/searchdevice
{
"searchKey": "ANDLINK-APP" //广播发现的key,约定为该值
"andlinkVersion": "V3" //Andlink协议版本号
}
网关收到广播后反馈
{
"searchAck": "ANDLINK-DEVICE",
"andlinkVersion": "V3",
"deviceType": "31578"
}
3、收到网关反馈,确认产品id与网关一致后,向网关发送配网信息,注意这里"CGW"地址随开发测试环境不同改变
coap://网关ip地址:5683/qlink/netinfo
{
"CGW": {
"gwAddress": "cgw.komect.com:5683", //andlink的云网关地址,用于设备进行注册
"user_key": "ssm2H6TelBooyrSMfNAAVcNeAqlJOV", //对应每个用户的手机号
"gwAddress2": "https://cgw.komect.com:443" //andlink的云网关地址,用于设备进行注册
}
}
网关收到配网信息,配网成功后反馈
{
"respCode": 1,
"respCont": "XXXXXXXXX"
}
4、网关入网成功后,会发送/qlink/success的广播消息
coap://局域网广播ip地址:5683/qlink/success
{
"deviceMac": "885FE8B504FE",
"deviceType": "31578"
}
APP收到广播后,反馈:
{
"result": 1
}
5、网关绑定成功后,会发送/qlink/regist的广播消息,包含设备ID
coap://局域网广播ip地址:5683/qlink/regist
{
"respCode": 1,
"respCont": "SUCCESS",
"deviceId": "CMCC-31578-885FE8B504FE",
"deviceType": "31578"
}
APP收到广播后,反馈:
{
"result": 1
}
6、后台给APP推送一条网关绑定成功的消息,接收到该消息后,跳出绑定成功界面
网友评论