Est-ce que vous vous êtes déjà demandé s'il serait intéressant d'ajouter une batterie à votre installation de panneaux solaires ? Moi bien
Avant de faire l'achat et même si celui-ci sera probablement dans plusieurs années, je me suis dit que ce serait bien de simuler leur installation. Et pourquoi ne simuler qu'une seule ?
Bon c'est pas le module qui va révolutionner domoticz mais il fait son taf
Dans mon cas, j'ai simulé deux batteries. Une de 5 kWh et une autre de 8,6 kWh. Ainsi en analysant les données, je pourrai voir ce qui serait le plus intéressant. Soit celle de 5 kWh ou celle de 8,6 kWh. On pourrait simuler plus de batteries ou d'autres puissances, le code n'est pas difficile à adapter.
Pour la première, j'ai ajouté deux "Dummy Devices" : un compteur électrique et un pourcentage.
Pour le deuxième, je n'ai utilisé qu'un "Dummy Devices" pourcentage. (je n'avais pas envie de saturer mes dispositifs)
Pour obtenir le nombre de kWh entrant et sortant, j'utilise les informations que me retourne de dispositif "P1 Smart Meter", mais il est facilement adaptable à d'autres systèmes de mesure.
Le principe est simple. S'il y a plus de courant que nécessaire, on charge la/les batterie(s) en tenant compte d'un coefficient de rendement. S'il n'y a pas assez de courant, on décharge la/les batterie(s). On comptabilise aussi ce que l'on achète et ce que l'on vend (un compteur par batterie).
Tout tient dans un simple module dzVents.
Les informations secondaires sont envoyées dans le logfile.
Code : Tout sélectionner
return {
on = {
timer = {'every 5 minutes'}
},
data = {
start = {initial = true},
cptAchatPre ={initial = 0 },
cptVentePre ={initial = 0 },
-- informations gardées pour la batterie 5kWh
Achat5 = {initial = 0},
Vente5 = {initial = 0},
-- informations gardées pour la batterie 8.6 kWh (cas où il n'y a pas l'éléments "compteur électrique"
Batt9kWh = {initial = 0},
Achat9 = {initial = 0},
Vente9 = {initial = 0}
},
logging = {
level = domoticz.LOG_INFO,
marker = 'template',
},
execute = function(domoticz, device)
-- On récupère les données du mon compteurs "intelligent" via le module P1
Achat=domoticz.devices('Electricité').usage1 + domoticz.devices('Electricité').usage2 -- On somme les deux compteurs d'achat d'électricité (jour et nuit)
Vente=domoticz.devices('Electricité').return1 + domoticz.devices('Electricité').return2 -- idem pour les compteurs de vente
-- Si c'est la première fois que l'on fait tourner le module, il faut initialiser les compteurs
if (domoticz.data.start) then
domoticz.data.cptAchatPre=Achat
domoticz.data.cptVentePre=Vente
domoticz.data.start=false --Et on ne doit plus passer
end
-- On regarde le nombre de Wh que l'on a acheté et que l'on a vendu depuis le dernier passage.
AchatPeriode=(Achat-domoticz.data.cptAchatPre)
VentePeriode=(Vente-domoticz.data.cptVentePre)
-- on modifie les variables du module pour le prochain passage
domoticz.data.cptAchatPre=Achat
domoticz.data.cptVentePre=Vente
-- le solde de la période est ce que l'on va charger dans la/les batterie(s) virtuelle(s). Le facteur 0.9 est le coefficient de chargement de la batterie (à modifier si c'est une autre spécification)
Solde=VentePeriode * 0.9 -AchatPeriode
-- Les informations "secondaires" sont affichées dans le log.
text = '<br><br>'
text = text .. 'Achat Période : ' .. AchatPeriode .. ' Wh <br>'
text = text .. 'Vente Période : ' .. VentePeriode .. ' Wh <br>'
-- Simulation de la batterie 5kWh. Elle est représentée par deux éléments :
-- un compteurs éléctrique "Batterie Virtuelle 5kWh" et un pourcentage "Niveau Batterie Virtuelle 5kWh"
if (domoticz.devices('Batterie Virtuelle 5kWh').WhTotal+Solde <0) then --Batterie vide car on veut retirer plus de wh que ce que la batterie possède.
domoticz.devices('Batterie Virtuelle 5kWh').updateElectricity(0,0) -- on "vide" la batterie
text = text .. ('--> Batterie 5kWh Vide ! <--<br>') --On affiche qu'elle est vide
Pourcentage = 0 -- On est à 0 %
domoticz.data.Achat5=domoticz.data.Achat5-(domoticz.devices('Batterie Virtuelle 5kWh').WhTotal+Solde) -- On compte le nb de Wh que l'on achète.
elseif (domoticz.devices('Batterie Virtuelle 5kWh').WhTotal+Solde >5000) then -- Cas où il y a plus de Wh que ce que la batterie peut comptabiliser (ici 5000 wH)
domoticz.devices('Batterie Virtuelle 5kWh').updateElectricity(0,5000) -- On signale que la batterie est pleine.
text = text .. ('--> Batterie 5 Pleine ! <--<br>') --on marque l'info dans le log.
Pourcentage = 1 -- On est à 100% (la multiplication par 100 se fait plus bas ;-) )
domoticz.data.Vente5=domoticz.data.Vente5+(domoticz.devices('Batterie Virtuelle 5kWh').WhTotal+Solde)-5000 -- on compte ce que l'on retourne sur le réseau
else -- soit on charge et le Solde est positif, soit on décharge et le solde est négatif
domoticz.devices('Batterie Virtuelle 5kWh').updateElectricity(Solde,domoticz.devices('Batterie Virtuelle 5kWh').WhTotal+Solde) -- mise à jour du compteur
Pourcentage = (domoticz.devices('Batterie Virtuelle 5kWh').WhTotal)/5000 -- calcul du % (la multiplication par 100 est plus bas)
end
domoticz.devices('Niveau Batterie Virtuelle 5kWh').updatePercentage(Pourcentage*100) -- modification de l'élément %
text = text .. '% batterie 5 : ' .. domoticz.devices('Niveau Batterie Virtuelle 5kWh').percentage .. '<br>' -- Affiche le résultat
--Simultion de la deuxième batterie... Ici il n'y a pas d'élement compteur électrique, c'est pour cela que l'on utilise à la place la variable local au module : domoticz.data.Batt9kWh
--Sinon c'est le même algorithme que pour la batterie 5kWh
if (domoticz.data.Batt9kWh+Solde <0) then
domoticz.data.Batt9kWh=0
text = text .. ('--> Batterie 8,6 kWh Vide ! <--<br>')
Pourcentage = 0
domoticz.data.Achat9=domoticz.data.Achat9-(domoticz.data.Batt9kWh+Solde)
elseif (domoticz.data.Batt9kWh+Solde >8600) then
domoticz.data.Batt9kWh=8600
text = text .. ('--> Batterie 8,6 kWh Pleine ! <--<br>')
Pourcentage = 1
domoticz.data.Vente9=domoticz.data.Vente9+(domoticz.data.Batt9kWh+Solde)-8600
else
domoticz.data.Batt9kWh=domoticz.data.Batt9kWh+Solde
Pourcentage = (domoticz.data.Batt9kWh)/8600
end
domoticz.devices('Niveau Batterie Virtuelle 9kWh').updatePercentage(Pourcentage*100)
text = text .. 'Contenu batterie 8,6 : ' .. domoticz.data.Batt9kWh .. ' Wh <br>' -- On affiche l'innformation dans le log puisqu'il n'y a pas de compteur
text = text .. '% batterie 8,6 : ' .. domoticz.devices('Niveau Batterie Virtuelle 9kWh').percentage .. '<br>'
text= text.. "Compteur Batt 5 Achat : " .. domoticz.data.Achat5 .. " Wh<br>"
text= text.. "Compteur Batt 5 Vente : " .. domoticz.data.Vente5 .. " Wh<br>"
text= text.. "Compteur Batt 8,6 Achat : " .. domoticz.data.Achat9 .. " Wh<br>"
text= text.. "Compteur Batt 8,6 Vente : " .. domoticz.data.Vente9 .. " Wh<br>"
domoticz.log(text) -- affiche données dans le log
end
}Vulmix