OpenData API
1️⃣ Introduction
OpenData is a lightweight communication framework designed for WiFi-based INDEVOLT IoT devices. Devices connect to local networks via WiFi, supporting both active data push and response to external queries.
Core Features
- Device data acquisition: Real-time pulling of device data.
- Device control: Dynamic adjustment of device parameters and configurations.
Use Cases
-
Receiving external HTTP query requests.
2️⃣ Preparations
Step 1: Install Tools
Step 2: Enable API
Device APIs are disabled by default and must be enabled before use. OpenData provides three modes:
- HTTP
- HTTP+ Digest Authentication
- HTTPS (Currently unsupported, coming soon)
You can enable and configure the local API in the INDEVOLT App:
![]()
![]()
![]()
![]()
![]()
![]()
Step 3: Check Firmware Version
If it is lower than the minimum version listed in the table below, please update the firmware.
Model Applicable firmware version BK1600/BK1600Ultra V1.3.0A_R006.072_M4848_00000039 SolidFlex2000/PowerFlex2000 CMS:CMS:V1406.07.002E You can check the device firmware version in the INDEVOLT app. Go to the device settings page and open Firmware Update to view the current version.
![]()
![]()
Step 4: Obtain IP Address
Choose any one of the following methods:
🧩Method 1: Query via router’s management list;
🧩Method 2: Check in App device settings:
![]()
![]()
🧩Method 3: Obtain IP via UDP broadcast:
(1) Ensure the device's WiFi network and computer are on the same local area network.
(2) Open a network debugging tool.
(3) Select UDP protocol.
(4) Select Local Host Addr.
(5) Set Local Host Post to 10000.
(6) Click Open.![]()
(7) Configure Remote with broadcast address and port: 255.255.255.255:8099.
![]()
(8) Enter AT command in message box: AT+IGDEVICEIP.
(9) Click Send.![]()
(10) INDEVOLT devices on the same network will respond with their IP address and serial number (SN).
![]()
3️⃣ HTTP Usage
3.1 Request Structure
Request Methods
| Method | Description |
|---|---|
| GET | Requests the server to return specified resources. |
| POST | Requests the server to perform specified operations. |
Request Address
http://{IP_ADDRESS}:8080/rpc/{API}
where
{IP_ADDRESS}: Device IP address.{API}: HTTP API to be invoked.
Request Example
- Retrieve device data:
POST http://192.168.31.213:8080/rpc/Indevolt.GetData?config={"t":[1664,1665]}
cURL command Example
-
Retrieve battery 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 Authentication
Digest Authentication verifies user identity in network communications, preventing plaintext password transmission.
In HTTP + Digest mode:
- New or factory-reset devices must first use the
User.SetConfiginterface to modify the default password. - Other APIs become accessible only after successful password modification.
Required tools
- ASCII to hexadecimal converter
- Hexadecimal to base64 converter
- AES_GCM encryption tool
Password modification example
- Convert the new password, original password, and random number from string to hexadecimal.
| ASCII string | Hexadecimal | |
|---|---|---|
| New password | qwertyui | 71 77 65 72 74 79 75 69 |
| Original password | qazwsxed | 71 61 7a 77 73 78 65 64 00 00 00 00 00 00 00 00 (Supplement 0 to 16 bytes) |
| Random number | 123456 | 31 32 33 34 35 36 00 00 00 00 00 00 (Supplement 0 to 12 bytes) |
-
Use AES_GCM encryption tool to encrypt, fill in the corresponding information as follows.
-
Convert ciphertext and tag from hexadecimal to base64.
| Hexadecimal | Base64 | |
|---|---|---|
| Ciphertext | 4e b2 90 67 54 02 d4 c4 | TrKQZ1QC1MQ= |
| Tag | cf 0b d0 4e 37 a0 e6 bb cb 74 1b cb ce ab 72 9a | zwvQTjeg5rvLdBvLzqtymg== |
-
Complete the digest authentication fields and send the
User.SetConfigrequest with the new password. The result returns true, indicating successful modification.POST
http://{IP_ADDRESS}:8080/rpc/User.SetConfig?config={"Password":"{PASSWORD}"}where
{IP_ADDRESS}:Device IP address.{PASSWORD}:Base64-encoded ciphertext encrypted with AES128-GCM.
| Parameter | Type | Describe | Attribute |
|---|---|---|---|
| Username | String | Default opend | required |
| Password | String | Default device key. - Using the default password can only request the User.SetConfig interface to change the password. - Once the password is modified, using the modified password can request other interfaces. | required |
| Realm | String | - If calling the User.SetConfig interface to update the password, you need to pass the AES128-GCM tag value. - If calling other interfaces in Base64 format, you may use a random value. | required |
| Nonce | Default type of Digest | Random values can be used | required |
| Algorithm | Default type of Digest | MD5 | required |
| qop | Default type of Digest | auth | required |
| Nonce Count | Default type of Digest | Random values can be used | required |
| Client Nonce | Default type of Digest | Random values can be used | required |
3.3 Errors
| Status code | Description | Explanation |
|---|---|---|
| 400 | Bad Request | The server cannot understand the format of the request; the client should modify the request and try again. |
| 401 | Unauthorized | The request requires authentication; the client needs to provide valid credentials. |
| 403 | Forbidden | The server understands the request but refuses to execute it, usually due to permission issues. |
| 404 | Not Found | The server cannot find the requested resource, possibly because the resource does not exist or has been deleted. |
| 405 | Method Not Allowed | The requested method is incompatible with the resource, for example, performing a write operation on a read-only resource. |
| 408 | Request Timeout | The server times out while waiting for the request; the client can retry later. |
| 409 | Conflict | The request conflicts with the current state of the resource, for example, multiple users editing the same resource simultaneously. |
| 410 | Gone | The requested resource has been permanently deleted and there is no new address. |
| 500 | Internal Server Error | The server encounters an unknown error and cannot complete the request. |
| 501 | Not Implemented | The server does not support the requested method and cannot execute it. |
| 502 | Bad Gateway | The server, acting as a gateway or proxy, received an invalid response from the upstream server. |
| 503 | Service Unavailable | The server is currently unable to handle the request, possibly due to overload or maintenance. |
| 504 | Gateway Timeout | The server, acting as a gateway or proxy, did not receive a timely response from the upstream server. |
| 505 | HTTP Version Not Supported | The server does not support the HTTP version used in the request. |
4️⃣ HTTP API
| Component | Description |
|---|---|
Indevolt | Retrieve device data and control device. |
Sys | Obtain CMS (Communication Management System) information. |
5️⃣ Indevolt
Indevolt allows you to retrieve real-time device data and send control commands by making standard HTTP requests.
5.1. Retrieve device data
-
Request
POST
http://192.168.31.213:8080/rpc/Indevolt.GetData?config={"t":[1664,1665]} -
Response
{
"1664":100,
"1665":251
}
Function:
Indevolt.GetDataParameter
Parameter Type Description config Object t: The request address for data, specified in thecJSON Pointcolumn of the table below.Return value
Device data in JSON format.
- SolidFlex2000/PowerFlex2000
- BK1600/BK1600Ultra
cJSON Point cJSON Value Type Unit Description Enum Definition SN 0 String Device SN Firmware Version Information 1118 String PG2000Series EMS 1109 String PG2000Series BMS-MB 1119 String PG2000Series PCS 1120 String PG2000Series DCDC 1136 String SFA/PFA DCDC1 1137 String SFA/PFA BMS1 1138 String SFA/PFA DCDC2 1139 String SFA/PFA BMS2 1140 String SFA/PFA DCDC3 1141 String SFA/PFA BMS3 1142 String SFA/PFA DCDC4 1143 String SFA/PFA BMS4 1098 String SFA/PFA DCDC5 1099 String SFA/PFA BMS5 System Operating Information 7101 Enum Working Mode 1: Self-consumed Prioritized
4: Real-time Control
5: Charge/Discharge Sc hedule142 Num kWh Rated Capacity 2618 Num Grid Charging 1000: Disable
1001: Enable11009 Num W Inverter Input Limit 2101 Num W Total AC Input Power 2108 Num W Total AC Output Power 11010 Num W Feed-in Power Limit 11011 Num W Max AC Output Power 680 Num Bypass 0: Disable
1: Enable6105 Num % Backup SOC 7171 Num Light 0: Disable
1: EnableCluster Information 606 Enum Master-slave identification 1000: Master
1001: Slave
1002: NoneBypass Power 667 Float W Bypass power Electrical Energy Information 2107 Num kWh Total AC Input Energy 2104 Num kWh Total AC Output Energy 2105 Num kWh Off-grid Output Energy 11034 Num Wh Bypass Input Energy 1502 Num kWh Daily PV Generation 6004 Num kWh Battery Daily Charging Energy 6005 Num kWh Battery Daily Discharging Energy 6006 Num kWh Battery Total Charging Energy 6007 Num kWh Battery Total Discharging Energy Electricity Meter Status 7120 Enum Meter Connection Status 1000: Enable
1001: Disable11016 Float W Meter Power Grid Information 2600 Num V Grid Voltage 2612 Num Hz Grid Frequency Battery Pack Operating Parameters 6001 Enum Battery Charge/Discharge State 1000: Static
1001: Charging
1002: Discharging6000 Num W Battery Power 6002 Num % Battery SOC Total 9008 String Batt SN-MB 9000 Num % Batt SOC-MB 9004 Num V Batt V-MB 9013 Num A Batt I-MB 9012 Num ℃ Batt Temp-MB 9009 Num V Batt Cell1 V-MB 9011 Num V Batt Cell2 V-MB 9032 String Batt SN-Pack1 9016 Num % Batt SOC-Pack1 9020 Num V Batt V-Pack1 19173 Num A Batt I-Pack1 9030 Num ℃ Batt Temp-Pack1 9021 Num V Batt Cell1 V-Pack1 9023 Num V Batt Cell2 V-Pack1 9051 String Batt SN-Pack2 9035 Num % Batt SOC-Pack2 9039 Num V Batt V-Pack2 19174 Num A Batt I-Pack2 9049 Num ℃ Batt Temp-Pack2 9040 Num V Batt Cell1 V-Pack2 9042 Num V Batt Cell2 V-Pack2 9070 String Batt SN-Pack3 9054 Num % Batt SOC-Pack3 9058 Num V Batt V-Pack3 19175 Num A Batt I-Pack3 9068 Num ℃ Batt Temp-Pack3 9059 Num V Batt Cell1 V-Pack3 9061 Num V Batt Cell2 V-Pack3 9165 Num Batt SN-Pack4 9149 Num % Batt SOC-Pack4 9153 Num V Batt V-Pack4 19176 Num A Batt I-Pack4 9163 Num ℃ Batt Temp-Pack4 9154 Num V Batt Cell1 V-Pack4 9156 Num V Batt Cell2 V-Pack4 9218 String Batt SN-Pack5 9202 Num % Batt SOC-Pack5 9206 Num V Batt V-Pack5 19177 Num A Batt I-Pack5 9216 Num ℃ Batt Temp-Pack5 9219 Num V Batt Cell1 V-Pack5 9222 Num V Batt Cell2 V-Pack5 PV Operating Parameters 1501 Num W Total DC Output Power 1632 Num A DC Input Current 1 1600 Num V DC Input Voltage 1 1664 Num W DC Input Power 1 1633 Num A DC Input Current 2 1601 Num V DC Input Voltage 2 1665 Num W DC Input Power 2 1634 Num A DC Input Current 3 1602 Num V DC Input Voltage 3 1666 Num W DC Input Power 3 1635 Num A DC Input Current 4 1603 Num V DC Input Voltage 4 1667 Num W DC Input Power 4
cJSON Point cJSON Value Type Unit Description Enum Definition 0 Float Device SN 7101 Enum Working mode 0: Outdoor Portable
1: Self-consumed Prioritized
5: Charge/Discharge Schedule1664 Float W DC Input Power1 1665 Float W DC Input Power2 2108 Float W Total AC Output Power 1502 Float kWh Daily Production 1505 Float 0.001kWh Cumulative Production 2101 Float W Total AC Input Power 2107 Float kWh Total AC Input Energy 1501 Float W Total DC Output Power 6000 Float W Battery Power 6001 Enum Battery Charge/Discharge State 1000: Static
1001: Charging
1002: Discharging6002 Float % Battery SOC 6105 Float % Emergency power supply 6004 Float kWh Battery Daily Charging Energy 6005 Float kWh Battery Daily Discharging Energy 6006 Float kWh Battery Total Charging Energy 6007 Float kWh Battery Total Discharging Energy 7120 Enum Meter Connection Status 1000: Enable
1001: Disable21028 Float W Meter Power
5.2. Control device
-
Request
POST
http://192.168.31.213:8080/rpc/Indevolt.SetData?config={"f":16,"t":47005,"v":[4]} -
Response
{"result": true}
-
Request
POST
http://192.168.31.213:8080/rpc/Indevolt.SetData?config={"f":16,"t":47015,"v":[2,700,5]} -
Response
{"result": true}
Function:
Indevolt.SetDataParameter
Parameter Type Description config Object f: function code, 16 by default;t: register address, see thecJSON Pointcolumn in the table below;v: write value, see theValuecolumn in the table below.
- SolidFlex2000/PowerFlex2000
- BK1600/BK1600Ultra
cJSON Point cJSON Value Type Unit Description Value 47005 Enum Mode Setting 1: Self-consumed Prioritized
4: Real-time control
5: Charge/Discharge Schedule47015 UINT State Setting (Only available in real-time control) 0: Standby
1: Charging
2: Discharging47016 INT W Power Setting (Only available in real-time control) MAX Charging: 50–2400
MAX Discharging: 50–240047017 UINT % SOC Settingt (Only available in real-time control) 5-100 1147 INT W Max AC Output Power Setting 50-2400 1146 INT W Feed-in Power Limit Setting 50-2400 1143 UINT Grid Charging Setting 0: Disable
1: Enable1138 INT W Inverter Input Limit Setting 50-2400 1 Enum Load Setting 1: Smart Plug
2: Meter
3: Key Load
4: Custom7266 Enum Bypass Setting 0: Disable
1: Enable1142 INT % Backup SOC Setting 7265 Enum Light Setting 0: Disable
1: Enable
cJSON Point cJSON Value Type Unit Description Value 47005 Enum Mode 1: Self-consumed Prioritized
2: Charge/discharge Schedule
4: Real-time Control47015 UINT State 0: Standby
1: Charging
2: Discharging47016 INT W Power Charging: 0-1200
Discharging: 0-80047017 UINT % SOC 0-100 infoIn real-time control mode, device charging/discharging can be controlled by simultaneously writing state, power, and SOC values.
Return value
Parameter Type Description resultBool true: success;false: failure.
6️⃣ Sys
This class is used to obtain firmware version, including CMS (Communication Management System) information.
-
Request
GET
http://192.168.31.213:8080/rpc/Sys.GetConfig -
Response
{
"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
}
}
Function:
Sys.GetConfigReturn value
Parameter Type Description deviceObject See the table below for device configuration information. device configuration
Parameter Type Description hostnameString Device name timezoneNum Timezone typeString Device model snString Device serial number macString Device MAC address fwString Device firmware version f_verString PG2000Series CMS p_verString PG2000Series Pfile timeString Current time time_stampNum Current timestamp (in seconds) run_timeNum Device runtime (in seconds)
7️⃣ FAQ
Q: HTTP request returns 401 Unauthorized.
- Verify the username and password for Digest Authentication.
- New/factory-reset devices only support access to the designated interface:
User.SetConfig. Refer to Digest Authentication section - other APIs become accessible after successful password modification and authentication with the new password.
Q: Device fails to return IP address after broadcast command.
The OpenData API is not enabled, making this function inactive. Refer to Enable API section.