consommation EDF

Forum dédié au Rfxcom et consorts utilisant les fréquences 433 et 866 MHz.
Pour les questions concernant les RFLINK, merci d'utiliser le forum spécifique en dessous.
Lebert38
Messages : 16
Inscription : 14 juin 2015, 19:46

consommation EDF

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: consommation EDF

Message 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..
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Lebert38
Messages : 16
Inscription : 14 juin 2015, 19:46

Re: consommation EDF

Message par Lebert38 »

J utilise un CM -180
heartblood
Messages : 189
Inscription : 13 août 2015, 09:50

Re: consommation EDF

Message 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.
Lebert38
Messages : 16
Inscription : 14 juin 2015, 19:46

Re: consommation EDF

Message par Lebert38 »

C est exactement ça ;)
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: consommation EDF

Message 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

Code : Tout sélectionner

/json.htm?type=devices&rid=IDX
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 ;)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
heartblood
Messages : 189
Inscription : 13 août 2015, 09:50

Re: consommation EDF

Message 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&param=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&param=getuservariable&idx=22" | jq -r .result[].Value)
conso_22H30=$(curl -s "http://127.0.0.1:8080/json.htm?type=command&param=getuservariable&idx=23" | jq -r .result[].Value)
conso_23H59=$(curl -s "http://127.0.0.1:8080/json.htm?type=command&param=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
 
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: consommation EDF

Message 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&param=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&param=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&param=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&param=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&param=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&param=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&param=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
Dernière modification par vil1driver le 30 août 2015, 13:18, modifié 7 fois.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
heartblood
Messages : 189
Inscription : 13 août 2015, 09:50

Re: consommation EDF

Message par heartblood »

vil1driver a écrit : 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/
Oui j'avais oublié de le préciser! Merci ! :roll:

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.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: consommation EDF

Message par vil1driver »

Oui, comme je disais, le script dépend fortement du type de compteur.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Répondre