Aller au contenu principal

API OpenData

1️⃣ Introduction

OpenData est un framework de communication léger conçu pour les appareils IoT INDEVOLT basés sur le WiFi. Les appareils se connectent au réseau local via WiFi et prennent en charge à la fois la remontée active des données et la réponse aux requêtes externes.

Fonctionnalités principales

  • Accès aux données : récupération en temps réel des données de l’appareil
  • Contrôle de l’appareil : modification dynamique des paramètres et configurations

Cas d’utilisation

  • Réception de requêtes HTTP externes

2️⃣ Préparation

Étape 1 – Installer les outils

  • Postman / cURL : pour appeler les API HTTP afin de récupérer des données ou modifier la configuration
  • Un outil de diagnostic réseau (ex. NetAssist) : pour recevoir les broadcasts UDP

Étape 2 – Activer l’API

Par défaut, l’API est désactivée. Elle doit être activée avant utilisation. OpenData propose trois modes :

Configuration via l’application INDEVOLT :

  • Appareil connecté au réseau : configuration via le cloud
  • Appareil non connecté : configuration via Bluetooth local

Étape 3 – Vérifier la version du firmware

Si la version est inférieure à celles ci-dessous, veuillez mettre à jour le firmware.

ModèleVersion minimale
BK1600 / BK1600UltraV1.3.0A_R006.072_M4848_00000039
SolidFlex 2000 / PowerFlex 2000CMS : V1406.07.002E

Étape 4 – Obtenir l’adresse IP

Choisissez l’une des trois méthodes suivantes :

  • 🧩Méthode 1 : consulter l’interface d’administration du routeur ;

  • 🧩Méthode 2 : consulter les paramètres de l’appareil dans l’application ;

  • 🧩Méthode 3 : obtenir l’adresse IP via une diffusion UDP

    (1) Assurez-vous que l’appareil et l’ordinateur sont connectés au même réseau local Wi-Fi.
    (2) Ouvrez un outil de débogage réseau.
    (3) Sélectionnez le protocole UDP.
    (4) Choisissez Local Host Addr.
    (5) Définissez Local Host Port sur 10000.
    (6) Cliquez sur Open.

    (7) Configurez dans Remote l’adresse de diffusion et le port : 255.255.255.255:8099.

    (8) Saisissez la commande AT dans le champ de message : AT+IGDEVICEIP.
    (9) Cliquez sur Send.

    (10) Les appareils INDEVOLT présents sur le même réseau local renverront leur adresse IP ainsi que leur numéro de série (SN).


3️⃣ Utilisation HTTP

3.1 Structure de requête

Méthodes

MéthodeDescription
GETRécupérer une ressource
POSTExécuter une action

URL

http://{IP_ADDRESS}:8080/rpc/{API}
  • {IP_ADDRESS} : adresse IP de l’appareil
  • {API} : API appelée

Exemple

  • Récupérer les données de l’appareil :

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

Exemple cURL

  • Récupérer le SOC de la batterie :

    curl -g -X POST -H "Content-Type: application/json" "http://192.168.1.75:8080/rpc/Indevolt.GetData?config={\"t\":[6002]}"

3.2 Fréquence des requêtes

Afin de garantir la stabilité du système, toutes les API HTTP sont soumises aux limitations suivantes :

TypeLimite
Intervalle de requête recommandé≥ 5 secondes
Intervalle minimal pris en charge1 seconde

3.3 Codes d’erreur

Code d’étatDescriptionExplication
400Bad RequestLe serveur ne comprend pas le format de la requête ; le client doit la corriger puis réessayer.
401UnauthorizedLa requête nécessite une authentification ; le client doit fournir des identifiants valides.
403ForbiddenLe serveur comprend la requête mais refuse de l’exécuter, généralement faute de permissions.
404Not FoundLa ressource demandée est introuvable ; elle peut ne pas exister ou avoir été supprimée.
405Method Not AllowedLa méthode utilisée n’est pas autorisée pour cette ressource (ex. écriture sur une ressource en lecture seule).
408Request TimeoutLe délai d’attente de la requête est dépassé ; le client peut réessayer ultérieurement.
409ConflictConflit avec l’état actuel de la ressource (ex. modification simultanée par plusieurs utilisateurs).
410GoneLa ressource demandée a été supprimée définitivement et n’est plus disponible.
500Internal Server ErrorLe serveur a rencontré une erreur interne et ne peut pas traiter la requête.
501Not ImplementedLa méthode demandée n’est pas prise en charge par le serveur.
502Bad GatewayLe serveur (passerelle/proxy) a reçu une réponse invalide du serveur en amont.
503Service UnavailableLe serveur est temporairement indisponible (surcharge ou maintenance).
504Gateway TimeoutLe serveur (passerelle/proxy) n’a pas reçu de réponse à temps du serveur en amont.
505HTTP Version Not SupportedLa version HTTP utilisée n’est pas prise en charge par le serveur.

4️⃣ HTTP Digest

L’authentification Digest permet de vérifier l’identité sans transmettre le mot de passe en clair.

En mode HTTP + Digest :

  • Lors de la première utilisation ou après une restauration des paramètres d’usine, il est nécessaire d’utiliser l’interface User.SetConfig pour modifier le mot de passe par défaut.
  • Une fois le mot de passe modifié avec succès, les autres interfaces peuvent être utilisées.

Outils

  • Convertisseur ASCII → hexadécimal
  • Convertisseur hexadécimal → Base64
  • Outil de chiffrement AES-GCM

Exemple de modification de mot de passe

  1. Convertir le nouveau mot de passe, l’ancien mot de passe et le nombre aléatoire en hexadécimal.

    Chaîne ASCIIHexadécimal
    Nouveau mot de passeqwertyui71 77 65 72 74 79 75 69
    Ancien mot de passeqazwsxed71 61 7a 77 73 78 65 64 00 00 00 00 00 00 00 00
    (complété à 16 octets)
    Nombre aléatoire12345631 32 33 34 35 36 00 00 00 00 00 00
    (complété à 12 octets)
  2. Utiliser un outil AES-GCM pour le chiffrement et saisir les informations correspondantes pour effectuer le chiffrement.

  3. Convertir le texte chiffré et le tag en Base64.

    HexadécimalBase64
    Chiffrement4e b2 90 67 54 02 d4 c4TrKQZ1QC1MQ=
    Tagcf 0b d0 4e 37 a0 e6 bb cb 74 1b cb ce ab 72 9azwvQTjeg5rvLdBvLzqtymg==
  4. Compléter les champs de Digest Authentication et envoyer la requête User.SetConfig.

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

    Où :

    • {IP_ADDRESS} : adresse IP de l’appareil.
    • {PASSWORD} : texte chiffré encodé en Base64 via AES128-GCM.
Nom du paramètreTypeDescriptionObligatoire
UsernameStringValeur par défaut opendObligatoire
PasswordStringClé par défaut de l’appareil.

- Avec le mot de passe par défaut, seule l’API User.SetConfig peut être appelée pour modifier le mot de passe.
- Après modification, le nouveau mot de passe permet d’appeler les autres API.
Obligatoire
RealmString- Lors de l’appel à User.SetConfig, le tag AES128-GCM est requis.
- Pour les autres API, une valeur aléatoire peut être utilisée.
Obligatoire
NonceType par défaut DigestValeur aléatoire possibleObligatoire
AlgorithmType par défaut DigestMD5Obligatoire
qopType par défaut DigestauthObligatoire
Nonce CountType par défaut DigestValeur aléatoire possibleObligatoire
Client NonceType par défaut DigestValeur aléatoire possibleObligatoire

5️⃣ API

ComposantDescription
IndevoltLecture des données de l’appareil INDEVOLT et contrôle de l’appareil.
SysRécupération des informations CMS (Communication Management System) de l’appareil.

6️⃣ Indevolt

Indevolt permet d’obtenir les données en temps réel de l’appareil et d’envoyer des commandes de contrôle via des requêtes HTTP standard.

6.1 Récupérer les données de l’appareil

Exemple
  • Exemple de requête

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

  • Exemple de réponse

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

Méthode : Indevolt.GetData

Paramètres

Nom du paramètreTypeDescription
configObjectt : adresse des données demandées, voir la colonne Point cJSON ci-dessous.

Valeur de retour

Données de l’appareil au format JSON.

Point cJSONType de valeur cJSONUnitéDescriptionDéfinition EnumAPIRemarque
SN
0StringSN de l’appareilIndevolt.GetData
Informations de version du firmware
1118StringPG2000Series EMSIndevolt.GetData
1109StringPG2000Series BMS-MBIndevolt.GetData
1119StringPG2000Series PCSIndevolt.GetData
1120StringPG2000Series DCDCIndevolt.GetData
1136StringSFA/PFA DCDC1 Indevolt.GetData
1137StringSFA/PFA BMS1 Indevolt.GetData
1138StringSFA/PFA DCDC2Indevolt.GetData
1139StringSFA/PFA BMS2 Indevolt.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
Informations de fonctionnement du système
7101EnumMode de fonctionnement1 : Autoconsommation
4 : Contrôle en temps réel
5 : Plan de charge/décharge
Indevolt.GetData
142NumkWhCapacité nominaleIndevolt.GetData
2618NumCharge réseau1000 : Désactivé
1001 : Activé
Indevolt.GetData
11009NumWLimite d’entrée de l’onduleurIndevolt.GetData
2101NumWPuissance totale d’entrée ACIndevolt.GetData
2108NumWPuissance totale de sortie ACIndevolt.GetData
11010NumWLimite de puissance d’injection réseauIndevolt.GetData
11011NumWPuissance maximale de sortie ACIndevolt.GetData
680NumBypass0 : Désactivé
1 : Activé
Indevolt.GetData
11039NumMode bypass0 : EPS
1 : M-Inv
Indevolt.GetDataBasculement automatique selon le courant direct et inverse
6105Num%SOC de secoursIndevolt.GetData
7171NumLumière0 : Désactivé
1 : Activé
Indevolt.GetData
8646NumJourCalibration batterie : cycle0–60
0 : OFF
Indevolt.GetDataDurée de fonctionnement sans charge complète
8647NumHeureCalibration batterie : heure de démarrageDEC → HEX
H : heure
L : minute
Indevolt.GetDataex. : 256 → 0100

01 (HEX-H) → 01 h
00 (HEX-L) → > 00 min
2802NumWCalibration batterie : puissance de charge (AC)Indevolt.GetData
Informations de cluster
606EnumIdentification maître/esclave1000 : Maître
1001 : Esclave
1002 : Aucun
Indevolt.GetData
Puissance bypass
667FloatWPuissance bypassIndevolt.GetDataPuissance en temps réel transitant par le chemin bypass.
- mode connecté au réseau : l’énergie peut provenir du micro-onduleur ou être fournie directement aux charges
- Mode hors réseau : l’énergie est directement fournie aux charges
Informations d’énergie électrique
2107NumkWhÉnergie AC totale d’entréeIndevolt.GetDataÉnergie totale importée du réseau. Elle peut être utilisée pour charger la batterie ou alimenter directement les charges via le bypass.
2104NumkWhÉnergie AC totale de sortieIndevolt.GetDataÉnergie électrique globale, incluant (DC + AC + Bypass)
11035NumWhÉnergie journalière d’entrée micro-onduleur (bypass)Indevolt.GetDataÉnergie quotidienne provenant du micro-onduleur. Disponible uniquement en mode connecté au réseau, lorsque le système est relié à un micro-onduleur.
11034NumWhÉnergie totale d’entrée micro-onduleur (bypass)Indevolt.GetDataÉnergie totale provenant du micro-onduleur. Disponible uniquement en mode connecté au réseau, lorsque le système est relié à un micro-onduleur.
11037NumkWhÉnergie journalière de sortie bypass hors réseauIndevolt.GetDataÉnergie quotidienne de décharge via bypass hors réseau
2105NumkWhÉnergie totale de sortie bypass hors réseauIndevolt.GetDataÉnergie totale de décharge via bypass hors réseau
9285NumWhÉnergie journalière de sortie bypassIndevolt.GetDataÉnergie quotidienne de décharge via bypass (réseau + hors réseau)
9284NumWhÉnergie totale de sortie bypassIndevolt.GetDataÉnergie totale de décharge via bypass (réseau + hors réseau)
1502NumkWhProduction PV quotidienneIndevolt.GetData
1505NumWhProduction cumuléeIndevolt.GetData
6004NumkWhÉnergie de charge batterie journalièreIndevolt.GetData
6005NumkWhÉnergie de décharge batterie journalièreIndevolt.GetData
6006NumkWhÉnergie totale de charge batterieIndevolt.GetData
6007NumkWhÉnergie totale de décharge batterieIndevolt.GetData
État du compteur électrique
7120EnumÉtat de connexion du compteur1000 : Activé
1001 : Désactivé
Indevolt.GetData
11016FloatWPuissance du compteurIndevolt.GetData
Informations réseau
2600NumVTension du réseauIndevolt.GetData
2612NumHzFréquence du réseauIndevolt.GetData
Paramètres de fonctionnement du pack batterie
6001EnumÉtat charge/décharge batterie1000 : Statique
1001 : Charge
1002 : Décharge
Indevolt.GetData
6000NumWPuissance batterieIndevolt.GetData
6002Num%SOC batterie totalIndevolt.GetData
9008StringNuméro de série batterie - MBIndevolt.GetData
9000Num%SOC batterie - MBIndevolt.GetData
9004NumVTension batterie - MBIndevolt.GetData
9013NumACourant batterie I-MBIndevolt.GetData
9012NumTempérature batterie-MBIndevolt.GetData
9009NumVTension cellule 1 batterie-MBIndevolt.GetData
9011NumVTension cellule 2 batterie-MBIndevolt.GetData
9032StringNuméro de série batterie-Pack1Indevolt.GetData
9016Num%SOC batterie-Pack1Indevolt.GetData
9020NumVTension batterie-Pack1Indevolt.GetData
19173NumACourant batterie-Pack1Indevolt.GetData
9030NumTempérature batterie-Pack1Indevolt.GetData
9021NumVTension cellule 1 batterie-Pack1Indevolt.GetData
9023NumVTension cellule 2 batterie-Pack1Indevolt.GetData
9051StringNuméro de série batterie-Pack2Indevolt.GetData
9035Num%SOC batterie-Pack2Indevolt.GetData
9039NumVTension batterie-Pack2Indevolt.GetData
19174NumACourant batterie-Pack2Indevolt.GetData
9049NumTempérature batterie-Pack2Indevolt.GetData
9040NumVTension cellule 1 batterie-Pack2Indevolt.GetData
9042NumVTension cellule 2 batterie-Pack2Indevolt.GetData
9070StringNuméro de série batterie-Pack3Indevolt.GetData
9054Num%SOC batterie-Pack3Indevolt.GetData
9058NumVTension batterie-Pack3Indevolt.GetData
19175NumACourant batterie-Pack3Indevolt.GetData
9068NumTempérature batterie-Pack3Indevolt.GetData
9059NumVTension cellule 1 batterie-Pack3Indevolt.GetData
9061NumVTension cellule 2 batterie-Pack3Indevolt.GetData
9165NumNuméro de série batterie-Pack4Indevolt.GetData
9149Num%SOC batterie-Pack4Indevolt.GetData
9153NumVTension batterie-Pack4Indevolt.GetData
19176NumACourant batterie-Pack4Indevolt.GetData
9163NumTempérature batterie-Pack4Indevolt.GetData
9154NumVTension cellule 1 batterie-Pack4Indevolt.GetData
9156NumVTension cellule 2 batterie-Pack4Indevolt.GetData
9218StringNuméro de série batterie-Pack5Indevolt.GetData
9202Num%SOC batterie-Pack5Indevolt.GetData
9206NumVTension batterie-Pack5Indevolt.GetData
19177NumACourant batterie-Pack5Indevolt.GetData
9216NumTempérature batterie-Pack5Indevolt.GetData
9219NumVTension cellule 1 batterie-Pack5Indevolt.GetData
9222NumVTension cellule 2 batterie-Pack5Indevolt.GetData
Paramètres de fonctionnement PV
1501NumWPuissance totale de sortie DCIndevolt.GetData
1632NumACourant d’entrée DC 1Indevolt.GetData
1600NumVTension d’entrée DC 1Indevolt.GetData
1664NumWPuissance d’entrée DC 1Indevolt.GetData
1633NumACourant d’entrée DC 2Indevolt.GetData
1601NumVTension d’entrée DC 2Indevolt.GetData
1665NumWPuissance d’entrée DC 2Indevolt.GetData
1634NumACourant d’entrée DC 3Indevolt.GetData
1602NumVTension d’entrée DC 3Indevolt.GetData
1666NumWPuissance d’entrée DC 3Indevolt.GetData
1635NumACourant d’entrée DC 4Indevolt.GetData
1603NumVTension d’entrée DC 4Indevolt.GetData
1667NumWPuissance d’entrée DC 4Indevolt.GetData

6.2 Contrôler l’appareil

Exemple : définir le mode de contrôle en temps réel
  • Exemple de requête

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

  • Exemple de réponse

    {"result": true}
Exemple : définir l’état de décharge, la puissance et le SOC
  • Exemple de requête

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

  • Exemple de réponse

    {"result": true}

Méthode : Indevolt.SetData

Paramètres

Nom du paramètreTypeDescription
configObjectf : code fonction, utiliser 16 ;
t : adresse du registre, voir la colonne Point cJSON ci-dessous ;
v : valeurs à écrire, voir la colonne Valeur ci-dessous.
Point cJSONType de valeur cJSONUnitéDescriptionValeurAPI
47005EnumParamétrage du mode1: Autoconsommation
4: Contrôle en temps réel
5: Plan de charge/décharge
Indevolt.SetData
47015UINTParamétrage de l’état (disponible uniquement en mode contrôle en temps réel)0: Veille
1: Charge
2: Décharge
Indevolt.SetData
47016INTWParamétrage de la puissance (disponible uniquement en mode contrôle en temps réel)Charge max : 50–2400
Décharge max : 50–2400
Indevolt.SetData
47017UINT%Paramétrage du SOC (disponible uniquement en mode contrôle en temps réel)5-100Indevolt.SetData
1147INTWParamétrage de la puissance de sortie AC max50-2400Indevolt.SetData
1146INTWParamétrage de la limite d’injection réseau50-2400Indevolt.SetData
1143UINTParamétrage de la charge réseau0: Désactivé
1: Activé
Indevolt.SetData
1138INTWParamétrage de la limite d’entrée de l’onduleur100-2400Indevolt.SetData
1EnumParamétrage de la charge1: Prise intelligente
2: Compteur
3: Charge clé
4: Personnalisé
Indevolt.SetData
7266EnumParamétrage du bypass0: Désactivé
1: Activé
Indevolt.SetData
1142INT%Paramétrage du SOC de secoursIndevolt.SetData
7265EnumParamétrage de l’éclairage0: Désactivé
1: Activé
Indevolt.SetData
info

En mode contrôle en temps réel, il est possible d’écrire simultanément l’état, la puissance et le SOC pour contrôler la charge/décharge de l’appareil.

Valeur de retour

Nom du paramètreTypeDescription
resultBooltrue : succès ; false : échec

7️⃣ Sys

Sys permet d’obtenir les informations de version du firmware, y compris les informations CMS (Communication Management System).

Exemple
  • Exemple de requête

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

  • Exemple de réponse

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

Méthode : Sys.GetConfig

Valeur de retour

Nom du paramètreTypeDescription
deviceObjectInformations de configuration de l’appareil, voir le tableau ci-dessous.

Configuration de l’appareil

Nom du paramètreTypeDescription
hostnameStringNom de l’appareil
timezoneNumFuseau horaire
typeStringModèle de l’appareil
snStringNuméro de série de l’appareil
macStringAdresse MAC de l’appareil
fwStringVersion du firmware de l’appareil
f_verStringCMS de la série PG2000
p_verStringFichier P de la série PG2000
timeStringHeure actuelle
time_stampNumHorodatage actuel (en secondes)
run_timeNumTemps de fonctionnement de l’appareil (en secondes)

8️⃣ FAQ

Q: La requête HTTP retourne 401 Unauthorized.
  • Vérifiez que le nom d’utilisateur et le mot de passe Digest sont corrects.
  • Lors de la première utilisation / après réinitialisation d’usine, l’appareil ne permet d’accéder qu’à l’interface User.SetConfig. Voir Authentification Digest. Après modification du mot de passe, utilisez le nouveau mot de passe pour accéder aux autres interfaces.
Q: L’appareil ne renvoie pas l’adresse IP après l’envoi de la commande de broadcast.

L’API OpenData n’est pas activée, ce qui rend cette fonctionnalité indisponible. Voir Activer l’API.