Aller au contenu
doblanch

Eco device info conso (non RT/non RT2) VD

Recommended Posts

Bonjour à tous,

 

Me voila nouvel adapte Fibaro (anciennement jeedom)

Je démarre donc et est désolé pour le genre de question que je vais posé.

Je suis en trai nde faire un VD pour poller mon eco device...  Il fonctionne bien (coup de chance, je démarre en LEA) , par contre mon VD ne se met pas a jour tout seul, je dois cliquer sur le bouton.

Je ne trouve pas la commande qui me permet de poller l'ecodevice regulierement pour mettre a jour

Il ne doit pas manquer quand chose !!! mais bon j'arrive pas a trouver... de meme je vois pas bien, meme avec la doc, l'inrteret de fibaro:call .... si une ame charitable peut aider un novice !

--Déclaration variables
local thismodule = fibaro:getSelfId();
HC2 = Net.FHttp("192.168.1.200")
 
--Récupération des index EDF
response = HC2:GET("/api/xdevices.json?cmd=10")
response = json.decode(response)
fibaro:setGlobal("CONSO_EAU_TOTAL", response.INDEX_C1)
fibaro:debug('Conso eau total : ' ..response.INDEX_C1)
fibaro:setGlobal("CONSO_GAZ_TOTAL", response.INDEX_C2)
fibaro:debug('Conso Gaz total : ' ..response.INDEX_C2)


--Récupération de la conso instantanée
response = HC2:GET("/api/xdevices.json?cmd=20")
response = json.decode(response)
fibaro:setGlobal("CONSO_EAU_JOUR", response.Day_C1)
fibaro:debug('Conso eau Jour : ' ..response.Day_C1)
fibaro:setGlobal("CONSO_GAZ_JOUR", response.Day_C2)
fibaro:debug('Conso Gaz Jour : ' ..response.Day_C2)

 

Boucle principal:

 

--VD gestion EcoDevice RT V1.00


--Déclaration variables
local CONSO_EAU_TOTAL = fibaro:getGlobal("CONSO_EAU_TOTAL")
local CONSO_GAZ_TOTAL = fibaro:getGlobal("CONSO_GAZ_TOTAL")
local CONSO_EAU_JOUR = fibaro:getGlobal("CONSO_EAU_JOUR")
local CONSO_GAZ_JOUR = fibaro:getGlobal("CONSO_GAZ_JOUR")


--Mise à jour libellé des étiquettes
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.consoeautotal.value", CONSO_EAU_TOTAL .. " L")
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.consogaztotal.value", CONSO_GAZ_TOTAL .. " L")
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.consoeaujour.value", CONSO_EAU_JOUR .." L")
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.consogazjour.value", CONSO_GAZ_JOUR .. " L")

 
--Mise à jour log sur le VD
--fibaro:log("Tarif : " ..mode_tarif .." - Total HC : " ..hc_jour .." - Total HP : " ..hp_jour .." - Total jour : " ..total_jour)

--Update des index
fibaro:sleep(3*1000)
fibaro:call(fibaro:getSelfId(), "pressButton", "button_4_0")

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour @doblanch,

 

Pas à être désolé des questions.

Ce qui est bête c'est surtout de ne pas poser de questions ;-)

 

Dans ton VD, tu as un cadre main loop, tout en bas, qui est programmé par défaut pour tourner toutes les Secondes ou 3 secondes, je ne sais pus exactement.

Dans ce cadre, tu mets le code d'appui sur le bouton du VD, j'utilise ceci (code de @Steven)

 

local selfId = fibaro:getSelfId()
        
-- 1ère fois que le main loop s'exécute, on crée une variable nommée "instance" car elle n'existe pas. Elle existera au 2ème passage donc ne sera pas recrée.
if (not instance) then
    -- on indique la fréquence d'execution souhaitée (en minutes)
    instance = { lastrun = 0, every = 1 }
    fibaro:debug("first run")
end
 
-- on vérifie la différence entre cette exécution et la dernière (stocké dans instance.lastrun)
diff = os.date("*t", os.difftime(os.time(), instance.lastrun))
 
    
-- si la différence en minutes et supérieure ou égale à la fréquence souhaitée (instance.every)
  if (diff.min >= instance.every) then
      fibaro:call(selfId, "pressButton", "14")
      -- on stock l'heure de la nouvelle exécution
      instance.lastrun = os.time()
      fibaro:debug("executed")
  end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,
Faudra peut-être poller un peu le forum aussi
Le mieux c'est de faire une scène qui clic sur le bouton de ton VD à intervalle désiré. (tu peux le faire vis une scène en mode blocs puis basculer en LUA pour t'habituer).
Perso, j'évite d'utiliser le mainloop dans les VD (ça n'a jamais marché au top et reste pas hyper stable).

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans le code que j'ai mis de la main loop, quel est son but ??? 

Tu veux dire que je remplace le main loop par une scene (mode bloc) pour cliquer sur le bouton ? désolé, je suis pas encore très a l'aise, et je pose des questions basiques.

Partager ce message


Lien à poster
Partager sur d’autres sites

J'essaie ton code :-) on va voir ce que ca donne. cool merci je vous tiens au courant

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui tu as le choix :

 

- soit le main loop qui appui à intervalle régulier sur ton bouton

- soit une scène qui appuie sur le bouton du VD à intervalle régulier

 

le code est celui ci pour l'appui sur le bouton :

 

fibaro:call(fibaro:getSelfId(), "pressButton", "14")

 

Pour trouver le numéro du bouton, il faut compter de Gauche à droite et de haut en bas, en prenant en compte les etiquettes. Regarde sur le forum "Home Center pour les nuls"

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Vous êtes des stars les mecs.... ca fonctionne. Et dire qu'il y a 2 jours, la box etait encore dans son carton ! J'ai deja fais un script pour mon eco device :-)

Merci a tous ;-) quelle reactivité... ca aussi ca me change du forum jeedom !

 

 

Capture d’écran 2017-06-01 à 10.44.05.jpg

Partager ce message


Lien à poster
Partager sur d’autres sites

salut j ai ca comme erreur :

ERROR] 09:30:37: line 9: Expected colon but found invalid token at character 58

 

svp help

Partager ce message


Lien à poster
Partager sur d’autres sites

×