Implementer un API REST

Bonjour à tous,
J’essaie de récupérer des infos de bornes de recharges, des Schneider EVLink pro AC.
Elles disposent d’un API EVCE REST API V2 2.0.0 OAS3 (« REST API to monitor and control the EVCE product from BEMS ») mais j’ai zero expérience avec ce type d’intégration dans Jeedom donc j’ai quelques questions de débutant…

1/ l’API dispose de commandes de type GET et POST. Je peux utiliser le plugin scrip pour les effectuer?
2/ la commande « Login » est décrite sur les images ci-dessous, via une requête curl et me retourne un token dans un JSON. Comment est-ce que je passe cette requête…? Via une commande de type SCRIPT?
3/ je ne comprends pas ce que je dois faire avec le token retourné car il ne semble pas être utilisé en paramètre des fonctions de l’API. Une idée?

Merci d’avance
Loic

Bonjour,

En bref: non ca n’ira pas.

En moins bref sans être complet, il va y avoir des problèmes pour:

  • l’authentication
  • les headers des requêtes
  • les verbes (GET, POST…)

C’est là qu’un plugin est nécessaire.
Sauf si vous trouvez un tool qui ferait la passerelle (genre un container docker) evce2mqtt par exemple; si compatible auto discovery ca sera encore plus simple.

Bonjour @Mips et merci
OK mince, pas si simple donc.
Je n’y connait rien en codage de plugins mais j’ai déjà bricolé des scripts sur des Raspberry qui me renvoyaient les infos via un broker MQTT.
Cela pourrait-il être une alternative?

Cette borne communique en modbus.
Il faut juste voir
Si modbus rtu il faut un passerelle IP
Si IP a raccorder directement sur le lan de la maison
Un coup de mymodbus et le tour est joué :slight_smile:

Édit : d’après la Doc c’est du modbus IP.
La table de registre est dispo sur le site de Schneider.
Si tu pars sur cette démarche on peut t’aider

Salut.

Heu je suis pas forcément aussi catégorique que toi, normalement rien n’empêche de lancer une première commande pour récupérer le token d’authentification, de le stocker dans une variable ou une commande et de le réutiliser pour faire des commandes GET ensuite. Je l’ai déja fait pour une API pas vraiment documentée.

Voir par exemple Piloter Mylight depuis votre domotique Jeedom ou HA - Youdom

Ouhhhh je n’avais pas vu cela, très bien :grinning:
En fait il y a 8 bornes reliées à un automate « LMS » pour la gestion dynamique de la puissance du parc. Je me connectais à l’automate directement (qui expose l’API REST en question) mais je n’avais pas pensé à vérifier le protocole disponible sur les bornes directement… Je vais creuser cet aspect, merci

Merci bien je vais regarder cette option également

Le plus simple c’est d’interroger les bornes en modbus

1 « J'aime »

Alors du coup j’essaie de me connecter à une borne via le plugin MyModBus (NB: je monitore déjà des PowerTags de Schneider via ce plugin) mais cela ne fonctionne pas. Dans le log du plugin j’ai ce message:

[2024-07-02 23:27:26][ERROR] : PyModbusClient: Borne IRVE_01 Something went wrong while reading Session energy (command id 217): <class ‹ pymodbus.exceptions.ConnectionException ›> = Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 172.18.68.10:502]. Traceback: <traceback object at 0x7efec4b6a140>

Donc dirait que la connection à la borne ne fonctionne pas? Pour info l’installation comporte également un automate de gestion dynamique de la puissance des bornes. Est-il possible que si l’automate a déjà une connexion Modbus d’ouverte sur la borne en question alors une seconde connexion n’est pas possible?

@Aurel j’essaie de créer la commande d’obtention du token par ta méthode, cf. capture d’écran ci-dessous. Est-ce la bonne méthode pour une requête CURL? La requête a l’air de passer mais il semble qu’il y aie un pb de certificat, donc j’imagine externe à Jeedom?

NB: la requête en question est:

curl -X POST « https://172.18.68.9/api/v2/login/login » -H « accept: application/json » -H « Content-Type: application/json » -d « {"login":"xxxx","password":"xxxxxx"} »

Oui il peux y avoir plusieurs connections
C’est l’avantage du modbus IP.

Merci. Plusieurs connections sur le même port? J’ai pris le 502 par défaut mais ils n’en parlent pas dans la doc des bornes donc je ne suis pas certain

En théorie oui, mais en pratique, ça dépend des appareils.