Aller au contenu
idomotique

Problème avec APi sur QA

Recommended Posts

Bonjour tout le monde,

Je suis en train de m'arracher les cheveux...

Je tente de faire  une Quickapp pour des interrupteurs Dingz.

Je fais pour commencer une simple requête get pour récupérer les informations de l'appareil.

voila le résultat dans le browser de la requète "http://192.168.1.161/api/v1/info":

image.png.2be22ce813b54eb5d16f799a07f087c7.png

je la fais donc dans une scène:

local ip= "192.168.1.161"
local address ="http://"..ip.."/api/v1/"
local http = net.HTTPClient({timeout=3000})


function apigetinfo()
local data = 0
    address= address .. "info"
    http:request(address, {
        options={
            headers = {Accept = "application/json"},
            method = 'GET'
        },
        success = function(response)
            data = json.decode(response.data) 
            fibaro.debug("Scene145", data.ssid)
        end,
        error = function(error)
            fibaro.debug('error API: ' .. json.encode(error))
        end
    
    })
end 
apigetinfo()

et voila la réponse :

[08.10.2020] [21:33:19] [DEBUG] [SCENE145]: idomotique 2.4 GHz

donc apparement  l'api fonctionne et l'interrupteur me réponds correctement .

 

Du coup je me lance dans la QA

function QuickApp:onInit()
    self:debug("onInit")
    self.http = net.HTTPClient({timeout = 10000})
    self:trace("******** QA is initialised.  Connecting to Dingz ********")
    self:updateView('infos', 'text', 'Connexion à Dingz!') 
end

function QuickApp:bUpdate()
    local address = "http://192.168.1.161/api/v1/info"
    self.http:request("http://192.168.1.161/api/v1/info", {
        options={
            headers = {Accept = "application/json"},
            method = "GET"
        },
        success = function(response)
            self:debug("succès")
            self:debug("response: ".. response.status)
            local data = json.decode(response.data) 
            self:debug(data.ssid)
        end,
        error = function(error)
            self:debug("fail")
            self:debug('error: ' .. json.encode(error))
        end
 })
end

function QuickApp:allumerlampe()
    self.http:request("http://192.168.1.161/api/v1/button/1/single-press", {
        options = {
            method = "POST",
            headers = {
                Accept = "application/json"
            }
        },
        success = function(response) 
             self:debug( response.status)
        end,
        error = function(message)
             self:debug( message)
        end
    })
end 

 

Et la c'est le drame......

A tous les coups je reçoit

[08.10.2020] [21:24:24] [DEBUG] [QUICKAPP872]: fail[08.10.2020] 
[21:24:24] [DEBUG] [QUICKAPP872]: error: "Operation canceled"

Quand j'utilise la fonction allumerlampe je vois effectivement la lampe connectée à mon interrupteur s'allumer.

 

Du coup mes conclusions sont les suivantes:

- l'adresse ip et l'appel API sont juste vu que cela fonctionne dans le browser et dans la scène

- l'appareil reçoit les commande envoyée depuis la QA vu que la lampe s'allume sur la requète POST

- le retour de la requête GET ne fonctionne pas sur la QA et provoque un timeout.

Problème de port? bug des QA? paramétrage caché des QA? ....

 

 

Est ce que qqn aurait la moindre idée pour me sortir de la?

Un grand merci d'avance.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello, non vu que ça confonde avec la scène...
Et de toute façon pour le moment le module n'est pas protégé.

Envoyé de mon SM-A516B en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

×