Aller au contenu

Pb tache schedule PHP


Messages recommandés

Posté(e)

Bonjour a tous, depuis quelques temps, j'ai une scene Schedulée qui mets à jour la Conso électrique qui me renvoie une erreur 302, je n'ai rien changé au code et l'url fonctionne correctement dans un navigateur. J'avoue que je ne comprends pas, si quelqu'un a ne idée !

 

fibaro.debug("Màj graphique")

local http = net.HTTPClient()
http:request("http://192.168.0.101/teleinfo-ed/ecod2sql.php", {
	success = function(response)
		if response.status == 200 then
			print('OK, réponse : '.. response.data)
		else
			print("Erreur : status=" .. tostring(response.status))
		end
	end,
	error = function(err)
		print("Erreur : " .. err)
	end,
	options = {
		method = 'GET'
	}
})

 

Posté(e)

C'est pas trop au point les scènes sur HC3....  je peux te conseiller de tenter de faire fonctionner ton code dans un QuickApp pour voir.

 

cf ici :

 

 

 

 

Posté(e)

Je viens de m'essayer au QA, mais c'est la premiere fois et j'avoue que je patauge ;-) 

 


function QuickApp:onInit()


	self.refreshInterval = tonumber(self:getVariable("Refresh")) or 60

	fibaro.setTimeout(0, function() self:loop() end)
end

function QuickApp:loop()
local http = net.HTTPClient()
local url = "http://192.168.0.101/teleinfo-ed/ecod2sql.php"

local status, err = pcall(function()

	http:request(url, {
		success = function(response)
			self:debug("màj de la base de conso")
		end,
		error = function(err)
			self:debug("xxxxxxx")
		end,
		options = {
			-- options éventuelles...
		}
	}) -- http:request()

end) -- pcall()

	if not status then
		-- Gestion de l'erreur attrapée par pcall()
		self:error(err)
	end

	-- Prochaine boucle ena asynchrone dans 1 minute (60000 millisecondes)
	fibaro.setTimeout(math.floor(self.refreshInterval*1000), function() self:loop() end)
    
end

Qu'est ce que j'ai mal fait ? (bon j'avoue c'est du copier/coller, mais la je ne comprends pas pourquoi la requête http échoue)

[13.07.2021] [21:49:22] [DEBUG] [QUICKAPP117]: Lancement du QA de refresh de conso

[13.07.2021] [21:49:22] [WARNING] [QUICKAPP117]: Variable Refresh not found

[13.07.2021] [21:49:22] [DEBUG] [QUICKAPP117]: xxxxxxx

 

donc ça fonctionne pas <_<

 

Posté(e)

Tu t'es lancé dans un truc peut être trop compliqué.

ne met pas de onInit, ni de variable, ni de settimeout

 

en gros, ton code pcall avec le http:request simplement dans un bouton.

Posté(e)

Après quelques tests, sur un bouton c'est pas mieux, je suis en erreur ! :(

 

function QuickApp:button1Clicked()
    self:debug("click bouton")
    local http = net.HTTPClient()
    local url = "http://192.168.0.101/teleinfo-ed/ecod2sql.php"

    local status, err = pcall(function()

        http:request(url, {
            success = function(response)
                -- Suite des traitements...
             self:debug("lancement requette OK")   
            end,
            error = function(err)
                -- Gestion de l'erreur (connexion impossible)
                self:debug("Echec du lancement de la requette")
            end,
            options = {
                -- options éventuelles...
            }
        }) -- http:request()

    end) -- pcall()

    if not status then
        -- Gestion de l'erreur attrapée par pcall()
        print(err)
end

end

[19.07.2021] [10:10:19] [TRACE] [QUICKAPP117]: UIEvent: {"values":[null],"eventType":"onReleased","elementName":"button1","deviceId":117}

[19.07.2021] [10:10:19] [DEBUG] [QUICKAPP117]: click bouton[19.07.2021] [10:10:19]

[DEBUG] [QUICKAPP117]: Echec du lancement de la requette

 

J'avoue que je ne comprends pas, surement quelque chose que je fais mal

Posté(e)

Ta syntaxe LUA semble OK, mais là ça coince du coté de ton serveur PHP, il n'aime pas la requête que tu as faite.

 

Mais j'ai l'impression, d'après l'URL, que tu es censé envoyer des données à la page ecod2sql.php, ce que tu ne fais pas, car tu n'as rien dans options = {}

Il faudrait y mettre une requête de type "POST" avec des data je suppose.

 

Posté(e)

Curieux, c'est juste le script qui va lire mon eco device pour alimenter la base sql, si je le lance dans mon navigateur, il fonctionne, mais je n'arrive plus à le lancer depuis le HC3, j'avoue que je ne comprends pas pourquoi

Posté(e)

Pour y voir plus clair, dans ta fonction error() tu peux afficher le message d'erreur err :

            error = function(err)
                -- Gestion de l'erreur (connexion impossible)
                self:error("Echec du lancement de la requette :", err)
            end,

 

Posté(e)

Merci de ton aide, mais par manque de temps j'ai remis en route ma tache planifiée sur le Synology, je me pencherai de nouveau dessus plus tard ;-)

×
×
  • Créer...