跳到主要内容

OpenData API

1️⃣ 介绍

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

核心功能

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

使用场景

  • 接收外部HTTP查询请求


2️⃣ 准备

步骤一、安装工具

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

步骤二、开启 API

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

您可在 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 错误码

状态码描述说明
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 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 默认类型可使用随机值必填

5️⃣ API

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

6️⃣ Indevolt

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

6.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 定义API注释
SN
0StringDevice SNIndevolt.GetData
Firmware Version Information
1118StringPG2000Series EMSIndevolt.GetData
1109StringPG2000Series BMS-MBIndevolt.GetData
1119 StringPG2000Series PCS Indevolt.GetData
1120StringPG2000Series DCDC Indevolt.GetData
1136StringSFA/PFA DCDC1 Indevolt.GetData
1137 StringSFA/PFA BMS1 Indevolt.GetData
1138 StringSFA/PFA DCDC2 Indevolt.GetData
1139 String SFA/PFA BMS2Indevolt.GetData
1140String SFA/PFA DCDC3Indevolt.GetData
1141 StringSFA/PFA BMS3 Indevolt.GetData
1142 String SFA/PFA DCDC4Indevolt.GetData
1143StringSFA/PFA BMS4 Indevolt.GetData
1098 String SFA/PFA DCDC5Indevolt.GetData
1099StringSFA/PFA BMS5 Indevolt.GetData
System Operating Information
7101EnumWorking Mode1: Self-consumed Prioritized
4: Real-time Control
5: Charge/Discharge Schedule
Indevolt.GetData
142NumkWhRated CapacityIndevolt.GetData
2618NumGrid Charging1000: Disable
1001: Enable
Indevolt.GetData
11009NumWInverter Input LimitIndevolt.GetData
2101NumWTotal AC Input PowerIndevolt.GetData
2108NumWTotal AC Output PowerIndevolt.GetData
11010NumWFeed-in Power LimitIndevolt.GetData
11011NumWMax AC Output PowerIndevolt.GetData
680NumBypass0: Disable
1: Enable
Indevolt.GetData
11039NumBypass mode0: Eps
1: M-Inv
Indevolt.GetDataAutomatically switch according to forward and reverse current
6105Num%Backup SOCIndevolt.GetData
7171NumLight0: Disable
1: Enable
Indevolt.GetData
8646NumDayBattery Calibration: Cycle 0-60
0: OFF
Indevolt.GetDataOperating time without full charge
8647NumTimeBattery Calibration: Start Time DEC-->HEX
H: hour
L: minute
Indevolt.GetDatae.g.: 256-->0100

01(HEX-H)-->01h
00(HEX-L)-->00min
2802NumWBattery Calibration: Charging power (AC)Indevolt.GetData
Cluster Information
606EnumMaster-slave identification1000: Master
1001: Slave
1002: None
Indevolt.GetData
Bypass Power
667FloatWBypass powerIndevolt.GetDataReal-time power flowing through the bypass path.
- Grid-tied: power may come from the microinverter or be supplied directly to loads
- Off-grid: power is directly supplied to loads
Electrical Energy Information
2107NumkWhTotal AC Input EnergyIndevolt.GetDataTotal energy imported from the grid. This energy can be used to charge the battery or directly supply loads through bypass.
2104NumkWhTotal AC Output EnergyIndevolt.GetDataComprehensive electrical energy, including (DC+AC+Bypass)
11035NumWhDaily bypass M-inv input energyIndevolt.GetDataDaily energy coming from the microinverter. This is only available in grid-tied mode, when the system is connected to a microinverter.
11034NumWhTotal bypass M-inv input energyIndevolt.GetDataTotal energy coming from the microinverter. This is only available in grid-tied mode, when the system is connected to a microinverter.
11037Num KWhDaily off-grid bypass output energyIndevolt.GetDataDaily electrical energy of off - grid bypass discharge
2105Num KWhTotal off-grid bypass output energyIndevolt.GetDataTotal electrical energy of off-grid bypass discharge
9285Num WhDaily bypass output energyIndevolt.GetDataDaily electrical energy of bypass discharge (grid-connected + off-grid)
9284NumWhTotal bypass output energyIndevolt.GetDataTotal electrical energy of bypass discharge (grid-connected + off-grid)
1502NumkWhDaily PV GenerationIndevolt.GetData
1505NumWhCumulative ProductionIndevolt.GetData
6004NumkWhBattery Daily Charging EnergyIndevolt.GetData
6005NumkWhBattery Daily Discharging EnergyIndevolt.GetData
6006NumkWhBattery Total Charging EnergyIndevolt.GetData
6007NumkWhBattery Total Discharging EnergyIndevolt.GetData
Electricity Meter Status
7120EnumMeter Connection Status1000: Enable
1001: Disable
Indevolt.GetData
11016FloatWMeter PowerIndevolt.GetData
Grid Information
2600NumVGrid VoltageIndevolt.GetData
2612NumHzGrid FrequencyIndevolt.GetData
Battery Pack Operating Parameters
6001EnumBattery Charge/Discharge State1000: Static
1001: Charging
1002: Discharging
Indevolt.GetData
6000NumWBattery PowerIndevolt.GetData
6002Num%Battery SOC TotalIndevolt.GetData
9008StringBatt SN-MBIndevolt.GetData
9000Num%Batt SOC-MBIndevolt.GetData
9004NumVBatt V-MBIndevolt.GetData
9013NumABatt I-MBIndevolt.GetData
9012NumBatt Temp-MBIndevolt.GetData
9009NumVBatt Cell1 V-MBIndevolt.GetData
9011NumVBatt Cell2 V-MBIndevolt.GetData
9032StringBatt SN-Pack1Indevolt.GetData
9016Num%Batt SOC-Pack1Indevolt.GetData
9020NumVBatt V-Pack1Indevolt.GetData
19173NumABatt I-Pack1Indevolt.GetData
9030NumBatt Temp-Pack1Indevolt.GetData
9021NumVBatt Cell1 V-Pack1Indevolt.GetData
9023NumVBatt Cell2 V-Pack1Indevolt.GetData
9051StringBatt SN-Pack2Indevolt.GetData
9035Num%Batt SOC-Pack2Indevolt.GetData
9039NumVBatt V-Pack2Indevolt.GetData
19174NumABatt I-Pack2Indevolt.GetData
9049NumBatt Temp-Pack2Indevolt.GetData
9040NumVBatt Cell1 V-Pack2Indevolt.GetData
9042NumVBatt Cell2 V-Pack2Indevolt.GetData
9070StringBatt SN-Pack3Indevolt.GetData
9054Num%Batt SOC-Pack3Indevolt.GetData
9058NumVBatt V-Pack3Indevolt.GetData
19175NumABatt I-Pack3Indevolt.GetData
9068NumBatt Temp-Pack3Indevolt.GetData
9059NumVBatt Cell1 V-Pack3Indevolt.GetData
9061NumVBatt Cell2 V-Pack3Indevolt.GetData
9165NumBatt SN-Pack4Indevolt.GetData
9149Num%Batt SOC-Pack4Indevolt.GetData
9153NumVBatt V-Pack4Indevolt.GetData
19176NumABatt I-Pack4Indevolt.GetData
9163NumBatt Temp-Pack4Indevolt.GetData
9154NumVBatt Cell1 V-Pack4Indevolt.GetData
9156NumVBatt Cell2 V-Pack4Indevolt.GetData
9218StringBatt SN-Pack5Indevolt.GetData
9202Num%Batt SOC-Pack5Indevolt.GetData
9206NumVBatt V-Pack5Indevolt.GetData
19177NumABatt I-Pack5Indevolt.GetData
9216NumBatt Temp-Pack5Indevolt.GetData
9219NumVBatt Cell1 V-Pack5Indevolt.GetData
9222NumVBatt Cell2 V-Pack5Indevolt.GetData
PV Operating Parameters
1501NumWTotal DC Output PowerIndevolt.GetData
1632NumADC Input Current 1Indevolt.GetData
1600NumVDC Input Voltage 1Indevolt.GetData
1664NumWDC Input Power 1Indevolt.GetData
1633NumADC Input Current 2Indevolt.GetData
1601NumVDC Input Voltage 2Indevolt.GetData
1665NumWDC Input Power 2Indevolt.GetData
1634NumADC Input Current 3Indevolt.GetData
1602NumVDC Input Voltage 3Indevolt.GetData
1666NumWDC Input Power 3Indevolt.GetData
1635NumADC Input Current 4Indevolt.GetData
1603NumVDC Input Voltage 4Indevolt.GetData
1667NumWDC Input Power 4Indevolt.GetData

6.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 值类型单位说明API
47005EnumMode Setting1: Self-consumed Prioritized
4: Real-time control
5: Charge/Discharge Schedule
Indevolt.SetData
47015UINTState Setting (Only available in real-time control)0: Standby
1: Charging
2: Discharging
Indevolt.SetData
47016INTWPower Setting (Only available in real-time control)MAX Charging: 50–2400
MAX Discharging: 50–2400
Indevolt.SetData
47017UINT%SOC Setting (Only available in real-time control)5-100Indevolt.SetData
1147INTWMax AC Output Power Setting50-2400Indevolt.SetData
1146INTWFeed-in Power Limit Setting50-2400Indevolt.SetData
1143UINTGrid Charging Setting0: Disable
1: Enable
Indevolt.SetData
1138INTWInverter Input Limit Setting100-2400Indevolt.SetData
1EnumLoad Setting1: Smart Plug
2: Meter
3: Key Load
4: Custom
Indevolt.SetData
7266EnumBypass Setting0: Disable
1: Enable
Indevolt.SetData
1142INT%Backup SOC SettingIndevolt.SetData
7265EnumLight Setting0: Disable
1: Enable
Indevolt.SetData
信息

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

返回值

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

7️⃣ 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)

8️⃣ FAQ

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

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