Jump to content
News Ticker
  • Zwave-Community.it diventa DOMOTICA Easy!!
  • Il portale dedicato alla DOMOTICA WIRELESS
  • Forum - Guide - Recensioni

REGISTRATI PER VISUALIZZARE TUTTI I CONTENUTI DEL NOSTRO PORTALE!

ATTENZIONE: Alcuni contenuti del sito sono visualizzabili sono dagli utenti registrati. 

REGISTRATI ADESSO alla nostra comunità e dai anche il tuo supporto per ottenere di più!

veuchez

Bticino Smarther x8000

Recommended Posts

Buonasera a tutti! 

Qualcuno di voi è riuscito a integrare il termostato nel sistema fibaro con un virtual device? 

Io non so nulla di programmazione però ho visto che ci sono le api v. 2.0 sul sito works with Legrand. 

Share this post


Link to post
Share on other sites
Il 9/2/2019 Alle 20:30, Etto ha scritto:

Mmm interessante! Non sapevo...

dopo guardo e provo...

 

Sei riuscito a dare un occhio?

Share this post


Link to post
Share on other sites

mi dispiace... ho trovato poco e ci ho capito meno ancora... 😞 Peccato perché interessava molto anche a me. 

Come mi interrssava farlo andare con Alexa...

Share this post


Link to post
Share on other sites

Cavoli e in rete sembra che nessuno ci abbia nemmeno provato..

Solo qui ho trovato alcune indicazioni...

https://www.domotique-fibaro.fr/topic/12230-legrand-thermostat-connect%C3%A9-smarther/?tab=comments#comment-192291

Alexa purtroppo finché non lo implementano...scandaloso comunque, compatibilità dichiarata lo scorso anno e non c'è ancora..sono tutti infuriati..

 

Share this post


Link to post
Share on other sites
Il 20/2/2019 Alle 12:19, veuchez ha scritto:

Cavoli e in rete sembra che nessuno ci abbia nemmeno provato..

Solo qui ho trovato alcune indicazioni...

https://www.domotique-fibaro.fr/topic/12230-legrand-thermostat-connect%C3%A9-smarther/?tab=comments#comment-192291

 Alexa purtroppo finché non lo implementano...scandaloso comunque, compatibilità dichiarata lo scorso anno e non c'è ancora..sono tutti infuriati..

 

purtroppo è così, nessuno ci ha messo le mani... tranne me

diciamo che bticino/legrand ha messo su un sistema molto macchinoso e ostico.

bisogna iniziare registrandosi al sito https://developer.legrand.com/ come sviluppatore.

acquistare (gratis) lo starter kit, a questo punto si riceverà due key da utilizzare per l'autenticazione delle richieste e letture fatte al termostato

poi bisogna creare e farsi autorizzare una descrizione della app da legrand

tutto è spiegato qui https://developer.legrand.com/tutorials/getting-started/

veniamo al punto qui iniziano i dolori....

sono riuscito senza problemi ad interagire con il termostato con una scena lua come test... ma impostando manualmente il token di autorizzazione fisso fornitomi da un accesso di test via web, il problema è che il token scade dopo un'ora e via lua non riesco a rigenerarlo o fare il refresh perchè la chiamata iniziale per la richiesta del token vuole per forza un redirect_uri e anche reindirizzandolo a locahost poi mi chiede utente e password (il mio) e questo non riesco a superarlo, e rende la scena initilizzabile.

ho chiesto assistenza anche a legrand direttamente ma non mi sono stati di aiuto...

e qui sono fermo

Share this post


Link to post
Share on other sites
6 ore fa, Dvittorio ha scritto:

purtroppo è così, nessuno ci ha messo le mani... tranne me

diciamo che bticino/legrand ha messo su un sistema molto macchinoso e ostico.

bisogna iniziare registrandosi al sito https://developer.legrand.com/ come sviluppatore.

acquistare (gratis) lo starter kit, a questo punto si riceverà due key da utilizzare per l'autenticazione delle richieste e letture fatte al termostato

poi bisogna creare e farsi autorizzare una descrizione della app da legrand

tutto è spiegato qui https://developer.legrand.com/tutorials/getting-started/

veniamo al punto qui iniziano i dolori....

sono riuscito senza problemi ad interagire con il termostato con una scena lua come test... ma impostando manualmente il token di autorizzazione fisso fornitomi da un accesso di test via web, il problema è che il token scade dopo un'ora e via lua non riesco a rigenerarlo o fare il refresh perchè la chiamata iniziale per la richiesta del token vuole per forza un redirect_uri e anche reindirizzandolo a locahost poi mi chiede utente e password (il mio) e questo non riesco a superarlo, e rende la scena initilizzabile.

ho chiesto assistenza anche a legrand direttamente ma non mi sono stati di aiuto...

e qui sono fermo

 

Sono al tuo stesso identico punto...ho ottenuto il codice per richiedere il token, ma il token riesco a ottenerlo solo tramite postman, in lua non ho ancora ottenuto risultati..

Share this post


Link to post
Share on other sites

e ti dirò di più, non è un problema lua, perchè neanche tramite comandi curl riesco a sbloccare la situazione...

ma era tanto difficile gestire le richieste come fanno tutti gli altri?... con netatmo con gli stessi dati key user e password e mac address si ottiene un interfacciamento perfetto

Edited by Dvittorio

Share this post


Link to post
Share on other sites

Buonasera a tutti , possiedo anch'io lo Smarther X8000 , e sono in attesa del Add-on del grande Sandro Di Marco [CONTENUTO MODERATO] per Hassio (Home Assistant). Praticamente è l'unico device "escluso" dalla mia domotica

Please login or register to see this image.

, a giorni arriva.
Posto uno screenshot suo.


Inviato dal mio ONEPLUS A3003 utilizzando Tapatalk
 

Please login or register to see this attachment.

Share this post


Link to post
Share on other sites

Gli add-on home assistant in che linguaggio sono scritti?
Quando lo hai mi puoi passare l'add-on magari ci posso prendere spunto.


Inviato dal mio LM-G710 utilizzando Tapatalk

Share this post


Link to post
Share on other sites

Prendendo spunto da qua

Please login or register to see this link.

 ho fatto qualche passo avanti e ottenuto il token, ora non so come andare avanti utilizzando il token ricevuto...mi aiutate per favore?

 

ecco il codice:

 

--[[

%% properties

%% autostart

%% globals

--]]

 

local http = net.HTTPClient({timeout=5000}) 


-- debug function

function logbug(color, message)

  if deBug then

    for line in message:gmatch("[^\010\013]+") do

     local txt = line:gsub("([\038\060\062])",

        function(c)

          return "&#"..string.byte(c)..";"

        end)

      fibaro:debug(('<span style="color:%s">%s</span>'):format(color,txt))

   end

  end

end

function UpdateLegrandTable ()

  fibaro:setGlobal('LegrandParameters', json.encode(LegrandParameters))

  logbug('green', 'Table updated')

end

 

 

local client_id = 'IL TUO LOCAL ID RICEVUTO VIA MAIL'
local client_secret = 'LA TUA CLIENT SECRET RICEVUTA VIA MAIL'
local code = 'CODICE RICEVUTO TRAMITE RICHIESTA GET A

Please login or register to see this link.

'

local requestAuth = 'grant_type=authorization_code&client_id='..client_id..'&client_secret='..client_secret..'&code='..code..

if (fibaro:countScenes() > 1) then
  fibaro:abort()
end

 

function OAuth(nextFunction)
 if not Authorized then
    http:request('https://partners-login.eliotbylegrand.com/token', { 
  options={ 
       headers = {
          ['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
         }, 
          checkCertificate = false,
        data = requestAuth,
        method = 'POST', 
        timeout = 20000 
      }, 
      success = function(Oauth)
        logbug('green', 'Initial authorisation response '..Oauth.status)
       fibaro:setGlobal("LegrandOauth", Oauth.data)
          local tmpdata = json.decode(Oauth.data) 
          local access_token = tmpdata.access_token
          fibaro:setGlobal("access_token", access_token)
          print(access_token)
        Authorized = true
        fibaro:debug('Variables ok')
          --  print(Oauth.data)
      end, 
      error = function(error) 
        print "Initial Auth ERROR" 
       print(error) 
     end 
    })
 else
    local Oauth = fibaro:getGlobalValue("LegrandOauth")
    local JOauth = json.decode(Oauth)
       local refresh_token = JOauth.refresh_token
    local refreshAuth = 'grant_type=refresh_token&client_id=' ..client_id..
                         '&client_secret=' ..client_secret..
                         '&refresh_token=' ..refresh_token
    http:request('https://partners-login.eliotbylegrand.com/token', { 
      options={ 
        headers = {
          ['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
          
          }, 
        data = refreshAuth, 
        method = 'POST', 
        timeout = 20000 
      }, 
      success = function(Refresh)
          logbug('green', 'Refresh response '..Refresh.status)
          JRefresh = json.decode(Refresh.data)
         access_token = JRefresh.access_token
          refresh_token = JRefresh.refresh_token
          if refresh_token == nil then
            logbug ("red","Error: No Refresh Token Found")
          else
            logbug("green","Refresh token obtained from Legrand")
            fibaro:setGlobal("LegrandOauth", Refresh.data)
            LegrandParameters = json.decode(fibaro:getGlobalValue("LegrandParameters"))
            setTimeout(UpdateLegrandTable, 20000)
            fibaro:debug('Variables ok')
          end
      end,
     }) error = funcion(error) 
       print "Refresh auth ERROR" 
        print(error) 
       end
    
  end
  if selfRun then 
    logbug("violet", "Wait "..refreshloop.." seconds for next run")
   setTimeout(OAuth, refreshloop*1000)
  end


OAuth()

 

Edited by veuchez

Share this post


Link to post
Share on other sites
8 minuti fa, veuchez ha scritto:

Prendendo spunto da qua

Please login or register to see this link.

 ho fatto qualche passo avanti e ottenuto il token, ora non so come andare avanti utilizzando il token ricevuto...mi aiutate per favore?

 

ecco il codice:

 

--[[

%% properties

%% autostart

%% globals

--]]

 

local http = net.HTTPClient({timeout=5000}) 


-- debug function

function logbug(color, message)

  if deBug then

    for line in message:gmatch("[^\010\013]+") do

     local txt = line:gsub("([\038\060\062])",

        function(c)

          return "&#"..string.byte(c)..";"

        end)

      fibaro:debug(('<span style="color:%s">%s</span>'):format(color,txt))

   end

  end

end

function UpdateLegrandTable ()

  fibaro:setGlobal('LegrandParameters', json.encode(LegrandParameters))

  logbug('green', 'Table updated')

end

 

 

local client_id = 'IL TUO LOCAL ID RICEVUTO VIA MAIL'
local client_secret = 'LA TUA CLIENT SECRET RICEVUTA VIA MAIL'
local code = 'CODICE RICEVUTO TRAMITE RICHIESTA GET A

Please login or register to see this link.

'

local requestAuth = 'grant_type=authorization_code&client_id='..client_id..'&client_secret='..client_secret..'&code='..code..

if (fibaro:countScenes() > 1) then
  fibaro:abort()
end

 

function OAuth(nextFunction)
 if not Authorized then
    http:request('https://partners-login.eliotbylegrand.com/token', { 
  options={ 
       headers = {
          ['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
         }, 
          checkCertificate = false,
        data = requestAuth,
        method = 'POST', 
        timeout = 20000 
      }, 
      success = function(Oauth)
        logbug('green', 'Initial authorisation response '..Oauth.status)
       fibaro:setGlobal("LegrandOauth", Oauth.data)
          local tmpdata = json.decode(Oauth.data) 
          local access_token = tmpdata.access_token
          fibaro:setGlobal("access_token", access_token)
          print(access_token)
        Authorized = true
        fibaro:debug('Variables ok')
          --  print(Oauth.data)
      end, 
      error = function(error) 
        print "Initial Auth ERROR" 
       print(error) 
     end 
    })
 else
    local Oauth = fibaro:getGlobalValue("LegrandOauth")
    local JOauth = json.decode(Oauth)
       local refresh_token = JOauth.refresh_token
    local refreshAuth = 'grant_type=refresh_token&client_id=' ..client_id..
                         '&client_secret=' ..client_secret..
                         '&refresh_token=' ..refresh_token
    http:request('https://partners-login.eliotbylegrand.com/token', { 
      options={ 
        headers = {
          ['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
          
          }, 
        data = refreshAuth, 
        method = 'POST', 
        timeout = 20000 
      }, 
      success = function(Refresh)
          logbug('green', 'Refresh response '..Refresh.status)
          JRefresh = json.decode(Refresh.data)
         access_token = JRefresh.access_token
          refresh_token = JRefresh.refresh_token
          if refresh_token == nil then
            logbug ("red","Error: No Refresh Token Found")
          else
            logbug("green","Refresh token obtained from Legrand")
            fibaro:setGlobal("LegrandOauth", Refresh.data)
            LegrandParameters = json.decode(fibaro:getGlobalValue("LegrandParameters"))
            setTimeout(UpdateLegrandTable, 20000)
            fibaro:debug('Variables ok')
          end
      end,
     }) error = funcion(error) 
       print "Refresh auth ERROR" 
        print(error) 
       end
    
  end
  if selfRun then 
    logbug("violet", "Wait "..refreshloop.." seconds for next run")
   setTimeout(OAuth, refreshloop*1000)
  end


OAuth()

 

 

Correggo:

 

--[[

%% properties

%% autostart

%% globals

--]]

 

local http = net.HTTPClient({timeout=5000}) 

local deBug  = true


-- debug function

function logbug(color, message)

  if deBug then

    for line in message:gmatch("[^\010\013]+") do

     local txt = line:gsub("([\038\060\062])",

        function(c)

          return "&#"..string.byte(c)..";"

        end)

      fibaro:debug(('<span style="color:%s">%s</span>'):format(color,txt))

   end

  end

end

 

local client_id = 'IL TUO LOCAL ID RICEVUTO VIA MAIL'
local client_secret = 'LA TUA CLIENT SECRET RICEVUTA VIA MAIL'
local code = 'CODICE RICEVUTO TRAMITE RICHIESTA GET A 

Please login or register to see this link.

'

local requestAuth = 'grant_type=authorization_code&client_id='..client_id..'&client_secret='..client_secret..'&code='..code..

if (fibaro:countScenes() > 1) then
  fibaro:abort()
end

 

function OAuth(nextFunction)
 if not Authorized then
    http:request('https://partners-login.eliotbylegrand.com/token', { 
  options={ 
       headers = {
          ['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
         }, 
          checkCertificate = false,
        data = requestAuth,
        method = 'POST', 
        timeout = 20000 
      }, 
      success = function(Oauth)
        logbug('green', 'Initial authorisation response '..Oauth.status)
       fibaro:setGlobal("LegrandOauth", Oauth.data)
          local tmpdata = json.decode(Oauth.data) 
          local access_token = tmpdata.access_token
          fibaro:setGlobal("access_token", access_token)
          print(access_token)
        Authorized = true
        fibaro:debug('Variables ok')
          --  print(Oauth.data)
      end, 
      error = function(error) 
        print "Initial Auth ERROR" 
       print(error) 
     end 
    })
 else
    local Oauth = fibaro:getGlobalValue("LegrandOauth")
    local JOauth = json.decode(Oauth)
       local refresh_token = JOauth.refresh_token
    local refreshAuth = 'grant_type=refresh_token&client_id=' ..client_id..
                         '&client_secret=' ..client_secret..
                         '&refresh_token=' ..refresh_token
    http:request('https://partners-login.eliotbylegrand.com/token', { 
      options={ 
        headers = {
          ['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
          
          }, 
        data = refreshAuth, 
        method = 'POST', 
        timeout = 20000 
      }, 
      success = function(Refresh)
          logbug('green', 'Refresh response '..Refresh.status)
          JRefresh = json.decode(Refresh.data)
         access_token = JRefresh.access_token
          refresh_token = JRefresh.refresh_token
          if refresh_token == nil then
            logbug ("red","Error: No Refresh Token Found")
          else
            logbug("green","Refresh token obtained from Legrand")
            fibaro:setGlobal("LegrandOauth", Refresh.data)
            LegrandParameters = json.decode(fibaro:getGlobalValue("LegrandParameters"))
            setTimeout(UpdateLegrandTable, 20000)
            fibaro:debug('Variables ok')
          end
      end,
     }) error = funcion(error) 
       print "Refresh auth ERROR" 
        print(error) 
       end
    
  end
  if selfRun then 
    logbug("violet", "Wait "..refreshloop.." seconds for next run")
   setTimeout(OAuth, refreshloop*1000)
  end


OAuth()

Share this post


Link to post
Share on other sites
58 minuti fa, Dvittorio ha scritto:

questa parte di codice ti funziona?

Riesco a ottenere il token si! Però non ho competenze in programmazione quindi quando si parla di tabelle variabili ecc mi perdo e non riesco a creare la funzione per ottenere i dati del termostato utilizzando l'access token ricevuto... 

Share this post


Link to post
Share on other sites

te l'ho chiesto perchè c'è un errore nel codice che hai postato.... che ho corretto.

ma a me il token non lo restituisce, mi da come risposta 400 quindi non autorizzato

 

la parte della comunicazione con il termostato è abbastanza semplice... la faccio io se riesco ad andare avanti

  • Like 1

Share this post


Link to post
Share on other sites
43 minuti fa, Dvittorio ha scritto:

te l'ho chiesto perchè c'è un errore nel codice che hai postato.... che ho corretto.

ma a me il token non lo restituisce, mi da come risposta 400 quindi non autorizzato

 

la parte della comunicazione con il termostato è abbastanza semplice... la faccio io se riesco ad andare avanti

Può essere che ci sia qualche grande cappellata nel codice, io ho modificato solo i dati e le richieste per ottenere il Token, per il resto mi affido a voi...

A me funziona, mi da codice 200 autorizzato e mi printa il token, poi il refresh token non so se va...

Ho visto ogni tanto, credo dopo tante chiamate con errori, il codice di autorizzazione scade, da errore 400 e devi reinserirlo dopo averlo rigenerato..il codice una volta richiesto non dovrebbe mai scadere a meno di non apportare modifice sulla app.

Questo mi ha riferito Legrand.. 

Posti il codice aggiornato quando lo hai per favore? 

Share this post


Link to post
Share on other sites

L'esempio di chiamata per la richiesta del codice è :

Please login or register to see this link.

TUOURL

Io &state= non lo ho messo..

 

Questo lo ho dato in pasto al browser e ho ricevuto il codice.. 

Share this post


Link to post
Share on other sites
14 minuti fa, veuchez ha scritto:

L'esempio di chiamata per la richiesta del codice è :

Please login or register to see this link.

TUOURL

Io &state= non lo ho messo..

 

Questo lo ho dato in pasto al browser e ho ricevuto il codice.. 

 

su "TUOURL" cosa hai messo?

Share this post


Link to post
Share on other sites
5 minuti fa, Dvittorio ha scritto:

su "TUOURL" cosa hai messo?

Nella app ho messo http://www e nella richiesta per il codice deve essere uguale..

Share this post


Link to post
Share on other sites
Il 27/2/2019 Alle 14:42, Dvittorio ha scritto:

ok. grazie... riprovo... togliendo il parametro state

Sei riuscito?

Share this post


Link to post
Share on other sites

Sì e sono andato un pochino avanti. Non mi piace molto come l'ho realizzato e devo lavorarci ancora. Comunque sono riuscito a leggere i valori e metterli in una vd

Inviato dal mio LM-G710 utilizzando Tapatalk

Share this post


Link to post
Share on other sites

Un saluto! Anch'io sto combattendo per recuperare  il codice per ottenere il token. Semplicemente vengo reindirizzato ad una pagina di login, una volta inserite le mie credenziali vengo trasferito sul sito della mia applicazione e niente codice!!! Aiuto vi prego

Edited by danye

Share this post


Link to post
Share on other sites
Un saluto! Anch'io sto combattendo per recuperare  il codice per ottenere il token. Semplicemente vengo reindirizzato ad una pagina di login, una volta inserite le mie credenziali vengo trasferito sul sito della mia applicazione e niente codice!!! Aiuto vi prego
Il codice te lo restituisce nell'url quando ti reindirizza. È la stringa dopo code=

Inviato dal mio LM-G710 utilizzando Tapatalk

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×