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

设备认证和数据上传

更新时间:2017-09-18 15:07:21

设备基于HTTP接入

设备认证

设备使用HTTP接入流程:

  • HTTP服务器地址endpoint = https://iot-as-http.cn-shanghai.aliyuncs.com
  • 只支持HTTPS协议。
  • 设备在发送数据前,首先发起认证,获取设备的token。
  • 每次上报数据时,都需要携带token信息,如果token失效需要重新认证获取token,token可以缓存本地,有效期48小时。

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

  1. 此接口用于传输数据前获取token,发送参数到 只需要请求一次:
  2. POST /auth HTTP/1.1
  3. Host: iot-as-http.cn-shanghai.aliyuncs.com
  4. Content-Type: application/json
  5. body: {"version":"default","clientId":"mylight1000002","signmethod":"hmacsha1","sign":"4870141D4067227128CBB4377906C3731CAC221C","productKey":"ZG1EvTEa7NN","deviceName":"NlwaSPXsCpTQuh8FxBGH","timestamp":"1501668289957"}

参数说明:

  1. Method: POST,支持POST方法
  2. URL: /authurl地址,只支持HTTPS
  3. Content-Type:目前只支持 application/json

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

字段名称 是否必选 说明
productKey 必选 从iot套件控制台获取
deviceName 必选 从iot套件控制台获取
clientId 必选 客户端自表示Id,64字符内,建议是MAC或SN
timestamp 可选 时间戳,校验时间戳15分钟内请求有效
sign 必选 签名,hmacmd5(deviceSecret,content), content = 将所有提交给服务器的参数(version,sign,signmethod除外), 按照字母顺序排序, 然后将参数值依次拼接,无拼接符号
signmethod 可选 算法类型,hmacmd5或hmacsha1,不填默认hmacmd5
version 可选 版本,不填默认default

返回:

  1. body:
  2. {
  3. "code": 0,//业务状态码
  4. "message": "success",//业务信息
  5. "info": {
  6. "token": "eyJ0eXBlIjoiSldUIiwiYWxnIjoiaG1hY3NoYTEifQ.eyJleHBpcmUiOjE1MDI1MzE1MDc0NzcsInRva2VuIjoiODA0ZmFjYTBiZTE3NGUxNjliZjY0ODVlNWNiNDg3MTkifQ.OjMwu29F0CY2YR_6oOyiOLXz0c8"
  7. }
  8. }

业务状态码说明:

code message 备注
10000 common error 未知错误
10001 param error 请求的参数异常,请按照文档确认参数是否正确
20000 auth check error 设备鉴权失败
20004 update session error 更新失败
40000 request too many 请求次数过多,流控限制

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

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

  1. POST /topic/${topic} HTTP/1.1
  2. Host: iot-as-http.cn-shanghai.aliyuncs.com
  3. password:${token}
  4. Content-Type: application/octet-stream
  5. body: ${your_data}

参数说明

  1. Method: POST,支持POST方法
  2. URL: /topic/${topic},${topic}替换为设备对应的topic,只支持HTTPS
  3. Content-Type:目前只支持 application/octet-stream
  4. password: 放在Header中的参数,${token}为设备认证auth接口返回的token

body内容:

  1. 发往${topic}的内容二机制byte[],utf-8编码。

返回值:

  1. body:
  2. {
  3. "code": 0,//业务状态码
  4. "message": "success",//业务信息
  5. "info": {
  6. "messageId": 892687627916247040,
  7. "data": byte[]//可能为空,utf-8编码
  8. }
  9. }

业务状态码说明:

code message 备注
10000 common error 未知错误
10001 param error 请求的参数异常,请按照文档确认参数是否正确
20001 token is expired token失效,需要重新调用auth进行重新鉴权获取token
20002 token is null 请求header无token信息
20003 check token error 根据token获取identify信息失败,需要重新调用auth进行重新鉴权获取token
30001 publish message error 数据上行失败
40000 request too many 请求次数过多,流控限制

限制条件及注意事项

本文导读目录