跳到主要内容

# HTTP/HTTPS 概述

INDEVOLT 微储提供基于 HTTP/HTTPS 的 REST API,可用于本地网络中的设备监控、参数读取和控制。所有接口均采用 JSON 作为数据交换格式。


1. 准备

步骤一、安装工具

  • Postman、cURL 或其他 HTTP 调试工具:用于调用 HTTP API 获取设备数据或更新设备配置。

步骤二、开启 API

在默认状态下设备 API 功能未开启,需要开启后才能使用 API。OpenData 提供以下方式:

您可在 INDEVOLT App 中设置本地 API:

  • 设备已联网:推荐使用 云端设置,操作更简单
  • 设备暂未联网:可通过本地蓝牙设置,直接与设备连接即可完成配置

步骤三、查看固件版本

若设备版本低于表格所列版本,请更新设备固件。

型号最低支持版本
BK1600 / BK1600 UltraV1.3.0A_R006.072_M4848_00000039
SolidFlex 2000 / PowerFlex 2000CMS:V1406.07.002E
PowerFlex 3000 AC
PowerFlex 3000 Hybrid
SolidFlex 3000 AC
SolidFlex 3000 AC Pro
SolidFlex 3000 Hybrid Pro
CMS: V1409.08.3034
SolidFlex 1200CMS: V1407.07.202E

请在 INDEVOLT App 中查看设备固件版本。

步骤四、获取设备 IP 地址

以下三种方法任选其一:

  • 🧩方法 1:路由器管理后台查询;

  • 🧩方法 2:App设备设置界面查看;

  • 🧩方法 3: UDP广播获取IP

    (1) 确保设备接入的WiFi网络与电脑处于同一局域网。
    (2) 打开任一网络调试工具(如 NetAssist)。
    (3) 选择 UDP 协议。
    (4) 选择 Local Host Addr。
    (5) 设置 Local Host Port 为10000
    (6) 单击 Open

    (7) 在Remote设置广播地址及端口:255.255.255.255:8099

    (8) 在消息框里填写 AT 指令:AT+IGDEVICEIP
    (9) 单击 Send

    (10) 同一局域网内的INDEVOLT设备会回复其IP地址和SN号。


2. HTTP 使用说明

2.1 请求格式

请求方法

方法说明
GET请求服务器返回指定资源。
POST请求服务器执行特定操作。

请求地址

http://{IP_ADDRESS}:8080/rpc/{API}

其中:

  • {IP_ADDRESS}:设备的 IP 地址。
  • {API}:API 名称,例如 Indevolt.GetData。完整接口说明请参见 API 参考

请求示例

  • 获取设备数据:
    POST http://192.168.31.213:8080/rpc/Indevolt.GetData?config={"t":[1664,1665]}

cURL 命令示例

  • 获取电池 SOC:
    curl -g -X POST -H "Content-Type: application/json" "http://192.168.1.75:8080/rpc/Indevolt.GetData?config={\"t\":[6002]}"

2.2 请求频率限制

为保证设备稳定运行,建议控制 API 调用频率。

类型限制
建议请求间隔≥ 5 秒
最小支持间隔1 秒
响应时长1 秒

2.3 错误码

状态码描述说明
400Bad Request服务器无法理解请求格式;客户端需修改请求后重试。
401Unauthorized请求需要身份验证;客户端需提供有效凭证。
403Forbidden服务器理解请求,但拒绝执行,通常由于权限不足。
404Not Found服务器找不到请求的资源,可能资源不存在或已被删除。
405Method Not Allowed请求的方法与资源不兼容,例如对只读资源执行写操作。
408Request Timeout服务器等待请求超时,客户端可稍后重试。
409Conflict请求与资源的当前状态冲突,例如多用户同时编辑同一资源。
410Gone请求的资源已被永久删除且无新的地址。
500Internal Server Error服务器遇到未知错误,无法完成请求。
501Not Implemented服务器不支持请求的方法,无法执行。
502Bad Gateway作为网关或代理的服务器从上游服务器收到无效响应。
503Service Unavailable服务器当前无法处理请求,可能由于过载或维护。
504Gateway Timeout作为网关或代理的服务器未能及时从上游服务器收到响应。
505HTTP Version Not Supported服务器不支持请求使用的 HTTP 版本。

3. HTTP Digest Authentication

设备支持 HTTP Digest Authentication 对请求进行身份认证,可避免密码以明文方式传输,提高通信安全性。

在 HTTP+Digest 模式下:

  • 首次使用或恢复出厂设置的设备需要先使用 User.SetConfig 接口修改默认密码。
  • 修改密码成功后,可使用其他接口,后续所有接口均使用新密码认证。

工具

  • ASCII → 十六进制转换器
  • 十六进制 → Base64 转换器
  • AES-GCM 加密工具

修改密码示例

  1. 将新密码、原始密码与随机数转换为十六进制。

    ASCII 字符串十六进制
    新密码qwertyui71 77 65 72 74 79 75 69
    原始密码qazwsxed71 61 7a 77 73 78 65 64 00 00 00 00 00 00 00 00
    (补齐至 16 字节)
    随机数12345631 32 33 34 35 36 00 00 00 00 00 00
    (补齐至 12 字节)
  2. 使用 AES-GCM 工具加密,在工具中填写对应信息进行加密。

  3. 将密文和 Tag 转换为 Base64。

    十六进制Base64
    密文4e b2 90 67 54 02 d4 c4TrKQZ1QC1MQ=
    Tagcf 0b d0 4e 37 a0 e6 bb cb 74 1b cb ce ab 72 9azwvQTjeg5rvLdBvLzqtymg==
  4. 配置 HTTP Digest Authentication 参数,并发送 User.SetConfig 请求。

    POST http://{IP_ADDRESS}:8080/rpc/User.SetConfig?config={"Password":"{PASSWORD}"}

    其中:

    • {IP_ADDRESS}:设备 IP 地址。
    • {PASSWORD}:经过 AES128-GCM 加密后并转换为 Base64 的密文。
参数名类型描述是否必填
UsernameString默认值 opend必填
PasswordString默认设备密钥。

- 使用 默认密码 只能请求 User.SetConfig 接口修改密码。
- 修改密码后,使用 新密码 可以调用其他接口。
必填
RealmString- 调用 User.SetConfig 修改密码时,需要提供 AES128-GCM Tag
- 调用 其他接口 时,可以使用随机值。
必填
NonceDigest 默认类型可使用随机值必填
AlgorithmDigest 默认类型MD5必填
qopDigest 默认类型auth必填
Nonce CountDigest 默认类型可使用随机值必填
Client NonceDigest 默认类型可使用随机值必填

4. HTTPS(暂不支持)

HTTPS 基于 TLS 对通信数据进行加密,并通过数字证书验证服务器身份,可有效防止数据被窃听或篡改。

HTTP 与 HTTPS 使用相同的 API 接口,请求方法、请求参数及响应格式完全一致,仅需将请求地址中的协议由 http:// 替换为 https://


5. FAQ

Q: HTTP 访问返回 401 Unauthorized。
  • 检查 Digest 认证的用户名和密码是否正确。
  • 首次使用/恢复出厂设置的设备只支持访问指定接口 User.SetConfig。详情请见 Digest 认证,修改密码成功后用新密码认证即可正常使用其他接口。
Q: 发送广播指令后设备未返回 IP 地址。

OpenData API尚未开启,导致该功能不可用。详情请见开启 API