Ga naar hoofdinhoud

HTTP/HTTPS-overzicht

INDEVOLT-energieopslagsystemen bieden REST API's op basis van HTTP/HTTPS, waarmee apparaten binnen het lokale netwerk kunnen worden gemonitord, parameters kunnen worden uitgelezen en apparaten kunnen worden aangestuurd. Alle interfaces gebruiken JSON als gegevensuitwisselingsformaat.


1. Voorbereiding

Stap 1. Tools installeren

  • Postman / cURL: voor het aanroepen van HTTP API’s om apparaatgegevens op te halen of configuraties aan te passen.

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:

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
PowerFlex 3000 AC
PowerFlex 3000 Hybrid
SolidFlex 3000 AC
SolidFlex 3000 AC Pro
SolidFlex 3000 Hybrid Pro
CMS: V1409.08.3034
SolidFlex 1200CMS: V1407.07.202E

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.


2. HTTP-gebruik

2.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]})"

2.2 Verzoekfrequentielimieten

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

TypeLimiet
Aanbevolen aanvraaginterval≥ 5 seconden
Minimaal ondersteund interval1 seconde
Responstijd1 seconde

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

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

4. HTTPS (momenteel niet ondersteund)

HTTPS maakt gebruik van TLS om communicatiegegevens te versleutelen en verifieert de identiteit van de server via digitale certificaten. Hierdoor wordt het risico op afluisteren of manipulatie van gegevens effectief verminderd.

HTTP en HTTPS gebruiken dezelfde API-interfaces. De aanvraagmethode, aanvraagparameters en het responsformaat zijn volledig identiek. Alleen het protocol in het aanvraagadres hoeft te worden gewijzigd van http:// naar https://.


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