HTTP连接通信

本文介绍基于HTTP协议进行接入的详细流程。

基础流程

设备通过HTTP协议接入,需要进行设备认证,以获取设备的session ID。该session ID将会被用于后续的测点数据上报。

设备认证

认证设备请求示例

POST /auth/{ProductKey}/{DeviceKey}
Host: {HTTP-Broker-URL}
Content-Type: application/json
body: {
    "signMethod":"sha256",
    "sign":"bd931ad96c9977af9aae01f17efd30e609a0fe5ed3358f7ca4a9e6a51482160b",
    "lifetime":300000
}
示例参数说明

参数

说明

POST

请求方法,仅支持POST。

/auth/{ProductKey}/{DeviceKey}

用于认证的URL地址。{ProductKey}与{DeviceKey}分别是该设备的product key和device key。这两项信息可以登录 EnOS 管理控制台并在 设备管理 > 设备资产 中获取。更多信息,参见 获取设备三元组信息

Host: {HTTP-Broker-URL}

HTTP Broker 的地址。有关你所在 EnOS 实例的HTTP broker地址信息,登录 EnOS 管理控制台并在 帮助 > 环境信息 中获取。

Content-Type: application/json

设备发送给EnOS的上行数据的编码格式。在设备认证时应为application/json。

body: {“signMethod”:”sha256”,”sign”:”bd931ad96c9977af9aae01f17efd30e609a0fe5ed3358f7ca4a9e6a51482160b”,”lifetime”:”300000”}

设备认证相关信息,JSON格式。其具体说明参见下表。


设备认证相关信息的JSON结构体的参数说明,参见下表:

设备认证相关信息JSON结构体

参数

必需/可选

说明

signMethod

必需

签名算法。支持 sha256

lifetime

必需

用于判定设备端状态的时间。单位为毫秒。默认值为300000(5分钟)。如果设备端在lifetime规定的时间长度之内一直未向EnOS上报数据,EnOS会要求设备重新认证,获取新的session ID。

sign

必需

设备签名。签名计算方法,见下文说明。

设备签名计算方法


  1. 设备签名由以下字段按照下列顺序,按照 字段名 + 值 的格式拼接成一个新字段:

    • deviceKey:设备的device key。

    • lifetime

    • productKey:设备的product key。

    • method:签名算法为固定值sha256

    例如,设备的参数值如下所示:

    • deviceKey=dK987654

    • lifetime=300000

    • productKey=pK11111

    • signMethod=sha256

    则拼接得到的字符串为 deviceKeydK987654lifetime300000productKeypK11111signMethodsha256

  2. 将设备的 device secret 的值拼接至新字段的末尾。如何获取设备的 device secret,参见 获取设备三元组信息

    例如,设备的 device secret 为ds54321。则拼接而成的字符串为: deviceKeydK987654lifetime300000productKeypK11111signMethodsha256ds54321

  3. 使用 SHA256 算法对该字符串进行加密计算,再将得到的密钥中的字母转换为大写即可得到 sign

    在上述实例中,sign的计算方法可以用如下表达式表达: sign=toUpperCase(SHA256(deviceKeydK987654lifetime300000productKeypK11111signMethodsha256ds54321))

备注

在执行第 2 步的把 device secret 拼接至字符串末尾时,不需要拼接 deviceSecret 这个字段名本身,直接拼接 device secret 的值即可。

返回结果示例

body:
{
  "code": 200,
  "msg": "success",
  "data": {
     "sessionId": "262dc4cb-dc31-4610-b5e5-417b93e4f008"
   }
}

备注

  • 返回的 sessionId 需要被缓存在本地。每次上报数据时,都需要携带 sessionId 信息。

  • 如果 sessionId 校验失效,需要重新认证设备获取 sessionId

相关链接

上报测点信息(HTTP)