Page 1 sur 4
consommation EDF
Publié : 26 août 2015, 07:52
par Lebert38
Bonjour
Je dispose d un capteur relève EDF qui fonctionne parfaitement avec ma centrale et mon rfxcom.
Je souhaiterais recevoir tous les matins, la consommation de la nuit et la consommation de la journée(veille) par mail.
Comment faire ?
Aujourd'hui je me connecte sur mon interface domoticz et regarde les graphes.
Merci
Re: consommation EDF
Publié : 26 août 2015, 08:31
par vil1driver
salut,
ça dépends du type de compteur (virtuel) utilisé je pense..
ici "Type" : "P1 Smart Meter",
je pense mettre en place ton idée, en stockant les conso totales en début et fin d'heure creuse dans des variables et faire les soustraction le moment voulu, stocker à nouveau le résultat dans des variables et envoyer le tout par mail au matin..
je le sens bien comme ça.. je reviens te dire si je m'en sors..
Re: consommation EDF
Publié : 26 août 2015, 12:31
par Lebert38
J utilise un CM -180
Re: consommation EDF
Publié : 26 août 2015, 17:05
par heartblood
Salut!
Ton module affiche la consommation journalière ?
Par exemple : 1.120 kWh, aujourd'hui : 0.780 kWh
Si c'est le cas, j'avais procédé à l'écriture de plusieurs scripts bash qui récupèrent à plusieurs heures de la journée mes conso.
Il faut savoir que chez moi le tarif c'est HC de 06h30 à 22h30.
En gros, je récupère la conso de la journée à 06h30, 22h30 et 23h59 grâce au cron / crontab
j'enregistre le tout dans 3 variables.
Je fais le calcul
J'enregistre le tout dans un fichier log
J'envoie le tout par mail.
Si c'est ce que tu veux faire, je mettrais mes scripts ici pour que tu t'en inspires.
Re: consommation EDF
Publié : 26 août 2015, 19:47
par Lebert38
C est exactement ça

Re: consommation EDF
Publié : 26 août 2015, 20:36
par vil1driver
peux tu afficher ici le résultat de ceci avec l'idx de ton compteur ? pour voir si les infos sont semblables à celles du miens
avec mon p1 smart meter j'obtiens ceci
"BatteryLevel" : 255,
"Counter" : "27419.928",
"CounterDeliv" : "0.000",
"CounterDelivToday" : "0.000 kWh",
"CounterToday" : "9.328 kWh",
"CustomImage" : 0,
"Data" : "17564639;9855288;0;0;485;0",
"Description" : "",
"Favorite" : 1,
"HardwareID" : 20,
"HardwareName" : "teleinfo",
"HaveTimeout" : false,
"ID" : "1",
"LastUpdate" : "2015-08-26 20:49:19",
"Name" : "conso totale",
"Notifications" : "false",
"PlanID" : "0",
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : 12,
"SubType" : "Energy",
"SwitchTypeVal" : 0,
"Timers" : "false",
"Type" : "P1 Smart Meter",
"TypeImg" : "counter",
"Unit" : 1,
"Usage" : "485 Watt",
"UsageDeliv" : "0 Watt",
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "112"
j'attends le passage en heure creuse pour être certain et partager, mais à priori c'est bon j'ai un script lua qui fonctionne impec

Re: consommation EDF
Publié : 26 août 2015, 22:27
par heartblood
De mon côté, c'est :
- 1 script pour 06h30
- 1 script pour 22h30
- 1 script pour 23h59
- 1 script pour le calcul + enregistrement dans les logs + envoie de mail
Peut être trouveras tu la solution de vil1driver plus simple avec 1 script lua.
Perso, je préfère le bash et le cron quand il s'agit de chose simple à heure fixe.
le script 06h30 (équivalent au script 22h30 et 23h59, seul les variables changent mais le fonctionnement est identique) :
Code : Tout sélectionner
#!/bin/bash
# Inscription dans une variable de la consommation d electricite en heure creuse a 06h30
conso=$(curl -s "http://127.0.0.1:8080/json.htm?type=devices&rid=303"| jq -r .result[].CounterToday)
conso_06h30=${conso% *}
url="http://127.0.0.1:8080/json.htm?type=command¶m=updateuservariable&idx=22&vname=conso_06h30&vtype=1&vvalue=$conso_06h30"
curl -s $url
Script pour le calcul :
Code : Tout sélectionner
#!/bin/bash
# Recupere tous les jours à j-1 la consommation electrique
jour=$(date +%d)
jour_1=$(echo "$jour - 1 " | bc)
mois=$(date +%m)
an=$(date +%Y)
#Recupere la consommation de la veille
conso_HC1=$(curl -s "http://127.0.0.1:8080/json.htm?type=command¶m=getuservariable&idx=22" | jq -r .result[].Value)
conso_22H30=$(curl -s "http://127.0.0.1:8080/json.htm?type=command¶m=getuservariable&idx=23" | jq -r .result[].Value)
conso_23H59=$(curl -s "http://127.0.0.1:8080/json.htm?type=command¶m=getuservariable&idx=24" | jq -r .result[].Value)
#Calcul la consommation
conso_HC2=$(echo "$conso_23H59 - $conso_22H30" | bc)
conso_HC=$(echo "($conso_HC1 + $conso_HC2)" | bc)
conso_HP=$(echo "($conso_22H30 - $conso_HC1)" | bc)
conso_TOTAL=$(echo "$conso_HC + $conso_HP" | bc)
#Calcul le prix de la consommation
prix_HC=$(echo "scale=3; ($conso_HC * 0.0623)/1" | bc)
prix_HP=$(echo "scale=3; ($conso_HP * 0.1019)/1" | bc)
prix_TOTAL=$(echo "$prix_HP + $prix_HC" | bc)
#Creation d'un message avec toutes les valeurs + ecriture de celui-ci dans un log
message="Vous avez consommé le $jour_1 $mois $an, $conso_HC kWh en heure creuse ($prix_HC €), $conso_HP kWh en heure pleine ($prix_HP €) soit $conso_TOTAL kWh au total ($prix_TOTAL €)."
echo $message >> /home/pi/log/conso.log
#Creation et envoie du mail
echo "$message" | mail -s "[INFO]: Consommation Electrique" XXX@XXX.fr
Re: consommation EDF
Publié : 27 août 2015, 00:19
par vil1driver
si tu souhaites utiliser les scripts de @heartblood
il te faudra installer JQ, voir article du blog
http://easydomoticz.com/manipuler-les-d ... -en-shell/
voici le mien en version beta :-p
juste 5 variables à renseigner en début de script..
le script se base sur cette ligne de données (voir plus haut) "Data" : "17564639;9855288;0;0;485;0"
le premier et deuxième nombre correspondent au total HP et HC affiché sur mon compteur EDF
dès qu'un des 2 n'évolue plus, le script détermine que l'on vient de passer des heures pleines aux heures creuses ou inversement.
et du coups mémorises les valeurs,
il fait cela à chaque changement de cycle et calcul la différence entre les valeurs de début et fin de cycle et les mémorise
à l'heure choisie ces valeurs sont envoyer par mail.
toutes les variables utilisateur utiles sont créées automatiquement..
réception du premier mail qu'après un cycle HP et HC complet..
le seul truc qui cloche est que je ne parviens pas à faire un retour chariot dans le message du mail
il me semble avoir vu quelqu'un parler de cela sur le forum anglais, il va falloir que j’essaie de voir quelle réponse il à finalement eu..
Code : Tout sélectionner
-- script_time_edf-Mail.lua
--
-- ce script permet de recevoir par mail le cumule de la consomation électrique de la journée et celle de la nuit
--
-- le script se base sur cette ligne de données "Data" : "17564639;9855288;0;0;485;0"
-- le premier et deuxième nombre correspondent au total HP et HC affiché sur mon compteur EDF
-- dès qu'un des 2 n'évolue plus, le script détermine que l'on vient de passer des heures pleines aux heures creuses ou inversement.
-- et du coups mémorises les valeurs,
-- il fait cela à chaque changement de cycle et calcul la différence entre les valeurs de début et fin de cycle et les mémorise
-- à l'heure choisie ces valeurs sont envoyées par mail.
--
------------------------------------------------------------------------------------------------
--
-- partie à éditer
--
------------------------------------------------------------------------------------------------
local compteur = 'conso totale' -- nom du compteur de consomation électrique
local quand = '10:30' -- heure à laquelle l'on souhaite recevoir le mail (format hh:mm)
local url = '192.168.22.100:8080' -- user:pass@ip:port de domoticz, pour la création des variables
local mail = 'xxxxxxx@gmail.com' -- adresse mail pour réception conso
local titre = 'recap conso' -- titre du mail
------------------------------------------------------------------------------------------------
--
-- Fin de la partie à éditer
--
------------------------------------------------------------------------------------------------
local n=0
time = os.date("*t")
commandArray = {}
-- création des variables utilisateur
-- THP -> total HP pour détection cycle
-- HP1 -> sauvegarde total HP en début de cycle
-- HPT -> THP(fin de cycle) - HP1
-- THC -> total HC pour détection cycle
-- HC1 -> sauvegarde total HC en début de cycle
-- HCT -> THC(fin de cycle) - HC1
-- HPC -> prends les valeurs 'P' ou 'C' suivant si nous somme en heures pleines(P) ou creuses(C)
if(uservariables['THP'] == nil) then
commandArray[n]={['OpenURL']=url..'/json.htm?type=command¶m=saveuservariable&vname=THP&vtype=2&vvalue=%23N%2FA'}
n=n+1
end
if(uservariables['HP1'] == nil) then
commandArray[n]={['OpenURL']=url..'/json.htm?type=command¶m=saveuservariable&vname=HP1&vtype=2&vvalue=%23N%2FA'}
n=n+1
end
if(uservariables['HPT'] == nil) then
commandArray[n]={['OpenURL']=url..'/json.htm?type=command¶m=saveuservariable&vname=HPT&vtype=2&vvalue=%23N%2FA'}
n=n+1
end
if(uservariables['THC'] == nil) then
commandArray[n]={['OpenURL']=url..'/json.htm?type=command¶m=saveuservariable&vname=THC&vtype=2&vvalue=%23N%2FA'}
n=n+1
end
if(uservariables['HC1'] == nil) then
commandArray[n]={['OpenURL']=url..'/json.htm?type=command¶m=saveuservariable&vname=HC1&vtype=2&vvalue=%23N%2FA'}
n=n+1
end
if(uservariables['HCT'] == nil) then
commandArray[n]={['OpenURL']=url..'/json.htm?type=command¶m=saveuservariable&vname=HCT&vtype=2&vvalue=%23N%2FA'}
n=n+1
end
if(uservariables['HPC'] == nil) then
commandArray[n]={['OpenURL']=url..'/json.htm?type=command¶m=saveuservariable&vname=HPC&vtype=2&vvalue=%23N%2FA'}
end
if uservariables['THP'] == nil or
uservariables['HP1'] == nil or
uservariables['HPT'] == nil or
uservariables['THC'] == nil or
uservariables['HC1'] == nil or
uservariables['HCT'] == nil or
uservariables['HPC'] == nil then
print('edf-Mail : script interrompu pour création variable(s) manquante(s)')
return commandArray
end
-- extraction des valeurs du compteur, (P1 smart meter, ex: "Data" : "17564059;9855288;0;0;517;0")
THP, THC, x, y, usage, z = string.match(otherdevices_svalues[compteur], "(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*)")
-- sauvegarde total HP/HC pour comparaison future (détection fin de cycle)
commandArray[1]={['Variable:THP'] = THP}
commandArray[2]={['Variable:THC'] = THC}
-- détection du passage en heures creuses
if (uservariables['THP'] == THP and (uservariables['HPC'] == 'P' or uservariables['HPC'] == '#N/A')) then
-- mémorisation de cycle
commandArray[3]={['Variable:HPC'] = 'C'}
if uservariables['HPC'] == 'P' then
-- calcule et mémorisation du total cycle HP
if uservariables['HP1'] ~= '#N/A' then
commandArray[4]={['Variable:HPT'] = tostring(tonumber((THP - uservariables['HP1']) / 1000))}
end
-- sauvegarde total heures creuses début de cycle
commandArray[5]={['Variable:HC1'] = THC}
print('edf-Mail : passage en heures creuses')
end
end
-- détection du passage en heures pleines
if (uservariables['THC'] == THC and (uservariables['HPC'] == 'C' or uservariables['HPC'] == '#N/A')) then
-- mémorisation de cycle
commandArray[3]={['Variable:HPC'] = 'P'}
if uservariables['HPC'] == 'C' then
-- calcule et mémorisation du total cycle HC
if uservariables['HC1'] ~= '#N/A' then
commandArray[4]={['Variable:HCT'] = tostring(tonumber((THC - uservariables['HC1']) / 1000))}
end
-- sauvegarde total heures pleines début de cycle
commandArray[5]={['Variable:HP1'] = THP}
print('edf-Mail : passage en heures pleines')
end
end
-- on compare l'heure actuelle avec celle programmée
if (time.hour == tonumber(string.sub(quand, 1, 2)) and time.min == tonumber(string.sub(quand, 4, 5))) then
-- si les données sont suffisantes
if uservariables['HPT'] ~= '#N/A' and uservariables['HCT'] ~= '#N/A' then
print('edf-Mail : il est '..quand..', envoie du mail')
-- mise en forme message
local desc = 'Consomation totale HP: '..uservariables['HPT']..' Kwh \r\n Consomation totale HC: '..uservariables['HCT']..' Kwh'
-- envoie du mail
commandArray['SendEmail']=titre..'#'..desc..'#'..mail
end
end
return commandArray
Re: consommation EDF
Publié : 27 août 2015, 00:42
par heartblood
Oui j'avais oublié de le préciser! Merci !
Très bon script, mais qui ne pourrait pas fonctionner sur mon système. J'ai l'aeotec home energy meter qui mesure par des pinces ampèremétriques la puissance et la consommation. Donc pas de passage HP / HC automatique.
Re: consommation EDF
Publié : 27 août 2015, 08:41
par vil1driver
Oui, comme je disais, le script dépend fortement du type de compteur.