dzvents - problème récupération état d'un site ou d'un API web

Vous avez des questions concernant les scripts dans Domoticz, posez vos questions ici, quelque soit le langage nous tenterons des réponses pertinentes ...
Répondre
fenris92
Messages : 4
Enregistré le : 14 juin 2016, 10:28

dzvents - problème récupération état d'un site ou d'un API web

Message par fenris92 » 30 juil. 2019, 11:01

Bonjour,

Je tente de récupérer d'état d'un site web et/ou d'une api web via un script Dsvents directement depuis le dashboard domoticz mais je suis confronté à une erreur : Error: dzVents: Error: (2.4.26) There was a problem handling the request alors que le site répond correctement.

Voici le script que j'utilise et qui s'appuie sur l'exemple générique fourni :

Code : Tout sélectionner

return {
	on = {
		timer = {
			'every 10 minutes' -- just an example to trigger the request
		},
		httpResponses = {
			'trigger' -- must match with the callback passed to the openURL command
		}
	},
	execute = function(domoticz, item)

		if (item.isTimer) then
			domoticz.openURL({
				url = 'http://influx:8086/ping',
				method = 'GET',
				callback = 'trigger', -- see httpResponses above.
			})
		end

		if (item.isHTTPResponse and item.ok) then

			if (item.statusCode == 204) then
			    if (domoticz.devices('Status InfluxDB').state == 'Off') then 
					domoticz.devices('Status InfluxDB').switchOn()
					-- domoticz.notify('Service InfluxDB up','InfluxDB disponible',PRIORITY_HIGH)
				end
			else
			    if (domoticz.devices('Status InfluxDB').state == 'On') then
			        domoticz.devices('Status InfluxDB').switchOff()
			        domoticz.notify('Service InfluxDB down','InfluxDB non disponible',PRIORITY_HIGH)
				    domoticz.log('There was a problem handling the request', domoticz.LOG_ERROR)
				    domoticz.log(item, domoticz.LOG_ERROR)
				end
			end

		end

	end
}

J'ai également testé avec une page web pour tester si elle retourne un 200 OK (dans l'exemple précédent c'est un 204) et le résultat est le même avec une erreur au niveau de la log :

Code : Tout sélectionner

2019-07-30 10:40:04.850 Error: dzVents: Error: (2.4.26) There was a problem handling the request
2019-07-30 10:40:04.854 Error: dzVents: Error: (2.4.26) {["headers"]={["Request-Id"]="9ed4bd50-b2a5-11e9-826b-005056b5686a", ["Date"]="Tue, 30 Jul 2019 08:40:01 GMT", ["X-Influxdb-Build"]="OSS", ["X-Influxdb-Version"]="1.7.7", ["X-Request-Id"]="9ed4bd50-b2a5-11e9-826b-005056b5686a", ["Content-Type"]="application/json"}, ["isDevice"]=false, ["_contentType"]="application/json", ["ok"]=true, ["isScene"]=false, ["baseType"]="httpResponse", ["isVariable"]=false, ["data"]="", ["trigger"]="trigger", ["isGroup"]=false, ["statusCode"]=204, ["callback"]="trigger", ["statusText"]="No Content", ["isSecurity"]=false, ["protocol"]="HTTP/1.1", ["isTimer"]=false, ["isHTTPResponse"]=true, ["isJSON"]=false}
Y a t'il une erreur sur mon script ou un soucis au niveau des scripts Dzvents ?

J'utilise la dernière version beta 4.11062

Merci
Domoticz v4.11062, OpenZWave, RFLink, CM180, Mysensors

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


boum
Messages : 40
Enregistré le : 18 janv. 2019, 11:34
Localisation : France

Re: dzvents - problème récupération état d'un site ou d'un API web

Message par boum » 30 juil. 2019, 11:13

À tout hasard, je dirais que c'est dû à la réponse HTTP vide.
dzVents ou domoticz ne doivent pas gérer ce cas correctement. Le serveur répond avec un "Content-Type:application-json", du coup dans les paramètres du trigger, on a ok==true et isJSON==false.
Il faudrait peut-être chercher ou remonter l'information dans le forum officiel.

Essaie avec

Code : Tout sélectionner

/ping?verbose=true
dans l'URL.
Domoticz v4.10717 sur Pi³ / Z-Wave / RFXCom

lolo6112
Messages : 26
Enregistré le : 17 juil. 2016, 16:12

Re: dzvents - problème récupération état d'un site ou d'un API web

Message par lolo6112 » 30 juil. 2019, 11:29

fenris92 a écrit :
30 juil. 2019, 11:01

Code : Tout sélectionner

return {
	on = {
		timer = {
			'every 10 minutes' -- just an example to trigger the request
		},
		httpResponses = {
			'trigger' -- IMPORTANT -> must match with the callback passed to the openURL command
		}
	},
	-> et ça c'est rappelé lors du callback, ce n'est pas exécuté avant ! if (item.isHTTPResponse and item.ok) then

Bonjour,

Comme le script dzVents est appelé depuis l'interface de Domoticz et qu'il y a un trigger qui rappelle le script (callback) après exécution de la commande url, ça m'étonnerait que ça marche un jour.

Donc non, dzVents fonctionne normalement.
Et je ne pense pas qu'on puisse appeler un script qui attend un callback depuis l'interface domoticz.

fenris92
Messages : 4
Enregistré le : 14 juin 2016, 10:28

Re: dzvents - problème récupération état d'un site ou d'un API web

Message par fenris92 » 30 juil. 2019, 11:40

boum a écrit :
30 juil. 2019, 11:13
À tout hasard, je dirais que c'est dû à la réponse HTTP vide.
dzVents ou domoticz ne doivent pas gérer ce cas correctement. Le serveur répond avec un "Content-Type:application-json", du coup dans les paramètres du trigger, on a ok==true et isJSON==false.
Il faudrait peut-être chercher ou remonter l'information dans le forum officiel.

Essaie avec

Code : Tout sélectionner

/ping?verbose=true
dans l'URL.
J'ai testé mais j'ai toujours une erreur :

Code : Tout sélectionner

Error: dzVents: Error: (2.4.26) There was a problem handling the request
2019-07-30 11:30:00.831 Error: dzVents: Error: (2.4.26) {["baseType"]="httpResponse", ["isGroup"]=false, ["isDevice"]=false, ["isTimer"]=false, ["callback"]="trigger", ["isScene"]=false, ["headers"]={["X-Influxdb-Version"]="1.7.7", ["Content-Type"]="application/json", ["X-Influxdb-Build"]="OSS", ["Date"]="Tue, 30 Jul 2019 09:30:00 GMT", ["X-Request-Id"]="9a3e52de-b2ac-11e9-83d1-005056b5686a", ["Request-Id"]="9a3e52de-b2ac-11e9-83d1-005056b5686a", ["Content-Length"]="19"}, ["isVariable"]=false, ["statusCode"]=200, ["_contentType"]="application/json", ["data"]="{"version":"1.7.7"}", ["isJSON"]=true, ["json"]={["version"]="1.7.7"}, ["trigger"]="trigger", ["isSecurity"]=false, ["ok"]=true, ["isHTTPResponse"]=true, ["statusText"]="OK", ["protocol"]="HTTP/1.1"}
Domoticz v4.11062, OpenZWave, RFLink, CM180, Mysensors

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


fenris92
Messages : 4
Enregistré le : 14 juin 2016, 10:28

Re: dzvents - problème récupération état d'un site ou d'un API web

Message par fenris92 » 30 juil. 2019, 11:41

lolo6112 a écrit :
30 juil. 2019, 11:29
fenris92 a écrit :
30 juil. 2019, 11:01

Code : Tout sélectionner

return {
	on = {
		timer = {
			'every 10 minutes' -- just an example to trigger the request
		},
		httpResponses = {
			'trigger' -- IMPORTANT -> must match with the callback passed to the openURL command
		}
	},
	-> et ça c'est rappelé lors du callback, ce n'est pas exécuté avant ! if (item.isHTTPResponse and item.ok) then

Bonjour,

Comme le script dzVents est appelé depuis l'interface de Domoticz et qu'il y a un trigger qui rappelle le script (callback) après exécution de la commande url, ça m'étonnerait que ça marche un jour.

Donc non, dzVents fonctionne normalement.
Et je ne pense pas qu'on puisse appeler un script qui attend un callback depuis l'interface domoticz.
Pourtant c'est l'exemple de script fourni dans l'interface pour le type "HTTP Request" avec Dzvents
Domoticz v4.11062, OpenZWave, RFLink, CM180, Mysensors

lolo6112
Messages : 26
Enregistré le : 17 juil. 2016, 16:12

Re: dzvents - problème récupération état d'un site ou d'un API web

Message par lolo6112 » 30 juil. 2019, 11:54

fenris92 a écrit :
30 juil. 2019, 11:01
Pourtant c'est l'exemple de script fourni dans l'interface pour le type "HTTP Request" avec Dzvents
Dont acte, bon courage :mrgreen:

boum
Messages : 40
Enregistré le : 18 janv. 2019, 11:34
Localisation : France

Re: dzvents - problème récupération état d'un site ou d'un API web

Message par boum » 30 juil. 2019, 14:52

Le message d'erreur, c'est toi qui l'émet ligne 31 du script :D
Dans le cas avec "verbose", c'est notamment parce que le serveur renvoie 200 et non pas 204.
Il faut vérifier tes conditions dans tes "if/then/else" et leur imbrication correcte.
Domoticz v4.10717 sur Pi³ / Z-Wave / RFXCom

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre