Ga naar hoofdinhoud

OpenData API

1️⃣ Introductie

OpenData is een lichtgewicht communicatieframework dat is ontworpen voor WiFi-gebaseerde INDEVOLT IoT-apparaten. Het apparaat verbindt via WiFi met het lokale netwerk en ondersteunt zowel actieve dataversturing als externe query-respons.

Kernfunctionaliteiten

  • Apparaatgegevens ophalen: realtime uitlezen van apparaatdata.
  • Apparaatbediening: dynamisch aanpassen van apparaatparameters en configuratie.

Toepassingsscenario’s

  • Ontvangen van externe HTTP-verzoeken


2️⃣ Voorbereiding

Stap 1. Tools installeren

  • Postman / cURL: voor het aanroepen van HTTP API’s om apparaatgegevens op te halen of configuraties aan te passen.
  • Een netwerkdebugtool (zoals NetAssist): voor het ontvangen van UDP-broadcasts.

Stap 2. API inschakelen

Standaard is de API-functie uitgeschakeld. Deze moet eerst worden ingeschakeld om te kunnen gebruiken. OpenData ondersteunt de volgende drie methoden:

  • HTTP
  • HTTP Digest
  • HTTPS (momenteel niet ondersteund, binnenkort beschikbaar)

Je kunt de lokale API instellen in de INDEVOLT App:

  • Apparaat is online: aanbevolen via cloudconfiguratie, eenvoudiger in gebruik
  • Apparaat is niet online: via lokale Bluetooth-configuratie

Stap 3. Firmwareversie controleren

Als de firmwareversie lager is dan de tabelwaarden, moet je de firmware updaten.

ModelVereiste firmwareversie
BK1600 / BK1600 UltraV1.3.0A_R006.072_M4848_00000039
SolidFlex 2000 / PowerFlex 2000CMS: V1406.07.002E

Controleer de firmware in de INDEVOLT App.

Stap 4. IP-adres ophalen

Kies één van de volgende methoden:

  • 🧩 Methode 1: via routerbeheer;

  • 🧩 Methode 2: via de App;

  • 🧩 Methode 3: via UDP-broadcast

    (1) Zorg dat apparaat en pc in hetzelfde LAN zitten.
    (2) Open een netwerkdebugtool.
    (3) Selecteer UDP protocol.
    (4) Kies Local Host Addr.
    (5) Stel Local Host Port in op 10000.
    (6) Klik op Open.

    (7) Stel remote in op: 255.255.255.255:8099.

    (8) Vul commando in: AT+IGDEVICEIP.
    (9) Klik Send.

    (10) Het apparaat antwoordt met IP en SN.


3️⃣ HTTP-gebruik

3.1 Verzoekstructuur

HTTP-methoden

MethodeBeschrijving
GETHaalt een specifieke resource op van de server.
POSTVoert een specifieke actie uit op de server.

Verzoek-URL

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

Waarbij:

  • {IP_ADDRESS}: het IP-adres van het apparaat.
  • {API}: de aan te roepen HTTP API.

Voorbeeldverzoek

  • Apparaatgegevens ophalen:
    POST [http://192.168.31.213:8080/rpc/Indevolt.GetData?config={"t":[1664,1665]}](http://192.168.31.213:8080/rpc/Indevolt.GetData?config={%22t%22:[1664,1665]})

cURL-voorbeeld

  • Batterij-SOC ophalen:
    curl -g -X POST -H "Content-Type: application/json" "[http://192.168.1.75:8080/rpc/Indevolt.GetData?config={\"t\":[6002]}](http://192.168.1.75:8080/rpc/Indevolt.GetData?config={\%22t\%22:[6002]})"

3.2 Verzoekfrequentielimieten

Om de stabiliteit van het systeem te waarborgen, gelden de volgende limieten voor alle HTTP API’s:

TypeLimiet
Aanbevolen interval≥ 5 seconden
Minimale ondersteunde interval1 seconde

3.3 Foutcodes

StatuscodeBeschrijvingUitleg
400Bad RequestDe server kan het verzoek niet begrijpen; de client moet het verzoek aanpassen en opnieuw proberen.
401UnauthorizedAuthenticatie vereist; de client moet geldige inloggegevens verstrekken.
403ForbiddenHet verzoek is begrepen maar geweigerd, meestal door onvoldoende rechten.
404Not FoundDe server kan de gevraagde resource niet vinden; mogelijk bestaat deze niet meer.
405Method Not AllowedDe gebruikte methode is niet toegestaan voor deze resource.
408Request TimeoutDe server heeft te lang op het verzoek gewacht; probeer later opnieuw.
409ConflictHet verzoek conflicteert met de huidige status van de resource.
410GoneDe resource is permanent verwijderd en niet meer beschikbaar.
500Internal Server ErrorOnbekende serverfout; het verzoek kan niet worden voltooid.
501Not ImplementedDe server ondersteunt deze methode niet.
502Bad GatewayOngeldige respons ontvangen van een upstream server.
503Service UnavailableServer is tijdelijk niet beschikbaar door overbelasting of onderhoud.
504Gateway TimeoutGeen tijdige respons van upstream server ontvangen.
505HTTP Version Not SupportedDe gebruikte HTTP-versie wordt niet ondersteund.

4️⃣ HTTP Digest

Digest-authenticatie wordt gebruikt om gebruikers te verifiëren zonder wachtwoorden in platte tekst te verzenden.

In HTTP+Digest-modus:

  • Bij eerste gebruik of na fabrieksreset moet eerst de User.SetConfig-interface worden gebruikt om het standaardwachtwoord te wijzigen.
  • Na succesvolle wijziging kunnen andere interfaces worden gebruikt.

Tools

  • ASCII → hex-converter
  • Hex → Base64-converter
  • AES-GCM-encryptietool

Voorbeeld: wachtwoord wijzigen

  1. Converteer het nieuwe wachtwoord, oude wachtwoord en randomwaarde naar hex.

    ASCII-stringHex
    Nieuw wachtwoordqwertyui71 77 65 72 74 79 75 69
    Oud wachtwoordqazwsxed71 61 7a 77 73 78 65 64 00 00 00 00 00 00 00 00 (aangevuld tot 16 bytes)
    Randomwaarde12345631 32 33 34 35 36 00 00 00 00 00 00 (aangevuld tot 12 bytes)
  2. Gebruik een AES-GCM tool om te versleutelen (voer bovenstaande waarden in).

  3. Converteer ciphertext en tag naar Base64.

    HexBase64
    Ciphertext4e b2 90 67 54 02 d4 c4TrKQZ1QC1MQ=
    Tagcf 0b d0 4e 37 a0 e6 bb cb 74 1b cb ce ab 72 9azwvQTjeg5rvLdBvLzqtymg==
  4. Voltooi Digest-authenticatie en verstuur het User.SetConfig-verzoek.

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

    Waarbij:

    • {IP_ADDRESS}: het IP-adres van het apparaat.
    • {PASSWORD}: het met AES-128-GCM versleutelde en naar Base64 geconverteerde wachtwoord.
ParameterTypeBeschrijvingVerplicht
UsernameStringStandaardwaarde opendJa
PasswordStringStandaard apparaatsleutel.

- Met het standaard wachtwoord kan alleen de User.SetConfig-interface worden aangeroepen om het wachtwoord te wijzigen.
- Na het wijzigen van het wachtwoord kunnen met het nieuwe wachtwoord andere interfaces worden aangeroepen.
Verplicht
RealmString- Bij het aanroepen van User.SetConfig om het wachtwoord te wijzigen, moet een AES128-GCM Tag worden opgegeven.
- Bij het aanroepen van andere interfaces kan een willekeurige waarde worden gebruikt.
Verplicht
NonceDigest standaardWillekeurige waarde toegestaanJa
AlgorithmDigest standaardMD5Ja
qopDigest standaardauthJa
Nonce CountDigest standaardWillekeurige waarde toegestaanJa
Client NonceDigest standaardWillekeurige waarde toegestaanJa

5️⃣ API

ComponentBeschrijving
IndevoltLeest apparaatgegevens en bestuurt het INDEVOLT-apparaat.
SysHaalt CMS (Communication Management System)-informatie van het apparaat op.

6️⃣ Indevolt

Indevolt maakt het mogelijk om via standaard HTTP verzoeken realtime gegevens van het apparaat op te halen en besturingscommando’s te verzenden.

6.1 Apparaatgegevens ophalen

Voorbeeld
  • Verzoek

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

  • Response

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

Methode: Indevolt.GetData

Parameters

ParameterTypeBeschrijving
configObjectt: adres(sen) van de gevraagde data, zie kolom cJSON Point.

Return value

JSON-formaat apparaatgegevens.

cJSON-puntcJSON-waardetypeEenheidBeschrijvingEnum-definitieAPIOpmerking
SN
0StringSerienummer van apparaatIndevolt.GetData
Firmwareversie-informatie
1118StringPG2000Series EMSIndevolt.GetData
1109StringPG2000Series BMS-MBIndevolt.GetData
1119StringPG2000Series PCSIndevolt.GetData
1120StringPG2000Series DCDCIndevolt.GetData
1136StringSFA/PFA DCDC1Indevolt.GetData
1137StringSFA/PFA BMS1Indevolt.GetData
1138StringSFA/PFA DCDC2Indevolt.GetData
1139StringSFA/PFA BMS2Indevolt.GetData
1140StringSFA/PFA DCDC3Indevolt.GetData
1141StringSFA/PFA BMS3Indevolt.GetData
1142StringSFA/PFA DCDC4Indevolt.GetData
1143StringSFA/PFA BMS4Indevolt.GetData
1098StringSFA/PFA DCDC5Indevolt.GetData
1099StringSFA/PFA BMS5Indevolt.GetData
Systeeminformatie
7101EnumBedrijfsmodus1: Prioriteit voor eigen verbruik
4: Realtimebesturing
5: Laad-/ontlaadschema
Indevolt.GetData
142NumkWhNominale capaciteitIndevolt.GetData
2618NumNetladen1000: Uitgeschakeld
1001: Ingeschakeld
Indevolt.GetData
11009NumWOmvormer-ingangslimietIndevolt.GetData
2101NumWTotaal AC-ingangsvermogenIndevolt.GetData
2108NumWTotaal AC-uitgangsvermogenIndevolt.GetData
11010NumWTerugleverlimietIndevolt.GetData
11011NumWMaximaal AC-uitgangsvermogenIndevolt.GetData
680NumBypass0: Uitgeschakeld
1: Ingeschakeld
Indevolt.GetData
11039NumBypassmodus0: EPS
1: M-Inv
Indevolt.GetDataAutomatisch schakelen op basis van voorwaartse en omgekeerde stroomrichting
6105Num%Reserve-SOCIndevolt.GetData
7171NumVerlichting0: Uitgeschakeld
1: Ingeschakeld
Indevolt.GetData
8646NumDagenBatterijkalibratie: Cyclus0-60
0: UIT
Indevolt.GetDataBedrijfstijd zonder volledige lading
8647NumTijdBatterijkalibratie: StarttijdDEC-->HEX
H: uur
L: minuut
Indevolt.GetDataBijv.: 256-->0100

01(HEX-H)-->01u
00(HEX-L)-->00min
2802NumWBatterijkalibratie: laadvermogen (AC)Indevolt.GetData
Clusterinformatie
606EnumMaster/slave-identificatie1000: Master
1001: Slave
1002: Geen
Indevolt.GetData
Bypassvermogen
667FloatWBypassvermogenIndevolt.GetDataRealtimevermogen dat via het bypasspad stroomt.
- Netgekoppeld: vermogen kan afkomstig zijn van de micro-omvormer of direct aan belastingen worden geleverd
- Off-grid: vermogen wordt >direct aan belastingen geleverd
Elektrische energie-informatie
2107NumkWhTotale AC-ingangsenergieIndevolt.GetDataTotale energie die van het elektriciteitsnet wordt afgenomen. Deze energie kan worden gebruikt om de batterij op te laden of belastingen rechtstreeks via bypass van stroom te voorzien.
2104NumkWhTotale AC-uitgangsenergieIndevolt.GetDataTotale elektrische energie, inclusief (DC + AC + bypass)
11035NumWhDagelijkse bypass M-Inv-ingangsenergieIndevolt.GetDataDagelijkse energie afkomstig van de micro-omvormer. Alleen beschikbaar in netgekoppelde modus wanneer het systeem met een micro-omvormer is verbonden.
11034NumWhTotale bypass M-Inv-ingangsenergieIndevolt.GetDataTotale energie afkomstig van de micro-omvormer. Alleen beschikbaar in netgekoppelde modus wanneer het systeem met een micro-omvormer is verbonden.
11037NumkWhDagelijkse off-grid bypass-uitgangsenergieIndevolt.GetDataDagelijkse elektrische energie van off-grid bypass-ontlading
2105NumkWhTotale off-grid bypass-uitgangsenergieIndevolt.GetDataTotale elektrische energie van off-grid bypass-ontlading
9285NumWhDagelijkse bypass-uitgangsenergieIndevolt.GetDataDagelijkse elektrische energie van bypass-ontlading (netgekoppeld + off-grid)
9284NumWhTotale bypass-uitgangsenergieIndevolt.GetDataTotale elektrische energie van bypass-ontlading (netgekoppeld + off-grid)
1502NumkWhDagelijkse PV-opwekkingIndevolt.GetData
1505NumWhCumulatieve productieIndevolt.GetData
6004NumkWhDagelijkse laadenergie van batterijIndevolt.GetData
6005NumkWhDagelijkse ontlaadenergie van batterijIndevolt.GetData
6006NumkWhTotale laadenergie van batterijIndevolt.GetData
6007NumkWhTotale ontlaadenergie van batterijIndevolt.GetData
Status elektriciteitsmeter
7120EnumVerbindingsstatus van meter1000: Ingeschakeld
1001: Uitgeschakeld
Indevolt.GetData
11016FloatWMetervermogenIndevolt.GetData
Netinformatie
2600NumVNetspanningIndevolt.GetData
2612NumHzNetfrequentieIndevolt.GetData
Bedrijfsparameters van batterijpakket
6001EnumLaad-/ontlaadstatus van batterij1000: Statisch
1001: Laden
1002: Ontladen
Indevolt.GetData
6000NumWBatterijvermogenIndevolt.GetData
6002Num%Totale batterij-SOCIndevolt.GetData
9008StringBatterij SN-MBIndevolt.GetData
9000Num%Batterij SOC-MBIndevolt.GetData
9004NumVBatterijspanning-MBIndevolt.GetData
9013NumABatterijstroom-MBIndevolt.GetData
9012NumBatterijtemperatuur-MBIndevolt.GetData
9009NumVBatterijcel 1-MBIndevolt.GetData
9011NumVBatterijcel 2-MBIndevolt.GetData
9032StringBatterij SN-Pack1Indevolt.GetData
9016Num%Batterij SOC-Pack1Indevolt.GetData
9020NumVBatterijspanning-Pack1Indevolt.GetData
19173NumABatterijstroom-Pack1Indevolt.GetData
9030NumBatterijtemperatuur-Pack1Indevolt.GetData
9021NumVBatterijcel 1-Pack1Indevolt.GetData
9023NumVBatterijcel 2-Pack1Indevolt.GetData
9051StringBatterij SN-Pack2Indevolt.GetData
9035Num%Batterij SOC-Pack2Indevolt.GetData
9039NumVBatterijspanning-Pack2Indevolt.GetData
19174NumABatterijstroom-Pack2Indevolt.GetData
9049NumBatterijtemperatuur-Pack2Indevolt.GetData
9040NumVBatterijcel 1-Pack2Indevolt.GetData
9042NumVBatterijcel 2-Pack2Indevolt.GetData
9070StringBatterij SN-Pack3Indevolt.GetData
9054Num%Batterij SOC-Pack3Indevolt.GetData
9058NumVBatterijspanning-Pack3Indevolt.GetData
19175NumABatterijstroom-Pack3Indevolt.GetData
9068NumBatterijtemperatuur-Pack3Indevolt.GetData
9059NumVBatterijcel 1-Pack3Indevolt.GetData
9061NumVBatterijcel 2-Pack3Indevolt.GetData
9165NumBatterij SN-Pack4Indevolt.GetData
9149Num%Batterij SOC-Pack4Indevolt.GetData
9153NumVBatterijspanning-Pack4Indevolt.GetData
19176NumABatterijstroom-Pack4Indevolt.GetData
9163NumBatterijtemperatuur-Pack4Indevolt.GetData
9154NumVBatterijcel 1-Pack4Indevolt.GetData
9156NumVBatterijcel 2-Pack4Indevolt.GetData
9218StringBatterij SN-Pack5Indevolt.GetData
9202Num%Batterij SOC-Pack5Indevolt.GetData
9206NumVBatterijspanning-Pack5Indevolt.GetData
19177NumABatterijstroom-Pack5Indevolt.GetData
9216NumBatterijtemperatuur-Pack5Indevolt.GetData
9219NumVBatterijcel 1-Pack5Indevolt.GetData
9222NumVBatterijcel 2-Pack5Indevolt.GetData
PV-bedrijfsparameters
1501NumWTotaal DC-uitgangsvermogenIndevolt.GetData
1632NumADC-ingangsstroom 1Indevolt.GetData
1600NumVDC-ingangsspanning 1Indevolt.GetData
1664NumWDC-ingangsvermogen 1Indevolt.GetData
1633NumADC-ingangsstroom 2Indevolt.GetData
1601NumVDC-ingangsspanning 2Indevolt.GetData
1665NumWDC-ingangsvermogen 2Indevolt.GetData
1634NumADC-ingangsstroom 3Indevolt.GetData
1602NumVDC-ingangsspanning 3Indevolt.GetData
1666NumWDC-ingangsvermogen 3Indevolt.GetData
1635NumADC-ingangsstroom 4Indevolt.GetData
1603NumVDC-ingangsspanning 4Indevolt.GetData
1667NumWDC-ingangsvermogen 4Indevolt.GetData

6.2 Apparaat bedienen

Voorbeeld: real-time besturingsmodus instellen
  • Verzoekvoorbeeld

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

  • Antwoordvoorbeeld

    {"result": true}
Voorbeeld: ontlaadstatus, vermogen en SOC instellen
  • Verzoekvoorbeeld

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

  • Antwoordvoorbeeld

    {"result": true}

Methode: Indevolt.SetData

Parameters

ParameterTypeUitleg
configObjectf: functiekode, altijd 16;
t: registeradres, zie kolom cJSON-punt hieronder;
v: waarde die wordt geschreven, zie kolom waarde hieronder.
cJSON-puntType waardeEenheidBeschrijvingWaardeAPI
47005EnumModusinstelling1: Zelfverbruik geprioriteerd
4: Realtime controle
5: Laad/ontlaadschema
Indevolt.SetData
47015UINTStatusinstelling (alleen beschikbaar in realtime modus)0: Stand-by
1: Laden
2: Ontladen
Indevolt.SetData
47016INTWVermogensinstelling (alleen realtime modus)Max laden: 50–2400
Max ontladen: 50–2400
Indevolt.SetData
47017UINT%SOC-instelling (alleen realtime modus)5–100Indevolt.SetData
1147INTWMax AC-uitgangsvermogen50–2400Indevolt.SetData
1146INTWTerugleverlimiet50–2400Indevolt.SetData
1143UINTNetladen0: Uitgeschakeld
1: Ingeschakeld
Indevolt.SetData
1138INTWIngangslimiet omvormer100–2400Indevolt.SetData
1EnumLastinstelling1: Smart plug
2: Meter
3: Kritische last
4: Aangepast
Indevolt.SetData
7266EnumBypass-instelling0: Uitgeschakeld
1: Ingeschakeld
Indevolt.SetData
1142INT%Back-up SOC-instellingIndevolt.SetData
7265EnumLichtinstelling0: Uit
1: Aan
Indevolt.SetData
info

In de realtime besturingsmodus kunnen status, vermogen en SOC in één keer worden geschreven om het laden en ontladen van het apparaat te regelen.

Antwoord

ParameterTypeUitleg
resultBooltrue: geslaagd; false: mislukt

7️⃣ Sys

Sys wordt gebruikt om firmware-informatie op te halen, inclusief CMS (Communication Management System)-gegevens.

Voorbeeld
  • Verzoekvoorbeeld

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

  • Antwoordvoorbeeld

    {
    "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
    }
    }

Methode: Sys.GetConfig

Antwoord

ParameterTypeUitleg
deviceObjectZie onderstaande tabel voor apparaatgegevens

Apparaatgegevens

ParameterTypeUitleg
hostnameStringApparaatnaam
timezoneNumTijdzone
typeStringApparaatmodel
snStringSerienummer
macStringMAC-adres
fwStringFirmwareversie
f_verStringPG2000-serie CMS
p_verStringPG2000-serie P-file
timeStringHuidige tijd
time_stampNumTijdstempel (seconden)
run_timeNumBedrijfstijd (seconden)

8️⃣ FAQ

HTTP geeft 401 Unauthorized terug.
  • Controleer of de Digest-authenticatie gebruikersnaam en wachtwoord correct zijn.
  • Bij eerste gebruik of na fabrieksreset ondersteunt het apparaat alleen de interface User.SetConfig. Zie Digest-authenticatie. Na het wijzigen van het wachtwoord kun je met het nieuwe wachtwoord alle interfaces gebruiken.
Na het verzenden van een broadcast-opdracht wordt geen IP-adres ontvangen.

De OpenData API is niet ingeschakeld, waardoor deze functie niet beschikbaar is. Zie API inschakelen.