Aller au contenu
yves13510

Récupérer valeur compteur d'un IPX800 v4

Recommended Posts

Bonjour,

 

J'utilise un HC2 pour gérer ma maison.

Outre une vingtaine de modules divers de chez Fibaro, j'ai automatisé un certain nombre de périphériques à l'aide d'un ipx800 v3 et un ipx800 v4.

Je commande sans problème les sorties de mes ipx800 via des modules virtuels que j'ai créés.

Par exemple:  GET /api/xdevices.json?SetR=02  HTTP/1.10x0D0x0A0x0D0x0A commande la filtration de ma piscine.

Je voudrais maintenant récupérer la valeur de mes compteurs.

J'ai essayé de créer un module virtuel, mais je ne sais pas comment gérer la variable (MaVariable) que j'ai créée:

 

local MaVariable  

MaVariable = GET /api/xdevices.json?Get=C

HTTP/1.10x0D0x0A0x0D0x0A

 

J'ai également essayé de créer une scène, mais j'obtiens un message d'erreur lorsque je lance le debug :

 

fibaro:debug('Hello world!')
local MaVariable  
local HC2 = net.HTTPClient()
--HC2 = net.httpclient("192.168.10.72" , 5020)
MaVariable = HC2:GET("http://192.168.10.72:5020/api/xdevices.json?Get=C") 

fibaro:debug('conso: ' .. MaVariable)

 

Quelqu'un peut-il m'aider avec un exemple équivalent ?

Merci pour votre aide !!!

A charge de revanche.

 

Yves
  

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,@MAM78 a fait un tuto sur l IPX800v4 qui répond exactement à ton besoin. Fait juste le retrouver mais pas simple depuis le tel.

Envoyé de mon Nexus 5X en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

pour les compteurs sur un IPX V3 moi j'utilise ça dans une scène :

function ReadIndex()
	local IPX = net.HTTPClient()
	IPX:request("http://192.168.xx.yy/api/xdevices.json?cmd=40", {
		options = {
        		method = 'GET',
        		headers = {['Authorization'] = "BASIC YWRtaW46xxxxxxxxx="},
    	},
		success = function(response)
    				jsonResponse = json.decode(response.data)
				fibaro:setGlobal("IndexEauTotal", jsonResponse.C1)
  				fibaro:setGlobal("AlarmeCounter", jsonResponse.C2)
				setTimeout(ReadIndex, 5*1000) --bouclage toute les 5s
    			  end,
		error = function(response)
        			OnError()
      			end
	})
end

donc toutes les 5 secondes je relève les 2 compteurs C1 et C2 qui sont stockés dans 2 variables globales distinctes.

ça marche bien.

 

PS : je suis le seul avoir des soucis avec l'indentation dans l'éditeur de code du fofo ?

les tabulations sautent après le copier/coller!

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour Jean-Jacques,

 

Merci beaucoup pour ta réponse.

J'ai essayé ton code (j'ai un ipx800 V4 donc j'ai changé la commande GET (j'ai vérifié en tapant directement la commande sur Chrome et en retour j'ai bien la valeur des compteurs)).

 

fibaro:debug('Hello world!')

function ReadIndex()
    local IPX = net.HTTPClient() 
  
  IPX:request("http://192.168.10.72:6236/api/xdevices.json?Get=C", {
 
        options = {
                method = 'GET',
                -- headers = {['Authorization'] = "BASIC YWRtaW46xxxxxxxxx="},
                headers = {['Authorization'] = ""},
        },
        success = function(response)
                    jsonResponse = json.decode(response.data)
                    fibaro:debug('Lecture' .. succes )
                    fibaro:setGlobal("IndexEauTotal", jsonResponse.C4)
                    fibaro:debug('IndexEauTotal' .. jsonResponse.C4)
                    setTimeout(ReadIndex, 5*1000) --bouclage toute les 5s
        end,
        error = function(response)
                    fibaro:debug('Erreur Lecture')
                    OnError()
          end
    })
end

 

Quand je lance en mode debug, seul Hello world! apparait.

Cela veut dire que je suis bloqué dès le début de la fonction.

 

PS : Si ma question est trop stupide, tu as parfaitement le droit de ne pas me répondre ! lol

 

Merci pour ton aide.

 

Yves

Partager ce message


Lien à poster
Partager sur d’autres sites

Oups désolé je viens de trouver le bug ! Il ne fallait pas de headers d'autorisation.

Merci beaucoup !!!

 

Yves

Partager ce message


Lien à poster
Partager sur d’autres sites

Attention, juste pour info, l API du v3 est differente de l API du V4 :-)
Conseil optimisation, le code de@jjacques68 remonte les infos depuis la hc2, ce serait mieux d'utiliser les pushs de l ipx :-)

Envoyé de mon Nexus 5X en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite : tu envoies les relevés de compteur depuis l'IPX ?? à intervalle régulier ?

 

Tu fais ça comment ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Moi non, je ne fais rien, j'en ai pas ;-) mais avec le push, ne serait-il pas possible d'envoyer les valeurs sur changement d'état régulièrement ? c'était juste une suggestion d'optimisation, mais je n'ai aucun moyen de vérifier la faisabilité ;-) 

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors là ???  :o

 

Il me semble que c'est pas possible avec un IPX V3, ou alors je sais vraiment pas où c'est...

en même temps y a tellement peu d'option sur le V3...

Partager ce message


Lien à poster
Partager sur d’autres sites

Voilà le résultat final:

- J'ai créé une scène qui récupère le compteur d'eau via un IPX800 v4 (attention les commandes ont changé par rapport à l'Ipx800 v3) et qui met à jour les différentes variables globales Compteur-eau (qu'il ne faut pas oublier de déclarer dans le panel correspondant de la HC2 - 4 au toatal), le cycle de relevé del'index a lieu toutes les 5 secondes.

Merci à jjacques68 pour son aide !

-j'ai également créé un objet virtuel qui affiche les différentes variables et qui calcule le coût du litre d'eau en tenant compte de toutes les différentes taxes et abonnement ici à Aix-en-Provence.

Je suis reparti de l'excellent tuto de  Moicphil. Merci à lui !

J'ai également rajouté une ligne qui me permet de comparer l'index global du compteur d'arrivée d'eau et le calcul théorique de cet index à partir des données du compteur Gianola. 

Cela permet de vérifier qu'il n'y a pas de fuite d'eau entre le compteur d'arrivé et le compteur Gianola (j'ai déjà eu ce problème qui m'a coûté une fortune en eau potable!).

J'espère que cela permettra à d'autres de faire la même chose et bien sur je suis preneur des remarques et des améliorations.

Une chose que je n'ai pas réussi à faire, c'est afficher les valeurs de mon module virtuel en temps réel à l'écran ou sur mon iPhone (je suis obligé de cliquer sur le module virtuel pour qu'il s'affiche).

Si vous savez comment faire ,... de toute façon je cherche de mon côté également.

N'oubliez pas de mettre à jour les constantes liées au prix et à l'index initial du compteur général.

Relève Index.txt

Conso eau Potable.lua

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à tous,

 

Sinon, pour récupérer les impulsions de la sonde, tu peux utiliser un FGK-101-ZW5, juste un petit scénario pour alimenter une variable ci dessous en rouge

 

240=FGK

COMPTEUR_EAU= variable

 

Après si vous pouvez m'aider pour la lua du modèle virtuel ce serait super

 

Maverik

 

 

--[[
%% autostart
%% properties
240 value
%% weather
%% events
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
if (
 ( tonumber(fibaro:getValue(240, "value")) == 0 )
or
startSource["type"] == "other"
)
then
    fibaro:setGlobal("COMPTEUR_EAU", tonumber(fibaro:getGlobalValue("COMPTEUR_EAU")) + 1);
end

 

Modifié par MAVERIK
modif

Partager ce message


Lien à poster
Partager sur d’autres sites

×