Skip to main content

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

  • Postman / cURL: Used for invoking HTTP APIs to retrieve device data or update device configurations.
  • Any network debugging tool (e.g., NetAssist): Used for receiving UDP broadcasts.

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.

ModelApplicable firmware version
BK1600/BK1600UltraV1.3.0A_R006.072_M4848_00000039
SolidFlex2000/PowerFlex2000CMS: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

MethodDescription
GETRequests the server to return specified resources.
POSTRequests 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.SetConfig interface 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

  1. Convert the new password, original password, and random number from string to hexadecimal.
ASCII stringHexadecimal
New passwordqwertyui71 77 65 72 74 79 75 69
Original passwordqazwsxed71 61 7a 77 73 78 65 64 00 00 00 00 00 00 00 00
(Supplement 0 to 16 bytes)
Random number12345631 32 33 34 35 36 00 00 00 00 00 00
(Supplement 0 to 12 bytes)
  1. Use AES_GCM encryption tool to encrypt, fill in the corresponding information as follows.

  2. Convert ciphertext and tag from hexadecimal to base64.

HexadecimalBase64
Ciphertext4e b2 90 67 54 02 d4 c4TrKQZ1QC1MQ=
Tagcf 0b d0 4e 37 a0 e6 bb cb 74 1b cb ce ab 72 9azwvQTjeg5rvLdBvLzqtymg==
  1. Complete the digest authentication fields and send the User.SetConfig request 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.
ParameterTypeDescribeAttribute
UsernameStringDefault opendrequired
PasswordStringDefault 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
RealmString- 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
NonceDefault type of DigestRandom values can be usedrequired
AlgorithmDefault type of DigestMD5required
qopDefault type of Digestauthrequired
Nonce CountDefault type of DigestRandom values can be usedrequired
Client NonceDefault type of DigestRandom values can be usedrequired

3.3 Errors

Status codeDescriptionExplanation
400Bad RequestThe server cannot understand the format of the request; the client should modify the request and try again.
401UnauthorizedThe request requires authentication; the client needs to provide valid credentials.
403ForbiddenThe server understands the request but refuses to execute it, usually due to permission issues.
404Not FoundThe server cannot find the requested resource, possibly because the resource does not exist or has been deleted.
405Method Not AllowedThe requested method is incompatible with the resource, for example, performing a write operation on a read-only resource.
408Request TimeoutThe server times out while waiting for the request; the client can retry later.
409ConflictThe request conflicts with the current state of the resource, for example, multiple users editing the same resource simultaneously.
410GoneThe requested resource has been permanently deleted and there is no new address.
500Internal Server ErrorThe server encounters an unknown error and cannot complete the request.
501Not ImplementedThe server does not support the requested method and cannot execute it.
502Bad GatewayThe server, acting as a gateway or proxy, received an invalid response from the upstream server.
503Service UnavailableThe server is currently unable to handle the request, possibly due to overload or maintenance.
504Gateway TimeoutThe server, acting as a gateway or proxy, did not receive a timely response from the upstream server.
505HTTP Version Not SupportedThe server does not support the HTTP version used in the request.

4️⃣ HTTP API

ComponentDescription
IndevoltRetrieve device data and control device.
SysObtain 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

Example
  • Request

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

  • Response

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

Function: Indevolt.GetData

Parameter

ParameterTypeDescription
configObjectt: The request address for data, specified in the cJSON Point column of the table below.

Return value

Device data in JSON format.

cJSON PointcJSON Value TypeUnitDescriptionEnum Definition
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. Control device

Example: Set working mode
  • Request

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

  • Response

    {"result": true}
Example: Set discharging state, power and SOC
  • 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.SetData

Parameter

ParameterTypeDescription
configObjectf: function code, 16 by default;
t: register address, see the cJSON Point column in the table below;
v: write value, see the Value column in the table below.
cJSON PointcJSON Value TypeUnitDescriptionValue
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 Settingt (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 Setting
7265EnumLight Setting0: Disable
1: Enable
info

In real-time control mode, device charging/discharging can be controlled by simultaneously writing state, power, and SOC values.

Return value

ParameterTypeDescription
resultBooltrue: success; false: failure.

6️⃣ Sys

This class is used to obtain firmware version, including CMS (Communication Management System) information.

Example
  • 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.GetConfig

Return value

ParameterTypeDescription
deviceObjectSee the table below for device configuration information.

device configuration

ParameterTypeDescription
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 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.