Aller au contenu
Dvittorio

Legrand Thermostat connecté SMARTHER

Recommended Posts

Salut tout le monde,
Est-ce que quelqu'un a réussi à s'interfacer via l'API Legrand le Thermostat connecté SMARTHER?

https://developer.legrand.com/docs/services/5a00867ea719680f8450b985/operations/5a00867fa719681db4fd473f

 
c'est le thermostat
 
J'ai réussi à le lire après l'inscription, mais seulement à partir du web, malheureusement
Avec HC2, je ne peux pas m'authentifier
 
mercì
 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

je n'ai pas regardé tes liens, mais ce que je peux déjà poser comme questions :

- je suppose que tu veux lire les valeurs depuis un VD ?

- est-ce que l'api fontionne en https ? Si oui, il n'est pas possible de l'interroger depuis des VD, mais uniquement depuis une scène

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 7 minutes, jojo a dit :

je n'ai pas regardé tes liens, mais ce que je peux déjà poser comme questions :

- je suppose que tu veux lire les valeurs depuis un VD ?

- est-ce que l'api fontionne en https ? Si oui, il n'est pas possible de l'interroger depuis des VD, mais uniquement depuis une scène 

les API fonctionnent en https.
Je voulais créer un VD avec des labels gérés par une scène LUA.
le problème principal est que je dois faire une authentification Oauth2 mais il faut forcément un redirect_uri avec une page de connexion et c'est impossible pour moi

 

image.png.846a6c8771c4b369b55e91abc9c2011e.png

Partager ce message


Lien à poster
Partager sur d’autres sites

on arrive déjà aux limites de mes connaissances ...

 mais passer par une page intermédiaire d'authentification, ça ne me semble pas possible depuis la HC2.

Mais il devrait te générer un token qui tu permettrait de bypasser cette étape ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Si j'utilise l'appel Oauth2, je reçois un token que je dois utiliser pour les prochains appels d'API.
Le problème que le token est lié à l'interface que j'utilise en ce moment et s'il me redirige vers le web, le token sera valide pour le web et non pour le HC2

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

il y a 17 minutes, Dvittorio a dit :

token est lié à l'interface

TOn token est lié à l'interface ? Une fois que tu as ton token, tu passes bien par une URL ?

 

Celle ci modifée avec tes infos fonctionnent-elles ? https://api.developer.legrand.com/smarther/{apiVersion}/chronothermostat/thermoregulation/addressLocation/plants/{plantId}/modules/parameter/id/value/{moduleId}/measures

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 18 minutes, pepite a dit :

Bonjour,

 

TOn token est lié à l'interface ? Une fois que tu as ton token, tu passes bien par une URL ?

 

seulement la première fois, demande l'utilisateur et le mot de passe.

il y a 19 minutes, pepite a dit :

de hc2 cela fonctionne mais il me renvoie l'erreur 401 "Unauthorized"

le token d'autorisation est manquant.
si je l'essaie à travers l'interface legrand tout fonctionne correctement

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu as donc déja ecrit une scene avec du net.HTTPclient() ?

le token se met dans le Headers, à voir ce qu'il y a a mettre aussi dans le header

 

Exemple pour le Header d'un thermostat nest

 options = {
            method = 'PUT',
            headers = {
                ["content-type"] = "application/json",
                ["Authorization"] = "Bearer "..access_token
                 },

Et voila ce que tu as dans la doc de l'API Smarther

 

 

 

Sélection_001_26032018_16:03:24.png

Sélection_001_26032018_16:03:03.png

Partager ce message


Lien à poster
Partager sur d’autres sites

l'appel à Chronothermostat mesures que j'ai déjà créé et je n'ai pas de problèmes, sauf que cela me donne 401 parce que je ne suis pas connecté.
devorei exécute d'abord le point de fin d'autorisation selon la documentation
https://developer.legrand.com/help-center/tutorial

malheureusement, je m'arrête ici, je ne peux pas récupérer le token, puis continuer

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Tu as donc bien fait le Getting Started ?

As tu continue et creer l'application ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,
Oui, j'ai commencé le gettin, puis j'ai créé l'application, qui a été approuvée par Legrand et ils m'ont envoyé le client_id et le client_secret

Partager ce message


Lien à poster
Partager sur d’autres sites

Re,

 

Maintenant de ce que je comprends évidemment ;-)

tu dois passer à Autorization End-Point qui va te retourner un code necessaire pour recuperer l'acess_token

Partager ce message


Lien à poster
Partager sur d’autres sites
exact, mais ici le problème se pose. dans les paramètres, il veut un redirect_uri à une page Web ou similaire, où je dois insérer mon utilisateur et mot de passe

 

exemple de l'appel :

https://partners-login.eliotbylegrand.com/authorize?
client_id=7700d7f4-b48e-4452-b493-5d14b45ef47e
&response_type=code
&state=d8cdccaa-0c37-4493-ab37-d5d92bc99cd7
&redirect_uri=https://www.mycompany.com/callback/ 

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est là que e ne comprends pas. Pourquoi rencontres tu un probleme ?

Si tu mets ton client_id et tu modifies le state, tu n'as pas de retour ?

Partager ce message


Lien à poster
Partager sur d’autres sites

pour faire l'appel je dois mettre un redirect_uri dans les paramètres et quand je fais l'appel me redirige vers le lien et si je ne mets pas manuellement mon utilisateur et pawwsord ne me donne pas le token

 

image.png.0159508fb62751b340d5a506fb27382a.png

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

heuuuuuu attends que je comprenne, cette partie du tuto tu essaies de la faire en LUA ? c'est ca ?

Partager ce message


Lien à poster
Partager sur d’autres sites

c'est le mon code lua

 

local http = net.HTTPClient();
 
http:request('https://partners-login.eliotbylegrand.com/authorize?client_id=(mon client-id)&response_type=code&state=d8cdccaa-0c37-4493-ab37-d5d92bc99cd7&redirect_uri=urn:ietf:wg:oauth:2.0:oob',{
            options = {
                method = 'GET' ,
             },
        success = function(response) fibaro:debug(response.data) end,
        error = function(err) fibaro:debug("Error: " ..err) end
        })

 

la réponse

[DEBUG] 14:26:14: Error: Connection reset by peer

Partager ce message


Lien à poster
Partager sur d’autres sites

Cette partie tu ne dois pas la faire en lua pour récuperer le code qui va te permettre te recuperer ton token.

Ce n'est à faire qu'une seule fois, fias le depuis un navigateur et récupère le code.

 

Citation

This flow must be done only once, during account linking. After that, you must used /token flow periodicaly to get and refresh access_token

Citation

 

Answer

The server returns a code, used with the token end-point.

 

 

ensuite :

Citation

 

Token end-point

This end point is used to get and refresh the access_token.

Authorization code flow

Request

To get the access_token (which must be add to the request each time you call an API), you must make a POST request to

 

token end-point te permet de récuperer :

  - 1 access_token : valide 1h

  - 1 refresh_token, valide 90 jours.

Partager ce message


Lien à poster
Partager sur d’autres sites

bien, je comprends.
J'ai fait l'appel de la connexion du navigateur et renvoyé un token plus d'autres données.
Je l'ai mis dans le code lua
mais maintenant il me donne l'erreur: 500 internal server error

 

@pepite Je tiens à vous remercier pour l'aide que vous me donnez

Partager ce message


Lien à poster
Partager sur d’autres sites

De rien.

 

L'url à mettre dans le code est celui-ci maintenant :

 

https://partners-login.eliotbylegrand.com/token?client_id=ton_client_id
&grant_type=authorization_code
&code=celui_que_tu_as_eu_dans_authorization_end_point
&client_secret=ton_client_secret

et ce n'est plus GET mais POST pour la méthode

 

Citation

To get the access_token (which must be add to the request each time you call an API), you must make a POST request to

Donc :

options = {
                method = 'POST' ,
             },

 

Partager ce message


Lien à poster
Partager sur d’autres sites

rien à faire. lua -  connection reset by peer

si j'essaye d'appeler de Curl la réponse est

"error": "invalid_grant",
 "error_description": "AADB2C90090: The provided JWE is not a valid 5 segment token.\r\nCorrelation ID: e4f52265-1d2e-464b-b769-426a5e41b375\r\nTimestamp: 2018-07-27 15:00:46Z\r\n

 

Je ne peux pas comprendre ... je suis décourageant

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Bizarre tout de même :-(

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,
Malheureusement, la chose est vraiment étrange.
L'assistance de Legrand est lente à répondre et je crains de ne pouvoir comprendre mon problème.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×