stipower 8 Signaler ce message Posté(e) 4 mars (modifié) Il y a 9 heures, Lazer a dit : J'ai pas trop le temps de relire ton code en ce moment, si tu es pressé, regarde ce que fait le code source de mon QuickApp, dans le fichier Library - Enphase v2.00.lua dans la function Enphase:getToken() Salut Lazer, Merci d'avoir répondu. J'ai déjà pas mal étudié ton code tout le dimanche. Je n'ai pas les compétences pour tout comprendre et l'adapter à la HC2. Mais je ne suis pas pressé, donc quand tu auras le temps à l'occaz Modifié 4 mars par stipower Partager ce message Lien à poster Partager sur d’autres sites
Lazer 8 477 Signaler ce message Posté(e) 4 mars Oui mais il ne s"agit pas de comprendre tout le code, je t'ai juste indiqué le nom de la fonction dans mon code qui fait ce que tu demandes, à savoir l'obtention du token, ça devrait te donner une bonne piste. Par ailleurs, la HC2, j'ai laissé tombé il y a 3 ans, donc difficile d'adapter du code LUA dessus pour moi... Partager ce message Lien à poster Partager sur d’autres sites
stipower 8 Signaler ce message Posté(e) 5 mars (modifié) Salut Lazer, Je comprends. Bon, un collègue m'a débloqué, j'ai pu terminé mon script. Je poste mon Code pour scène HC2 qui est maintenant fonctionnel. Ca peut toujours servir à quelqu'un : -- GetEnphaseToken --[[ %% autostart %% properties %% events %% globals --]] -- récupère le Token de Enphase pour faire les connexion sur le boitier Envoy local IDNotifMailAdmin = 2 local TempsDeBoucle = 24 * 3600 * 1000 -- 1 journée function RequestHTTP() -- ************************************ Get SessionID ************************************ local EnphaseURLlogin = "https://enlighten.enphaseenergy.com/login/login.json?" local EnphaseURLToken = "https://entrez.enphaseenergy.com/tokens" local envoy_serial = "XXXXXXXX" -- sérial de l'installation Enphase local user ="XXXXXXXX" local password = "XXXXXXXX" local SessionID local http = net.HTTPClient() local DataEnphaseURLlogin = '{"user": {"email": "'.. user .. '", "password": "' .. password .. '"}}' -- attendu : DataEnphaseURLlogin = '{"user": {"email": "XXXX", "password": "XXXX"}}' fibaro:debug("Get session_id") http:request(EnphaseURLlogin, { options = { checkCertificate = false, method = 'POST', headers = { ['Accept'] = 'application/json', ['Content-Type'] = 'application/json', }, data = DataEnphaseURLlogin, timeout = 10000 }, success = function(response) --fibaro:debug(response.status) if (response.status == 200 or response.status == 201) and type(response.data) == "string" and response.data ~= "" then -- réponse OK --fibaro:debug(response.data) --[[ reponse attendue : {"message":"success", "session_id":"9beb21c28d7893090e9c42746830bdba", "manager_token":"eyJhbGciOiJIUzI......1NiJ9.eyJkYXRh", "is_consumer":true,"system_id":2438074} --]] SessionID = json.decode(response.data) SessionID = SessionID.session_id fibaro:debug("session_id = " .. SessionID) -- ************************************ Get Token ************************************ fibaro:debug("Get Token") local DataEnphaseURLToken = '{"session_id" : "' .. SessionID .. '", "serial_num" : "' .. envoy_serial .. '", "username" : "' .. user .. '"}' -- attendu : DataEnphaseURLToken = '{"session_id" : "XXXX", "serial_num" : "XXXX", "username" : "XXXX"}' http:request(EnphaseURLToken, { options = { checkCertificate = false, method = 'POST', headers = { ['Accept'] = 'application/json', ['Content-Type'] = 'application/json', }, data = DataEnphaseURLToken, timeout = 10000 }, success = function(response) --fibaro:debug(response.status) if (response.status == 200 or response.status == 201) and type(response.data) == "string" and response.data ~= "" then if type(response.data) == "string" and response.data ~= "" then -- réponse OK --fibaro:debug(response.data) local Token = response.data fibaro:debug("Token = " .. Token) fibaro:setGlobal("TokenEnphase",Token) --> envoie du Token dans une variable globale else -- réponse Pas OK fibaro:debug('GetEnphaseToken response code : ' .. response.status) local msg = 'GetEnphaseToken response code : ' .. response.data fibaro:debug(msg) SendMail(msg) end end end, error = function(err) local msg = "GetEnphaseToken Erreur : " .. err fibaro:debug(msg) SendMail(msg) end, } ) else -- réponse Pas OK fibaro:debug('GetEnphaseSession response code : ' .. response.status) local msg = 'GetEnphaseSession response code : ' .. response.data fibaro:debug(msg) SendMail(msg) end end, error = function(err) local msg = "GetEnphaseSession Erreur : " .. err fibaro:debug(msg) SendMail(msg) end, } ) end function SendMail(MsgErr) fibaro:call(IDNotifMailAdmin, 'sendEmail', 'HC2 Erreur EnphaseToken', os.date("%x " .. "%X") .. " " .. MsgErr) end function loop() fibaro:debug(os.date("%x " .. "%X")) RequestHTTP() setTimeout(loop,TempsDeBoucle) end setTimeout(loop,0) Code corrigé le 23/03/2024 Modifié 24 mars par stipower 2 Partager ce message Lien à poster Partager sur d’autres sites
Lazer 8 477 Signaler ce message Posté(e) 5 mars Top, bravo, et voilà qui devrait intéresser @Nico Partager ce message Lien à poster Partager sur d’autres sites
mprinfo 3 336 Signaler ce message Posté(e) 5 mars Tu crois que@nico aura le temps de faire un copier coller Envoyé de mon BLA-L29 en utilisant Tapatalk Partager ce message Lien à poster Partager sur d’autres sites
Nico 2 158 Signaler ce message Posté(e) 7 mars Top. Du coup j'abuse, tu n'as pas le petit VD qui va bien... Partager ce message Lien à poster Partager sur d’autres sites
stipower 8 Signaler ce message Posté(e) 24 mars Le VD qui va bien pour faire quoi ? Partager ce message Lien à poster Partager sur d’autres sites
stipower 8 Signaler ce message Posté(e) 24 mars (modifié) J'ai corrigé mon code de scène HD2 et ai ajouté un envoi de mail en cas de mauvais logins/password. Modifié 24 mars par stipower Partager ce message Lien à poster Partager sur d’autres sites