跳到主要内容

OpenData API

文档版本说明

当前在线文档内容对应《Indevolt OpenData Application Note》V1.6

1️⃣ 介绍

OpenData是为基于WiFi的INDEVOLT物联网设备设计的轻量级通信框架。设备通过WiFi接入本地网络,支持数据主动推送与外部查询响应。

核心功能

  • 设备数据获取:实时拉取设备数据。
  • 设备控制:动态调整设备参数及配置。

使用场景

  • 接收外部HTTP查询请求


2️⃣ 准备

步骤一、安装工具

  • Postman / cURL:用于调用HTTP API获取设备数据或更新设备配置。
  • 任一网络调试工具(如 NetAssist):用于接收UDP广播。

步骤二、开启 API

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

  • HTTP
  • HTTP+ Digest 认证
  • HTTPS (目前不支持,敬请期待)

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

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

步骤三、查看固件版本

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

ModelApplicable firmware version
BK1600/BK1600UltraV1.3.0A_R006.072_M4848_00000039
SolidFlex2000/PowerFlex2000CMS:V1406.07.002E

请在 INDEVOLT App 中查看设备固件版本。在设备设置页选择 固件升级 查看固件信息.

步骤四、获取 IP 地址

以下三种方法任选其一:

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

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

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

    (1) 确保设备接入的WiFi网络与电脑处于同一局域网。
    (2) 打开网络调试工具。
    (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号。


3️⃣ HTTP使用说明

3.1 请求结构

请求方法

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

请求地址

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

其中:

  • {IP_ADDRESS}:设备的IP地址。
  • {API}:调用的HTTP 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]}"

3.2 Digest 认证

Digest认证技术用于网络通信中验证用户身份,避免密码明文传输。

在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. 完成 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 默认类型可使用随机值必填

3.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 版本。

4️⃣ HTTP API

组件说明
Indevolt读取 INDEVOLT 设备数据,控制设备。
Sys获取设备 CMS (Communication Management System) 信息。

5️⃣ Indevolt

Indevolt 允许你通过标准 HTTP 请求 获取设备实时数据发送控制命令

5.1 获取设备数据

示例
  • 请求示例

    POST http://192.168.31.213:8080/rpc/Indevolt.GetData?config={"t":[1664,1665]}

  • 返回示例

    {
    "1664":100,
    "1665":251
    }

方法: Indevolt.GetData

参数

参数名类型说明
configObjectt:请求数据的地址,见下表 cJSON Point 列。

返回值

JSON 格式的设备数据。

cJSON 点位cJSON 值类型单位说明Enum 定义
SN
0StringDevice SN
Firmware Version Information
1118StringPG2000Series EMS
1109StringPG2000Series BMS-MB
1119 StringPG2000Series PCS
1120StringPG2000Series DCDC
1136StringSFA/PFA DCDC1
1137 StringSFA/PFA BMS1
1138 StringSFA/PFA DCDC2
1139 String SFA/PFA BMS2
1140String SFA/PFA DCDC3
1141 StringSFA/PFA BMS3
1142 String SFA/PFA DCDC4
1143StringSFA/PFA BMS4
1098 String SFA/PFA DCDC5
1099StringSFA/PFA BMS5
System Operating Information
7101EnumWorking Mode1: Self-consumed Prioritized
4: Real-time Control
5: Charge/Discharge Sc hedule
142NumkWhRated Capacity
2618NumGrid Charging1000: Disable
1001: Enable
11009NumWInverter Input Limit
2101NumWTotal AC Input Power
2108NumWTotal AC Output Power
11010NumWFeed-in Power Limit
11011NumWMax AC Output Power
680NumBypass0: Disable
1: Enable
6105Num%Backup SOC
7171NumLight0: Disable
1: Enable
Cluster Information
606EnumMaster-slave identification1000: Master
1001: Slave
1002: None
Bypass Power
667FloatWBypass power
Electrical Energy Information
2107NumkWhTotal AC Input Energy
2104NumkWhTotal AC Output Energy
2105NumkWhOff-grid Output Energy
11034NumWhBypass Input Energy
1502NumkWhDaily PV Generation
6004NumkWhBattery Daily Charging Energy
6005NumkWhBattery Daily Discharging Energy
6006NumkWhBattery Total Charging Energy
6007NumkWhBattery Total Discharging Energy
Electricity Meter Status
7120EnumMeter Connection Status1000: Enable
1001: Disable
11016FloatWMeter Power
Grid Information
2600NumVGrid Voltage
2612NumHzGrid Frequency
Battery Pack Operating Parameters
6001EnumBattery Charge/Discharge State1000: Static
1001: Charging
1002: Discharging
6000NumWBattery Power
6002Num%Battery SOC Total
9008StringBatt SN-MB
9000Num%Batt SOC-MB
9004NumVBatt V-MB
9013NumABatt I-MB
9012NumBatt Temp-MB
9009NumVBatt Cell1 V-MB
9011NumVBatt Cell2 V-MB
9032StringBatt SN-Pack1
9016Num%Batt SOC-Pack1
9020NumVBatt V-Pack1
19173NumABatt I-Pack1
9030NumBatt Temp-Pack1
9021NumVBatt Cell1 V-Pack1
9023NumVBatt Cell2 V-Pack1
9051StringBatt SN-Pack2
9035Num%Batt SOC-Pack2
9039NumVBatt V-Pack2
19174NumABatt I-Pack2
9049NumBatt Temp-Pack2
9040NumVBatt Cell1 V-Pack2
9042NumVBatt Cell2 V-Pack2
9070StringBatt SN-Pack3
9054Num%Batt SOC-Pack3
9058NumVBatt V-Pack3
19175NumABatt I-Pack3
9068NumBatt Temp-Pack3
9059NumVBatt Cell1 V-Pack3
9061NumVBatt Cell2 V-Pack3
9165NumBatt SN-Pack4
9149Num%Batt SOC-Pack4
9153NumVBatt V-Pack4
19176NumABatt I-Pack4
9163NumBatt Temp-Pack4
9154NumVBatt Cell1 V-Pack4
9156NumVBatt Cell2 V-Pack4
9218StringBatt SN-Pack5
9202Num%Batt SOC-Pack5
9206NumVBatt V-Pack5
19177NumABatt I-Pack5
9216NumBatt Temp-Pack5
9219NumVBatt Cell1 V-Pack5
9222NumVBatt Cell2 V-Pack5
PV Operating Parameters
1501NumWTotal DC Output Power
1632NumADC Input Current 1
1600NumVDC Input Voltage 1
1664NumWDC Input Power 1
1633NumADC Input Current 2
1601NumVDC Input Voltage 2
1665NumWDC Input Power 2
1634NumADC Input Current 3
1602NumVDC Input Voltage 3
1666NumWDC Input Power 3
1635NumADC Input Current 4
1603NumVDC Input Voltage 4
1667NumWDC Input Power 4

5.2 控制设备

示例:设置实时控制模式
  • 请求示例

    POST http://192.168.31.213:8080/rpc/Indevolt.SetData?config={"f":16,"t":47005,"v":[4]}

  • 返回示例

    {"result": true}
示例:设置放电状态、功率、SOC。
  • 请求示例

    POST http://192.168.31.213:8080/rpc/Indevolt.SetData?config={"f":16,"t":47015,"v":[2,700,5]}

  • 返回示例

    {"result": true}

方法: Indevolt.SetData

参数

参数名类型说明
configObjectf:功能码,统一用16;
t: 寄存器地址,见下表 cJSON 点位 列;
v: 写入值,见下表 列。
cJSON 点位cJSON 值类型单位说明
47005EnumMode Setting1: Self-consumed Prioritized
4: Real-time control
5: Charge/Discharge Schedule
47015UINTState Setting (Only available in real-time control)0: Standby
1: Charging
2: Discharging
47016INTWPower Setting (Only available in real-time control)MAX Charging: 50–2400
MAX Discharging: 50–2400
47017UINT%SOC Setting (Only available in real-time control)5-100
1147INTWMax AC Output Power Setting50-2400
1146INTWFeed-in Power Limit Setting50-2400
1143UINTGrid Charging Setting0: Disable
1: Enable
1138INTWInverter Input Limit Setting50-2400
1EnumLoad Setting1: Smart Plug
2: Meter
3: Key Load
4: Custom
7266EnumBypass Setting0: Disable
1: Enable
1142INT%Backup SOC Setting5-100
7265EnumLight Setting0: Disable
1: Enable
信息

实时控制模式下,可一次性写入状态、功率、SOC值以控制设备充放电。

返回值

参数名类型说明
resultBooltrue: success; false: failure.

6️⃣ Sys

Sys 用于获取固件版本信息,包括 CMS(Communication Management System)信息。

示例
  • 请求示例

    GET http://192.168.31.213:8080/rpc/Sys.GetConfig

  • 返回示例

    {
    "device": {
    "hostname": "",
    "timezone": 480,
    "type": "CMS-SF2000",
    "sn": "",
    "mac": "7C3E82EF997F",
    "fw": "T1.4.06_ROOD. 072_M4801_0000002C",
    "f_ver": "T1406.07.002C",
    "p_ver": "VOD.00.08",
    "time": "2025-12-18 09:44:57",
    "time_stamp": 1766051097,
    "run_time": 2244
    }
    }

方法: Sys.GetConfig

返回值

参数名类型说明
deviceObject设备配置信息请参见下表。

设备配置

参数名类型说明
hostnameStringDevice name
timezoneNumTimezone
typeStringDevice model
snStringDevice serial number
macStringDevice MAC address
fwStringDevice firmware version
f_verStringPG2000Series CMS
p_verStringPG2000Series Pfile
timeStringCurrent time
time_stampNumCurrent timestamp (in seconds)
run_timeNumDevice runtime (in seconds)

7️⃣ FAQ

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

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