yves13510 Posté(e) le 3 mai 2017 Signaler Posté(e) le 3 mai 2017 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
pepite Posté(e) le 3 mai 2017 Signaler Posté(e) le 3 mai 2017 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
jjacques68 Posté(e) le 3 mai 2017 Signaler Posté(e) le 3 mai 2017 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! 1
yves13510 Posté(e) le 3 mai 2017 Auteur Signaler Posté(e) le 3 mai 2017 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
yves13510 Posté(e) le 3 mai 2017 Auteur Signaler Posté(e) le 3 mai 2017 Oups désolé je viens de trouver le bug ! Il ne fallait pas de headers d'autorisation. Merci beaucoup !!! Yves
jjacques68 Posté(e) le 3 mai 2017 Signaler Posté(e) le 3 mai 2017 De rien ! si tout est ok, parfait !
pepite Posté(e) le 3 mai 2017 Signaler Posté(e) le 3 mai 2017 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
jjacques68 Posté(e) le 3 mai 2017 Signaler Posté(e) le 3 mai 2017 @pepite : tu envoies les relevés de compteur depuis l'IPX ?? à intervalle régulier ? Tu fais ça comment ?
pepite Posté(e) le 3 mai 2017 Signaler Posté(e) le 3 mai 2017 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é ;-)
jjacques68 Posté(e) le 3 mai 2017 Signaler Posté(e) le 3 mai 2017 Alors là ??? 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...
yves13510 Posté(e) le 5 mai 2017 Auteur Signaler Posté(e) le 5 mai 2017 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
yves13510 Posté(e) le 5 mai 2017 Auteur Signaler Posté(e) le 5 mai 2017 Une capture d'écran du résultat final !
MAVERIK Posté(e) le 28 mai 2017 Signaler Posté(e) le 28 mai 2017 (modifié) 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é le 28 mai 2017 par MAVERIK modif
Messages recommandés