Aller au contenu
JossAlf

Module Eco-Devices Avec Calcul Du Coût Journalier

Recommended Posts

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.

 

 

554829Capturedcran20140530143943.png

 

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

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Cool! j'avais prévu de faire ce genre de module prochainement avec HP/HC...tu m'a devancé...

Beau boulot.

;)

Partager ce message


Lien à poster
Partager sur d’autres sites

ça c'est bien  :60:

 

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  :D

hien, Steven....  :P

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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... :(

Partager ce message


Lien à poster
Partager sur d’autres sites
 

Module virtuel mis à  jour.

 

Ajout des lignes 37 à  42 dans le code du bouton (pour avoir les bonnes données avant la bascule à  00h01)... :)

Partager ce message


Lien à poster
Partager sur d’autres sites

merci JossAlf, je suis en train de le modifier pour mon abonnement  ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

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. B)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :-(

Partager ce message


Lien à poster
Partager sur d’autres sites

Lol, tir croisé ... la solution de JossAlf est 10000000 x plus propre que la mienne :)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

Partager ce message


Lien à poster
Partager sur d’autres sites

 

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

Partager ce message


Lien à poster
Partager sur d’autres sites

 

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Voilà  le problème : je pense qu'il faut que j'apprenne à  lire :mellow: ,

 

effectivement mon abonnement est en HP/HC

 

merci je vais l'adapter à  mon abonnement

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Il doit bien y avoir une éditeur de texte sur iPad ? :-)

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ;)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Question, quelques à  fait une version HC/HP ?

 

EDIT : J'ai trouvé, laissé tombé, merci. Par contre qqun remonte la partie compteur d'impulsion ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :60:

 

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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  :15:

Partager ce message


Lien à poster
Partager sur d’autres sites

Je viens de le réimporter mais idem, rien :(

Reste la méthode le faire à  la main et de venir copier le code ;) 

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

×