全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
阿里云物联网套件

设备认证和数据上传

更新时间:2017-09-18 19:12:24

1、使用SDK接入

我们提供了C版本SDK示例,可以参考DEMO

2、使用CoAP协议自主接入

使用CoAP自主接入流程:

  • CoAP服务器地址endpoint = ${productKey}.iot-as-coap.cn-shanghai.aliyuncs.com:5684, 其中productKey请替换为您申请的产品Key。
  • 目前只支持DTLS,必须走安全通道,根证书
  • 设备在发送数据前,首先发起认证,获取设备的token。
  • 每次上报数据时,都需要携带token信息,如果token失效需要重新认证获取token,token可以缓存本地,有效期48小时。

2.1 设备认证(${endpoint}/auth)

  1. 此接口用于传输数据前获取token,只需要请求一次:
  2. POST /auth
  3. Host: ${productKey}.iot-as-coap.cn-shanghai.aliyuncs.com
  4. Port: 5684
  5. Accept: application/json or application/cbor
  6. Content-Format: application/json or application/cbor
  7. payload: {"productKey":"ZG1EvTEa7NN","deviceName":"NlwaSPXsCpTQuh8FxBGH","clientId":"mylight1000002","sign":"bccb3d2618afe74b3eab12b94042f87b"}

参数说明:

  1. * Method: POST,只支持POST方法
  2. * URL: /authurl地址
  3. * Accept:接收的数据编码方式,目前支持 application/json application/cbor
  4. * Content-Format 上行数据的编码格式,目前支持 application/json application/cbor
payload内容:

JSON数据格式,具体属性值如下:

字段名称 是否必选 说明
productKey 必选 productKey,从iot套件控制台获取
deviceName 必选 deviceName,从iot套件控制台获取
sign 必选 签名,hmacmd5(deviceSecret,content), content = 将所有提交给服务器的参数(version,sign,resources,signmethod除外), 按照字母顺序排序, 然后将参数值依次拼接,无拼接符号
signmethod 可选 算法类型,hmacmd5或hmacsha1
clientId 必选 客户端自表示Id,64字符内
timestamp 可选 时间戳,目前时间戳并不做窗口校验,只起到加盐的作用
返回:
  1. response:{"token":"eyJ0b2tlbiI6IjBkNGUyNjkyZTNjZDQxOGU5MTA4Njg4ZDdhNWI3MjUxIiwiZXhwIjoxNDk4OTg1MTk1fQ.DeQLSwVX8iBjdazjzNHG5zcRECWcL49UoQfq1lXrJvI"}
返回码(CoAP返回码)说明:
Code 描述 Payload 备注
2.05 Content 认证通过:Token对象 正确请求
4.00 Bad Request 返回错误信息 请求发送的Payload非法
4.04 Not Found 404 Not found 请求的路径不存在
4.05 Method Not Allowed 支持的方法 请求方法不是指定值
4.06 Not Acceptable 要求的Accept Accept不是指定的类型
4.15 Unsupported Content-Format 支持的content信息 请求的content不是指定类型
5.00 Internal Server Error 返回错误信息 auth服务器超时或错误

2.2 上行数据(${endpoint}/topic/${topic})

发送数据到某个topic,${topic}可以在控制台产品管理->消息通信进行设置,比如对于topic /productkey/${deviceName}/pub, 如果当前设备名称=device,那么您可以调用 ${productKey}.iot-as-coap.cn-shanghai.aliyuncs.com:5684/topic/productkey/device/pub 这个地址来上报数据,目前只支持pub权限的topic用于数据上报,示例:

  1. POST /topic/${topic}
  2. Host: ${productKey}.iot-as-coap.cn-shanghai.aliyuncs.com
  3. Port: 5683
  4. Accept: application/json or application/cbor
  5. Content-Format: application/json or application/cbor
  6. payload: ${your_data}
  7. CustomOptions: number:61(标识token)

参数说明

  1. * Method: POST,支持POST方法
  2. * URL: /topic/${topic},${topic}替换为当前设备对应的topic
  3. * Accept:接收的数据编码方式,目前只支持 application/json application/cbor
  4. * Content-Format 上行数据的编码格式,服务端不做校验
  5. * CustomOptions 设备认证(Auth)获取到token值,Option Number 使用61
payload内容:
  1. 发往${topic}的内容,由业务方自定义,套件不会解析,只进行透传
返回值:
  1. response: byte[]
  2. 由业务客户端按照和业务服务端约定的数据格式进行解析。由于payload是二进制数据,限定 content-formate 使用 application/octet-stream
返回码(CoAP返回码)说明:
Code 描述 Payload 备注
2.05 Content 发送结果 正确请求
4.00 Bad Request 请求错误说明
4.01 Unauthorized 返回错误信息 token非法或者过期,需求重新认证获取token
4.02 Bad Option 返回错误信息 token不存在或者长度非法
4.04 Not Found 返回错误信息 请求的路径不存在
4.05 Method Not Allowed 返回错误信息 请求的方法错误,非post
4.06 Not Acceptable 要求的Accept Accept不是指定的类型
4.14 Request-url Too Long 返回错误信息 topic 设置过长,超过128
4.29 Too Many Requests 返回错误信息
5.00 Internal Server Error 返回错误信息 一般是认证或者流转服务超时

限制条件及注意事项

  1. * TOPIC规范和MQTTTOPIC一致,CoAP协议内 coap://host:port/topic/${topic},这个接口对于所有${topic}和MQTT topic是可以复用的,不支持`?query_String=xxx`形式传参。
  2. * 客户端缓存认证返回的token是请求的令牌,通过DTLS传输。
  3. * 传输的数据大小依赖于MTU的大小,最好在1K以内
本文导读目录