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结构体的参数说明,参见下表:
参数 |
必需/可选 |
说明 |
---|---|---|
|
必需 |
签名算法。支持 |
|
必需 |
用于判定设备端状态的时间。单位为毫秒。默认值为300000(5分钟)。如果设备端在lifetime规定的时间长度之内一直未向EnOS上报数据,EnOS会要求设备重新认证,获取新的session ID。 |
|
必需 |
设备签名。签名计算方法,见下文说明。 |
设备签名计算方法¶
设备签名由以下字段按照下列顺序,按照 字段名 + 值 的格式拼接成一个新字段:
deviceKey
:设备的device key。lifetime
productKey
:设备的product key。method
:签名算法为固定值sha256
例如,设备的参数值如下所示:
deviceKey=dK987654
lifetime=300000
productKey=pK11111
signMethod=sha256
则拼接得到的字符串为
deviceKeydK987654lifetime300000productKeypK11111signMethodsha256
将设备的 device secret 的值拼接至新字段的末尾。如何获取设备的 device secret,参见 获取设备三元组信息。
例如,设备的 device secret 为
ds54321
。则拼接而成的字符串为:deviceKeydK987654lifetime300000productKeypK11111signMethodsha256ds54321
使用 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
。