JossAlf Posté(e) le 27 mai 2014 Signaler Posté(e) le 27 mai 2014 Voici un module virtuel pour l'ECO-DEVICES. J'ai utilisé un bouton plutôt que le main loop car au bout de quelques heures/jours les informations ne remontaient plus. J'espère que ça tiendra cette fois (c'est ok depuis 3 jours)... Il affiche : • l'index en temps réel (évite de descendre dans le garage pour le relevé compteur ou de le faire pendant les vacances) • la consommation instantanée en kWh • la consommation depuis 00h01 et le coà»t en euros. Pour ce calcul, je vous invite à vérifier vos coà»t, taxe et abonnement sur votre facture. Ce module est prévu pour un abonnement standard (donc sans HP HC) mais vous pourrez l'adapter facilement. La conso de la veille est la même sur l'image car je viens de la créer. Elle sera mise à jour ce soit à 00h01. Il vous faudra créer 5 variables globales dans le panneau variables : • ABO • CONSO • INDEX • ConsoMinuit • ConsoVeille Voici le main loop (réduit à sa plus simple expression mais commenté !) -- Notez l'utilisation d'un bouton et non du main loop qui plante au bout de quelques heures !!! -- Pensez à modifier l'adresse IP de votre ECO-Devices. -- NB : calcul commencera seulement après 00h01 (heure de la Mà J de la velur de l'index de référence) fibaro:call(63, "pressButton", "6"); fibaro:sleep(5*1000) -- Attention HC2 ajoute à ce temps le loop de 3 secondes par défaut. Voici le code du bouton (ID 6) : -- mise à jour des données en provenance de l'ECO-Devices : HC2 = Net.FHttp("192.168.0.53") response = HC2:GET("/api/xdevices.json?cmd=10") -- enregistrement du retour de l API dans une table fibaro:debug(response) response = json.decode(response) fibaro:setGlobal("ABO", response.T1_PTEC) fibaro:setGlobal("CONSO", response.T1_PAPP) fibaro:setGlobal("INDEX", response.T1_BASE/1000) fibaro:call(63, "setProperty", "ui.Label1.value", fibaro:getGlobalValue("INDEX") .. " kWh") fibaro:call(63, "setProperty", "ui.Label2.value", fibaro:getGlobalValue("CONSO").." Watts") -- Calcul du coà»t de la conso de la journée maintenant : local VconsoInstant = (fibaro:getGlobalValue("INDEX") - fibaro:getGlobalValue("ConsoMinuit")) VconsoInstant = string.format("%.2f",VconsoInstant) -- coà»t conso réelle (sans abo et taxes) local Vcout = (VconsoInstant * 0.105) -- Prix unitaire HT (€/kWh) :0,0883 HT -- 0,60 € c'est le coà»t TTC des taxes et abonnement : abo + TCFE (CR*0,00932) + CSPE (CR*0,01650) + CTA 2,88 local AboTaxeEtContribution = (15.78 + (VconsoInstant*0.00932) + (VconsoInstant*0.01650) +2.88)/30 --AboTaxeEtContribution = string.format("%.3f",AboTaxeEtContribution) -- calcul conso intstantanée + cout frais fixes à la journée Vcout = Vcout + AboTaxeEtContribution -- réduction du nombre de chiffre après la virgule : Vcout = string.format("%.2f",Vcout) -- Sauvegarde de la conso de la veille : local currentDate = os.date("*t"); if ( ( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "00:00") ) ) then fibaro:setGlobal("ConsoVeille", VconsoInstant .. " kWh soit " .. Vcout .. " €") end -- Sauvegarde de l'index à minuit une : if ( ( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "00:01") ) ) then fibaro:setGlobal("ConsoMinuit", fibaro:getGlobalValue("INDEX")) end -- mise à jour des valeurs des labels fibaro:call(63, "setProperty", "ui.Label3.value", fibaro:getGlobalValue("ConsoMinuit")) fibaro:call(63, "setProperty", "ui.Label4.value", VconsoInstant .. " kWh = " .. Vcout .. " €") fibaro:call(63, "setProperty", "ui.Label5.value", fibaro:getGlobalValue("ConsoVeille")) N'hésitez pas si vous avez des questions ... Mà J : Avec la conso de la veille ... EDF_Ecodevices.vfib 1
Moicphil Posté(e) le 27 mai 2014 Signaler Posté(e) le 27 mai 2014 Cool! j'avais prévu de faire ce genre de module prochainement avec HP/HC...tu m'a devancé... Beau boulot.
Fredric Posté(e) le 27 mai 2014 Signaler Posté(e) le 27 mai 2014 ça c'est bien tu me mâche le travail, j'en veux plus, mais déjà , cela va m'éviter de m’embêter pour les bases, surtout qu'en ce moment j'ai beaucoup de taff, d’ailleurs, vous devez vous rendre compte que je pollue bien vos poste hien, Steven.... 1
JossAlf Posté(e) le 27 mai 2014 Auteur Signaler Posté(e) le 27 mai 2014 Mince... j'ai oublié de décaler l'heure d'enregistrement pour les données de la veille. Je corrigerai ça demain... Du coup les données de la veille sont àzéro...
JossAlf Posté(e) le 28 mai 2014 Auteur Signaler Posté(e) le 28 mai 2014 Module virtuel mis à jour. Ajout des lignes 37 à 42 dans le code du bouton (pour avoir les bonnes données avant la bascule à 00h01)...
Fredric Posté(e) le 28 mai 2014 Signaler Posté(e) le 28 mai 2014 merci JossAlf, je suis en train de le modifier pour mon abonnement
JossAlf Posté(e) le 30 mai 2014 Auteur Signaler Posté(e) le 30 mai 2014 J'ai corrigé le MV avec les termes puissance (pour la consommation instantanée en W) et conso (pour la consommation sur la durée en Wh) qui me semblent plus appropriés ici.
jcb22 Posté(e) le 21 juillet 2014 Signaler Posté(e) le 21 juillet 2014 Bonjour à tous et merci pour ce tuto intéressant, J'ai un petit bug et je ne comprend par pourquoi cela ne fonctionne pas lorsque j'active le mode debug il me notifie ceci : [DEBUG] 11:43:00: {"product":"Eco-devices","T1_PTEC":"HP..","T1_PAPP":220,"T1_HCHP":32522614,"T1_HCHC":25827599,"T2_PTEC":"----","T2_PAPP":0,","INDEX_C1":0,"INDEX_C2":0} [ERROR] 11:43:00: line 7: Expected colon but found invalid token at character 127 La ligne 7 correspond à response = json.decode(response) Pourriez-vous m'aidez car je n'ai vraiment aucune odée de ou cela peut provenir Merci à vous
JossAlf Posté(e) le 21 juillet 2014 Auteur Signaler Posté(e) le 21 juillet 2014 Je crois que ça vient d'un bug de l'eco-Devices et de sa gestion du json. Ça se règle en faisant une mise àjour du firmware. J'avais eu le même problème il y a 4 mois ! http://www.domotique-fibaro.fr/index.php/topic/312-eco-devices/#entry8288
Steven Posté(e) le 21 juillet 2014 Signaler Posté(e) le 21 juillet 2014 Ton module te retourne une donnée qui n'est pas formatée correctement : {"product":"Eco-devices","T1_PTEC":"HP..","T1_PAPP":220,"T1_HCHP":32522614,"T1_HCHC":25827599,"T2_PTEC":"----","T2_PAPP":0,","INDEX_C1":0,"INDEX_C2":0} Ce guillemet et cette virgule semble s'être perdues. Ajoute cette ligne juste avant la ligne 7 response = response:gsub("\",\"INDEX_C1", "\"INDEX_C1") Bien évidement, je ne peux rien garantir, ni même tester :-(
Steven Posté(e) le 21 juillet 2014 Signaler Posté(e) le 21 juillet 2014 Lol, tir croisé ... la solution de JossAlf est 10000000 x plus propre que la mienne
jcb22 Posté(e) le 22 juillet 2014 Signaler Posté(e) le 22 juillet 2014 Bonjour à tous, merci pour vos réponses rapides, la technique de Steven fonctionne Cependant j'ai une nouvelle erreur: [ERROR] 11:12:16: line :setGlobal (arg 3), expected 'string const &' got 'nil' Je suis désolé de devoir encore vous embêter Merci
Steven Posté(e) le 22 juillet 2014 Signaler Posté(e) le 22 juillet 2014 Comme annoncé par JossAlf, met à jour ton IPX car à la lecture du code, tu devrais avoir T1_BASE en retour de ton IPX alors que je ne le vois pas dans le JSON fourni :[DEBUG] 11:43:00: {"product":"Eco-devices","T1_PTEC":"HP..","T1_PAPP":220,"T1_HCHP":32522614,"T1_HCHC":25827599,"T2_PTEC":"----","T2_PAPP":0,","INDEX_C1":0,"INDEX_C2":0} Comme s'il manquait quelque chose OK : fibaro:setGlobal("ABO", response.T1_PTEC) OK : fibaro:setGlobal("CONSO", response.T1_PAPP) PAS OK : fibaro:setGlobal("INDEX", response.T1_BASE/1000)
jcb22 Posté(e) le 22 juillet 2014 Signaler Posté(e) le 22 juillet 2014 Comme annoncé par JossAlf, met à jour ton IPX car à la lecture du code, tu devrais avoir T1_BASE en retour de ton IPX alors que je ne le vois pas dans le JSON fourni : [DEBUG] 11:43:00: {"product":"Eco-devices","T1_PTEC":"HP..","T1_PAPP":220,"T1_HCHP":32522614,"T1_HCHC":25827599,"T2_PTEC":"----","T2_PAPP":0,","INDEX_C1":0,"INDEX_C2":0} Comme s'il manquait quelque chose OK : fibaro:setGlobal("ABO", response.T1_PTEC) OK : fibaro:setGlobal("CONSO", response.T1_PAPP) PAS OK : fibaro:setGlobal("INDEX", response.T1_BASE/1000) Je suis vraiment désolé mais même aprés le changement de version (systéme et site) j'ai la même erreur
Steven Posté(e) le 22 juillet 2014 Signaler Posté(e) le 22 juillet 2014 Ce module est prévu pour un abonnement standard (donc sans HP HC) mais vous pourrez l'adapter facilement. Voilà , je pense, le soucis Cela expliquerait pourquoi tu n'as pas de T1_BASE. Il te faudrait un module qui gère le HP / HC. Ou alors tu veux rien de précis et tu te base sur une moyenne (vu ta consommation 45% en HC et 55% en HP ) tu pourrais faire ainsi. --fibaro:setGlobal("INDEX", response.T1_BASE/1000) fibaro:setGlobal("INDEX", (response.T1_HCHP+response.T1_HCHC)/1000) Qui correspondrait à du 50/50 et tu met comme tarif (prix HP + prix HC / 2). Ou sinon, tu pleures jusqu'à ce que JossAlf modifie son code pour permettre les HC et les HP. .. C'est la solution la plus simple mais pas forcement la plus sà»re.
jcb22 Posté(e) le 22 juillet 2014 Signaler Posté(e) le 22 juillet 2014 Voilà le problème : je pense qu'il faut que j'apprenne à lire , effectivement mon abonnement est en HP/HC merci je vais l'adapter à mon abonnement
JossAlf Posté(e) le 22 juillet 2014 Auteur Signaler Posté(e) le 22 juillet 2014 Cool que tu puisses adapter le code car je suis en vacances avec un iPad mais pas d'ordinateur. Envoyé de mon iPhone àl'aide de Tapatalk
Steven Posté(e) le 22 juillet 2014 Signaler Posté(e) le 22 juillet 2014 Il doit bien y avoir une éditeur de texte sur iPad ? :-)
JossAlf Posté(e) le 22 juillet 2014 Auteur Signaler Posté(e) le 22 juillet 2014 Oui mais le forum s'affiche mal sous safari iOS (je n'arrive pas àaccéder au tag pour les codes)... Et puis j'ai trouvé que ça comme excuse pour me défiler 1
Nico Posté(e) le 27 octobre 2014 Signaler Posté(e) le 27 octobre 2014 Question, quelques à fait une version HC/HP ? EDIT : J'ai trouvé, laissé tombé, merci. Par contre qqun remonte la partie compteur d'impulsion ?
Rocketlud Posté(e) le 11 novembre 2014 Signaler Posté(e) le 11 novembre 2014 Salut, Je viens de passer sur l'ecodevices et je suis aussi en heure de Base comme JossAlf du coup pourquoi reinventer quand des personnes ont fait exactement ce que je recherchais;) Merci JossAlf Par contre j'ai un ptit soucis: - j'ai creé mes 5 variables - J'ai importé le module - j'ai changer la ligne avec l'IP de mon ecodevices j'ai même testé dans un navigateur et j'obtiens bien ça {"product":"Eco-devices","T1_PTEC":"TH..","T1_PAPP":960,"T1_BASE":38600380,"T2_PTEC":"----","T2_PAPP":0,","INDEX_C1":2776,"INDEX_C2":0} Je n'ai pas de retour dans le module EDF Ecodevices? J'ai du oublié qqles choses? une idée? Merci d'avance
JossAlf Posté(e) le 11 novembre 2014 Auteur Signaler Posté(e) le 11 novembre 2014 Je crois que c'est encore le problème de json : Clique ici pour la solution (ca va te ramener au message 9 de la page précédente) : http://www.domotique-fibaro.fr/index.php/topic/1228-module-eco-devices-avec-calcul-du-coût-journalier/#entry19517
Rocketlud Posté(e) le 12 novembre 2014 Signaler Posté(e) le 12 novembre 2014 Merci de ta réponse JossAlf, je viens de passer de la 1.05.05 à la 1.06.06 mais toujours rien Je continue de chercher ou j'aurais pu merdouiller
Rocketlud Posté(e) le 12 novembre 2014 Signaler Posté(e) le 12 novembre 2014 Je viens de le réimporter mais idem, rien Reste la méthode le faire à la main et de venir copier le code
JossAlf Posté(e) le 13 novembre 2014 Auteur Signaler Posté(e) le 13 novembre 2014 Etonnant... car dans la ligne que tu avais collée il y a avait bien le bug (en rouge) : {"product":"Eco-devices","T1_PTEC":"TH..","T1_PAPP":960,"T1_BASE":38600380,"T2_PTEC":"----","T2_PAPP":0,","INDEX_C1":2776,"INDEX_C2":0} ​Peux-tu refaire un copier/coller de données que tu obtiens maintenant que tu as fait la mise à jour ?
Messages recommandés