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
É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 :
- HTTP
- HTTP Digest
- HTTPS (non pris en charge pour le moment)
Configuration via l’application INDEVOLT :
- Appareil connecté au réseau : configuration via le cloud
- Appareil non connecté : configuration via Bluetooth local
- Cloud
- Bluetooth
Étape 3 – Vérifier la version du firmware
Si la version est inférieure à celles ci-dessous, veuillez mettre à jour le firmware.
Modèle Version minimale BK1600 / BK1600Ultra V1.3.0A_R006.072_M4848_00000039 SolidFlex 2000 / PowerFlex 2000 CMS : 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éthode | Description |
|---|---|
| GET | Récupérer une ressource |
| POST | Exé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 :
| Type | Limite |
|---|---|
| Intervalle de requête recommandé | ≥ 5 secondes |
| Intervalle minimal pris en charge | 1 seconde |
3.3 Codes d’erreur
| Code d’état | Description | Explication |
|---|---|---|
| 400 | Bad Request | Le serveur ne comprend pas le format de la requête ; le client doit la corriger puis réessayer. |
| 401 | Unauthorized | La requête nécessite une authentification ; le client doit fournir des identifiants valides. |
| 403 | Forbidden | Le serveur comprend la requête mais refuse de l’exécuter, généralement faute de permissions. |
| 404 | Not Found | La ressource demandée est introuvable ; elle peut ne pas exister ou avoir été supprimée. |
| 405 | Method Not Allowed | La méthode utilisée n’est pas autorisée pour cette ressource (ex. écriture sur une ressource en lecture seule). |
| 408 | Request Timeout | Le délai d’attente de la requête est dépassé ; le client peut réessayer ultérieurement. |
| 409 | Conflict | Conflit avec l’état actuel de la ressource (ex. modification simultanée par plusieurs utilisateurs). |
| 410 | Gone | La ressource demandée a été supprimée définitivement et n’est plus disponible. |
| 500 | Internal Server Error | Le serveur a rencontré une erreur interne et ne peut pas traiter la requête. |
| 501 | Not Implemented | La méthode demandée n’est pas prise en charge par le serveur. |
| 502 | Bad Gateway | Le serveur (passerelle/proxy) a reçu une réponse invalide du serveur en amont. |
| 503 | Service Unavailable | Le serveur est temporairement indisponible (surcharge ou maintenance). |
| 504 | Gateway Timeout | Le serveur (passerelle/proxy) n’a pas reçu de réponse à temps du serveur en amont. |
| 505 | HTTP Version Not Supported | La 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.SetConfigpour 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
-
Convertir le nouveau mot de passe, l’ancien mot de passe et le nombre aléatoire en hexadécimal.
Chaîne ASCII Hexadécimal Nouveau mot de passe qwertyui 71 77 65 72 74 79 75 69 Ancien mot de passe qazwsxed 71 61 7a 77 73 78 65 64 00 00 00 00 00 00 00 00
(complété à 16 octets)Nombre aléatoire 123456 31 32 33 34 35 36 00 00 00 00 00 00
(complété à 12 octets) -
Utiliser un outil AES-GCM pour le chiffrement et saisir les informations correspondantes pour effectuer le chiffrement.
-
Convertir le texte chiffré et le tag en Base64.
Hexadécimal Base64 Chiffrement 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== -
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ètre | Type | Description | Obligatoire |
|---|---|---|---|
| Username | String | Valeur par défaut opend | Obligatoire |
| Password | String | Clé 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 |
| Realm | String | - 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 |
| Nonce | Type par défaut Digest | Valeur aléatoire possible | Obligatoire |
| Algorithm | Type par défaut Digest | MD5 | Obligatoire |
| qop | Type par défaut Digest | auth | Obligatoire |
| Nonce Count | Type par défaut Digest | Valeur aléatoire possible | Obligatoire |
| Client Nonce | Type par défaut Digest | Valeur aléatoire possible | Obligatoire |
5️⃣ API
| Composant | Description |
|---|---|
Indevolt | Lecture des données de l’appareil INDEVOLT et contrôle de l’appareil. |
Sys | Ré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 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.GetDataParamètres
Nom du paramètre Type Description config Object t: adresse des données demandées, voir la colonnePoint cJSONci-dessous.Valeur de retour
Données de l’appareil au format JSON.
- SolidFlex 2000/PowerFlex 2000
- BK1600 / BK1600Ultra
Point cJSON Type de valeur cJSON Unité Description Définition Enum API Remarque SN 0 String SN de l’appareil Indevolt.GetDataInformations de version du firmware 1118 String PG2000Series EMS Indevolt.GetData1109 String PG2000Series BMS-MB Indevolt.GetData1119 String PG2000Series PCS Indevolt.GetData1120 String PG2000Series DCDC Indevolt.GetData1136 String SFA/PFA DCDC1 Indevolt.GetData1137 String SFA/PFA BMS1 Indevolt.GetData1138 String SFA/PFA DCDC2 Indevolt.GetData1139 String SFA/PFA BMS2 Indevolt.GetData1140 String SFA/PFA DCDC3 Indevolt.GetData1141 String SFA/PFA BMS3 Indevolt.GetData1142 String SFA/PFA DCDC4 Indevolt.GetData1143 String SFA/PFA BMS4 Indevolt.GetData1098 String SFA/PFA DCDC5 Indevolt.GetData1099 String SFA/PFA BMS5 Indevolt.GetDataInformations de fonctionnement du système 7101 Enum Mode de fonctionnement 1 : Autoconsommation
4 : Contrôle en temps réel
5 : Plan de charge/déchargeIndevolt.GetData142 Num kWh Capacité nominale Indevolt.GetData2618 Num Charge réseau 1000 : Désactivé
1001 : ActivéIndevolt.GetData11009 Num W Limite d’entrée de l’onduleur Indevolt.GetData2101 Num W Puissance totale d’entrée AC Indevolt.GetData2108 Num W Puissance totale de sortie AC Indevolt.GetData11010 Num W Limite de puissance d’injection réseau Indevolt.GetData11011 Num W Puissance maximale de sortie AC Indevolt.GetData680 Num Bypass 0 : Désactivé
1 : ActivéIndevolt.GetData11039 Num Mode bypass 0 : EPS
1 : M-InvIndevolt.GetDataBasculement automatique selon le courant direct et inverse 6105 Num % SOC de secours Indevolt.GetData7171 Num Lumière 0 : Désactivé
1 : ActivéIndevolt.GetData8646 Num Jour Calibration batterie : cycle 0–60
0 : OFFIndevolt.GetDataDurée de fonctionnement sans charge complète 8647 Num Heure Calibration batterie : heure de démarrage DEC → HEX
H : heure
L : minuteIndevolt.GetDataex. : 256 → 0100
01 (HEX-H) → 01 h
00 (HEX-L) → > 00 min2802 Num W Calibration batterie : puissance de charge (AC) Indevolt.GetDataInformations de cluster 606 Enum Identification maître/esclave 1000 : Maître
1001 : Esclave
1002 : AucunIndevolt.GetDataPuissance bypass 667 Float W Puissance bypass Indevolt.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 chargesInformations d’énergie électrique 2107 Num kWh Énergie AC totale d’entrée Indevolt.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. 2104 Num kWh Énergie AC totale de sortie Indevolt.GetDataÉnergie électrique globale, incluant (DC + AC + Bypass) 11035 Num Wh É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. 11034 Num Wh É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. 11037 Num kWh Énergie journalière de sortie bypass hors réseau Indevolt.GetDataÉnergie quotidienne de décharge via bypass hors réseau 2105 Num kWh Énergie totale de sortie bypass hors réseau Indevolt.GetDataÉnergie totale de décharge via bypass hors réseau 9285 Num Wh Énergie journalière de sortie bypass Indevolt.GetDataÉnergie quotidienne de décharge via bypass (réseau + hors réseau) 9284 Num Wh Énergie totale de sortie bypass Indevolt.GetDataÉnergie totale de décharge via bypass (réseau + hors réseau) 1502 Num kWh Production PV quotidienne Indevolt.GetData1505 Num Wh Production cumulée Indevolt.GetData6004 Num kWh Énergie de charge batterie journalière Indevolt.GetData6005 Num kWh Énergie de décharge batterie journalière Indevolt.GetData6006 Num kWh Énergie totale de charge batterie Indevolt.GetData6007 Num kWh Énergie totale de décharge batterie Indevolt.GetDataÉtat du compteur électrique 7120 Enum État de connexion du compteur 1000 : Activé
1001 : DésactivéIndevolt.GetData11016 Float W Puissance du compteur Indevolt.GetDataInformations réseau 2600 Num V Tension du réseau Indevolt.GetData2612 Num Hz Fréquence du réseau Indevolt.GetDataParamètres de fonctionnement du pack batterie 6001 Enum État charge/décharge batterie 1000 : Statique
1001 : Charge
1002 : DéchargeIndevolt.GetData6000 Num W Puissance batterie Indevolt.GetData6002 Num % SOC batterie total Indevolt.GetData9008 String Numéro de série batterie - MB Indevolt.GetData9000 Num % SOC batterie - MB Indevolt.GetData9004 Num V Tension batterie - MB Indevolt.GetData9013 Num A Courant batterie I-MB Indevolt.GetData9012 Num ℃ Température batterie-MB Indevolt.GetData9009 Num V Tension cellule 1 batterie-MB Indevolt.GetData9011 Num V Tension cellule 2 batterie-MB Indevolt.GetData9032 String Numéro de série batterie-Pack1 Indevolt.GetData9016 Num % SOC batterie-Pack1 Indevolt.GetData9020 Num V Tension batterie-Pack1 Indevolt.GetData19173 Num A Courant batterie-Pack1 Indevolt.GetData9030 Num ℃ Température batterie-Pack1 Indevolt.GetData9021 Num V Tension cellule 1 batterie-Pack1 Indevolt.GetData9023 Num V Tension cellule 2 batterie-Pack1 Indevolt.GetData9051 String Numéro de série batterie-Pack2 Indevolt.GetData9035 Num % SOC batterie-Pack2 Indevolt.GetData9039 Num V Tension batterie-Pack2 Indevolt.GetData19174 Num A Courant batterie-Pack2 Indevolt.GetData9049 Num ℃ Température batterie-Pack2 Indevolt.GetData9040 Num V Tension cellule 1 batterie-Pack2 Indevolt.GetData9042 Num V Tension cellule 2 batterie-Pack2 Indevolt.GetData9070 String Numéro de série batterie-Pack3 Indevolt.GetData9054 Num % SOC batterie-Pack3 Indevolt.GetData9058 Num V Tension batterie-Pack3 Indevolt.GetData19175 Num A Courant batterie-Pack3 Indevolt.GetData9068 Num ℃ Température batterie-Pack3 Indevolt.GetData9059 Num V Tension cellule 1 batterie-Pack3 Indevolt.GetData9061 Num V Tension cellule 2 batterie-Pack3 Indevolt.GetData9165 Num Numéro de série batterie-Pack4 Indevolt.GetData9149 Num % SOC batterie-Pack4 Indevolt.GetData9153 Num V Tension batterie-Pack4 Indevolt.GetData19176 Num A Courant batterie-Pack4 Indevolt.GetData9163 Num ℃ Température batterie-Pack4 Indevolt.GetData9154 Num V Tension cellule 1 batterie-Pack4 Indevolt.GetData9156 Num V Tension cellule 2 batterie-Pack4 Indevolt.GetData9218 String Numéro de série batterie-Pack5 Indevolt.GetData9202 Num % SOC batterie-Pack5 Indevolt.GetData9206 Num V Tension batterie-Pack5 Indevolt.GetData19177 Num A Courant batterie-Pack5 Indevolt.GetData9216 Num ℃ Température batterie-Pack5 Indevolt.GetData9219 Num V Tension cellule 1 batterie-Pack5 Indevolt.GetData9222 Num V Tension cellule 2 batterie-Pack5 Indevolt.GetDataParamètres de fonctionnement PV 1501 Num W Puissance totale de sortie DC Indevolt.GetData1632 Num A Courant d’entrée DC 1 Indevolt.GetData1600 Num V Tension d’entrée DC 1 Indevolt.GetData1664 Num W Puissance d’entrée DC 1 Indevolt.GetData1633 Num A Courant d’entrée DC 2 Indevolt.GetData1601 Num V Tension d’entrée DC 2 Indevolt.GetData1665 Num W Puissance d’entrée DC 2 Indevolt.GetData1634 Num A Courant d’entrée DC 3 Indevolt.GetData1602 Num V Tension d’entrée DC 3 Indevolt.GetData1666 Num W Puissance d’entrée DC 3 Indevolt.GetData1635 Num A Courant d’entrée DC 4 Indevolt.GetData1603 Num V Tension d’entrée DC 4 Indevolt.GetData1667 Num W Puissance d’entrée DC 4 Indevolt.GetData
Point cJSON Type de valeur cJSON Unité Description Définition Enum API 0 Float SN de l’appareil Indevolt.GetData7101 Enum Mode de fonctionnement 0: Portable extérieur
1: Autoconsommation
5: Plan de charge/déchargeIndevolt.GetData1664 Float W Puissance d’entrée DC 1 Indevolt.GetData1665 Float W Puissance d’entrée DC 2 Indevolt.GetData2108 Float W Puissance de sortie AC totale Indevolt.GetData1502 Float kWh Production quotidienne Indevolt.GetData1505 Float 0.001kWh Production cumulée Indevolt.GetData2101 Float W Puissance d’entrée AC totale Indevolt.GetData2107 Float kWh Énergie d’entrée AC totale Indevolt.GetData1501 Float W Puissance de sortie DC totale Indevolt.GetData6000 Float W Puissance de la batterie Indevolt.GetData6001 Enum État de charge/décharge de la batterie 1000: Statique
1001: Charge
1002: DéchargeIndevolt.GetData6002 Float % SOC de la batterie Indevolt.GetData6105 Float % Alimentation de secours Indevolt.GetData6004 Float kWh Énergie de charge quotidienne de la batterie Indevolt.GetData6005 Float kWh Énergie de décharge quotidienne de la batterie Indevolt.GetData6006 Float kWh Énergie totale de charge de la batterie Indevolt.GetData6007 Float kWh Énergie totale de décharge de la batterie Indevolt.GetData7120 Enum État de connexion du compteur 1000: Activé
1001: DésactivéIndevolt.GetData21028 Float W Puissance du compteur Indevolt.GetData
6.2 Contrôler l’appareil
-
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 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.SetDataParamètres
Nom du paramètre Type Description config Object f: code fonction, utiliser 16 ;t: adresse du registre, voir la colonnePoint cJSONci-dessous ;v: valeurs à écrire, voir la colonneValeurci-dessous.
- SolidFlex 2000 / PowerFlex 2000
- BK1600 / BK1600Ultra
Point cJSON Type de valeur cJSON Unité Description Valeur API 47005 Enum Paramétrage du mode 1: Autoconsommation
4: Contrôle en temps réel
5: Plan de charge/déchargeIndevolt.SetData47015 UINT Paramétrage de l’état (disponible uniquement en mode contrôle en temps réel) 0: Veille
1: Charge
2: DéchargeIndevolt.SetData47016 INT W Paramétrage de la puissance (disponible uniquement en mode contrôle en temps réel) Charge max : 50–2400
Décharge max : 50–2400Indevolt.SetData47017 UINT % Paramétrage du SOC (disponible uniquement en mode contrôle en temps réel) 5-100 Indevolt.SetData1147 INT W Paramétrage de la puissance de sortie AC max 50-2400 Indevolt.SetData1146 INT W Paramétrage de la limite d’injection réseau 50-2400 Indevolt.SetData1143 UINT Paramétrage de la charge réseau 0: Désactivé
1: ActivéIndevolt.SetData1138 INT W Paramétrage de la limite d’entrée de l’onduleur 100-2400 Indevolt.SetData1 Enum Paramétrage de la charge 1: Prise intelligente
2: Compteur
3: Charge clé
4: PersonnaliséIndevolt.SetData7266 Enum Paramétrage du bypass 0: Désactivé
1: ActivéIndevolt.SetData1142 INT % Paramétrage du SOC de secours Indevolt.SetData7265 Enum Paramétrage de l’éclairage 0: Désactivé
1: ActivéIndevolt.SetData
Point cJSON Type de valeur cJSON Unité Description Valeur API 47005 Enum Mode 1: Autoconsommation
2: Plan de charge/décharge
4: Contrôle en temps réelIndevolt.SetData47015 UINT État 0: Veille
1: Charge
2: DéchargeIndevolt.SetData47016 INT W Puissance Charge : 0-1200
Décharge : 0-800Indevolt.SetData47017 UINT % SOC 0-100 Indevolt.SetDatainfoEn 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ètre Type Description resultBool true: 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 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.GetConfigValeur de retour
Nom du paramètre Type Description deviceObject Informations de configuration de l’appareil, voir le tableau ci-dessous. Configuration de l’appareil
Nom du paramètre Type Description hostnameString Nom de l’appareil timezoneNum Fuseau horaire typeString Modèle de l’appareil snString Numéro de série de l’appareil macString Adresse MAC de l’appareil fwString Version du firmware de l’appareil f_verString CMS de la série PG2000 p_verString Fichier P de la série PG2000 timeString Heure actuelle time_stampNum Horodatage actuel (en secondes) run_timeNum Temps 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.









