Aller au contenu

Module Eco-Devices Avec Calcul Du Coût Journalier


JossAlf

Messages recommandés

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
Lien vers le commentaire
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
Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

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

Lien vers le commentaire
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

Lien vers le commentaire
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 :-(

Lien vers le commentaire
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
Lien vers le commentaire
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)
Lien vers le commentaire
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

Lien vers le commentaire
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.

Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...
  • 3 semaines après...

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

Lien vers le commentaire
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

Lien vers le commentaire
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 ?

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...