Aller au contenu

Messages recommandés

Posté(e)

Re-bonjour à  tous,

 

je constate un comportement étrange avec mon IPX800, peut-quelqu'un à  connu ça ?

 

J'ai compteur sur l'input 1 pour l'eau.

Celui-ci est interrogé toutes les 30 secondes par une scène pour relevé son index. (index stocké dans une VG, jusque là , c'est normal, classique)

 

Je viens d'installer un autre équipement sur l'input 2 auquel je fais un compteur également.

Celui-ci est interrogé toutes les 5 secondes par une autre scène (sans stocker la valeur dans une VG car juste besoin de comparer sa valeur)

 

et il me semble que de temps en temps il y a un bug qui bloque l'une ou l'autre de ces 2 scènes.

 

et bien sur, j'essaye de reproduire ce bug mais j'y arrive pas...  :angry:

 

La méthode que j'utilise pour relever le compteur est avec une requête "http........api/xdevices?cmd=40"

Je récupère la table Json de tous les compteurs, et je récupère le C1 dans une scène et le C2 dans l'autre.

 

J'ose pas vous poster les scènes car un peu compliquer avec des fonctions... et des setTimeout...

 

-> Bref mon hypothèse serait la suivante, si les 2 scènes font la même requête en même temps vers l'ipx, ça peut planter !?

 

c'est possible ce que je dis ?

 

Une solution serait de faire une seule et unique scène qui interroge l'IPX toutes les 5 s et qui mémorise les compteurs dans des variables globales distinctes.

Mes 2 scènes précédentes n’interrogerait plus l'ipx, mais les VG... et donc plus de risque de collision...

 

quelqu'un a constaté ce genre de phénomène ?

 

Merci à  vous pour vos avis, qui sont en passant, toujours très intéressant !!

 

JJacques68

Posté(e)

Je confirme, voici le message d'erreur qui vient d'apparaitre dans une des 2 scènes :

[DEBUG] 23:57:43: [1;31m2016-10-03 23:57:43.724136 [ fatal] LUA error: /opt/fibaro/scenes/107.lua:27: attempt to concatenate field 'C1' (a nil value)

Et si j'observe le TimeCode de ce debug, il y a eu une requête exactement au même moment (23:57:43) sur l'autre scène. Mais l'autre est passée...

Posté(e)

alors pour voir la différence, j'ai fais une scène qui relève mes infos de l'ipx toute les 5s.

--[[
%% autostart
%% properties
%% events
%% globals
--]]

--pour n'avoir qu'une seule instance de cette scène
if fibaro:countScenes() > 1 then fibaro:abort() end

--permet de relever la table json des compteurs
function ReadIndex()
	local IPX = net.HTTPClient()
	IPX:request("http://192.168.xx.xx/api/xdevices.json?cmd=40", {
		options = {
        		method = 'GET',
        		headers = {['Authorization'] = "BASIC xxxx="},
    	},
		success = function(response)
    				jsonResponse = json.decode(response.data)
	        		CheckCount()
        			CheckIn()
    			  end,
		error = function(response)
        			OnError()
      			end
	})
end

--permet de relever le compteur 1 et 2 de la table json dans des VG
function CheckCount()
  fibaro:setGlobal("IndexEauTotal", jsonResponse.C1)
  fibaro:setGlobal("AlarmeCounter", jsonResponse.C2)
  fibaro:debug("EAU : "..jsonResponse.C1)
  fibaro:debug("alarme : "..jsonResponse.C2)  
end

--permet de relever la valeur des entrées IN dans une VG
function CheckIn()
  local IPX2 = net.HTTPClient()
  IPX2:request("http://192.168.xx.xx/api/xdevices.json?cmd=10", {
		options = {
        		method = 'GET',
        		headers = {['Authorization'] = "BASIC xxxx="},
    	},
		success = function(response)
    				jsonResponse = json.decode(response.data)
	        		fibaro:setGlobal("IpxIn2",jsonResponse.IN2)
        			fibaro:debug("IN2 : "..jsonResponse.IN2)
        			setTimeout(ReadIndex, 5*1000) --bouclage toute les 5s
    			  end,
		error = function(response)
        			OnError()
      			end
  })
end

function OnError()
  fibaro:debug("Error: " ..response)
  setTimeout(ReadIndex, 5*1000)
end

ReadIndex()

Et je n'ai plus eut ce message d'erreur ... donc.. l'ipx aime pas avoir plusieurs requetes HTTP en même temps.

 

J'aurai bien aimé que quelqu'un passe par là  pour donner son avis !

 

 

Posté(e)

Peut-être devrais-tu poser la question sur le forum de GCE Electronics ?

 

Du monde est passé par ici, il y a 18 vues, mais visiblement personne n'a de réponse à  t'apporter.

 

Que ça soit mon IPX800 v4 ou mon Eco Devices, je les interroges toutes les minutes sans aucun bug à  signaler, mais je n'ai pas d'accès concurrent.

 

Pour info l'Eco-Devices, ça fera bientôt 3 ans qu'il tourne, il a subi au moins 1 476 474 requêtes http. Y'a pas de raison que l'IPX800 ne fasse pas mieux :)

Posté(e)

Moi je comprends pas pourquoi vous interrogez l'IPX. Pourquoi ce n'est pas elle qui envoie sur la HC2 ? Perso j'ai que 2 scenes : 1 de synchro des entrées et 1 de synchro des sorties. Quand une entrée ou une sortie change d'état, ça push sur la HC2.

Par contre vous avez réglé le problème d’authentification ? Je l'avais pas mis en place au départ quand j'interrogeait l'IPX parce que ça marchait pas mais c'est pas secure pour le coup (je parle d'IPX v4).

Posté(e)

@BenjNet :

Je passe par une scène car je stocke les infos dans des VG.

Et avec l'ipx on peut pas modifier une VG par le push.

A moins de passer par une scène où VD...

Mais ça complique drôlement je trouve...

Pour l'authentification, si on parle de la même chose, regarde ma scène ci-dessus, je traite l'authentification...

Posté(e)

C'est bien une V4 que t'as ? Parce que moi ça marche pas l'authentification et je ne sais pas pourquoi :( Peut être parce qu'il y a 2 modes d'accès maintenant user et admin. Mais sinon je suis d'accord avec toi sur la v3 ça marchait très bien.

Posté(e)

je rebondis sur ça @BenjyNet :

 

Moi je comprends pas pourquoi vous interrogez l'IPX. Pourquoi ce n'est pas elle qui envoie sur la HC2 ? Perso j'ai que 2 scenes : 1 de synchro des entrées et 1 de synchro des sorties. Quand une entrée ou une sortie change d'état, ça push sur la HC2.

 

Si pour c'est pour une simpe entrée, oui je comprends que ce soit plus facile de procéder ainsi.

 

Mais pour le relevé des compteurs, ça se complique, vaut mieux une scène qui interroge l'ipx toutes les X minutes ou seconde !!

et dans mon cas, cas si les impulsions s'arrêtent (pour l'alarme), il faut que je sache si je suis à  l'état 1 ou 0 sur mon entrée.

 

C'est sà»r cette méthode me gène un peu, car ça fait des accès permanent sur le réseau local, donc encombrement...

 

Mais je vois franchement pas comment faire d'autre.

Posté(e)

@Lazer :

 

Peut-être devrais-tu poser la question sur le forum de GCE Electronics ?

 

C'est fait !

Je mettrais la réponse dans le post. s'ils me répondent...

  • Upvote 1
Posté(e)

C'est bien une V4 que t'as ? Parce que moi ça marche pas l'authentification et je ne sais pas pourquoi :( Peut être parce qu'il y a 2 modes d'accès maintenant user et admin. Mais sinon je suis d'accord avec toi sur la v3 ça marchait très bien.

Pour l'authentification, je ne suis pas spécialiste, mais normalement il faut que tu actives l'API Key (désactivé par défaut)

Exemple pour récupérer les valeurs analogiques je fais :

http://1.2.3.4/api/xdevices.json?key=xxxxx&Get=A
Posté(e)

@Lazer :

 

voici la réponse du servie technique de CGE (bon fallait s'y attendre)

 

 

En effet, si l'espace entre deux requêtes est trop court, la V3 ne pourra pas répondre correctement. Potentiellement elle répond à  la seconde requête sans répondre à  la première ou elle fait un mixe des deux ou encore les deux mais dans la même trame. Les valeurs nulles représentent probablement des valeurs qui ne sont pas interprétable par la Box.

 

Ils ont répondu dès ce matin. Merci pour leur professionnalisme !

Posté(e)

Oui ils sont hyper pro, une fois j'avais lancé une mise à  jour de l'Eco Devices à  2h du mat qui s'est avérée être buguée, donc j'ai aussitôt remonté sur leur forum. Le matin à  9h, le mec me dit qu'il s'en occupe après son café, et à  10h30 on avait la version débugguée :D

 

Je n'avais pas compris que tu avais une V3, je pensais que tu étais sur v4.

Donc la réponse ne m'étonne pas, cela correspond à  tes constatations.

×
×
  • Créer...