Aller au contenu principal

HTTP / HTTPS Introduction

Les systèmes de stockage d'énergie compacts INDEVOLT fournissent une API REST basée sur HTTP/HTTPS, qui peut être utilisée pour la surveillance des appareils, la lecture des paramètres et le contrôle dans un réseau local. Toutes les interfaces utilisent JSON comme format d'échange de données.


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

É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 / 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

É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).


2. Utilisation HTTP

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

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

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

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

4. HTTPS (non pris en charge pour le moment)

HTTPS chiffre les données de communication à l'aide de TLS et vérifie l'identité du serveur via des certificats numériques, ce qui permet de protéger efficacement les données contre l'interception ou la modification.

HTTP et HTTPS utilisent les mêmes interfaces API. Les méthodes de requête, les paramètres de requête et les formats de réponse sont exactement identiques. Il suffit de remplacer le protocole dans l'adresse de requête de http:// par https://.


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