Page 1 sur 2
Calculer le cout de l'électricité
Publié : 24 mars 2020, 18:14
par xavier188
Bonjour, j'ai une interface TELEINFO qui me remonte les valeurs de consommations en kWh. J'ai un double tarif.
Comment faire pour créer un comptage qui compte en euro ?
J'ai vu des valeurs en couts T1 T2 R1 R2 dans les paramètres de l'interface. Comment en faire usage ?
Re: Calculer le cout de l'électricité
Publié : 26 mars 2020, 12:10
par ogulf
Depuis les log du compteur, tu cliques sur Historique (en haut à droite) et tu auras la conversion kWh vers €.
C'est là que servent les paramètres que tu évoques
Re: Calculer le cout de l'électricité
Publié : 26 mars 2020, 13:18
par xavier188
en effet, merci de l'info. Chez moi c'est "Rapport" ou il faut cliquer en haut a droite et non Historique"
En revanche j'ai d'autres questions :
On a le cout au mois. Puis on peut faire apparaitre le prix au jour le jour.
Comment intégrer a ce cout le prix de l'abonnement, qui lui est fixe ?
Est-il possible de remplacer le nom des T1 T2 par HP et HC ?
Merci
Re: Calculer le cout de l'électricité
Publié : 26 mars 2020, 14:17
par vil1driver
Salut,
Clic sur le mois..
Pas possible
Pas possible
Re: Calculer le cout de l'électricité
Publié : 27 mars 2020, 16:05
par adv
Salut les gars,
voici chez moi un script de calcul journalier incluant l'abonnement :

- cout_journalier.png (13.95 Kio) Consulté 12087 fois

- graph_7jours.png (153.65 Kio) Consulté 12087 fois
Voici le code (je sais plus où j'ai trouvé)
coût de l'abonnement ligne 32
nom du compteur d'énergie ligne 24 (votre P1 smart meter)
calcul toutes les 15 minutes
Bon courage !
ADV
Code : Tout sélectionner
--[[
put today's electricity and / or today's Gas usage costs in custom virtual sensor
Collect information from a P1 device and /or a Gas device
electricity takes different tariffs and returns (from solarpanels or the likes) into account.
]]--
local scriptVar = "dailyEnergyCost"
return {
on = { timer = { "every 15 minutes" }, -- using 6 minutes because Stroom and Gas are updated very frequently
httpResponses = { scriptVar .. "*" },
},
logging = { level = domoticz.LOG_ERROR, -- change to LOG_DEBUG when script doesn't execute
marker = sciptVar},
data = { energyCosts = { initial = {} }
},
execute = function(dz, item)
-- ********************************************************************* Your changes below this line *************
-- input Devices
local electricity = dz.devices("EDF") -- P1 device or comment this line
--local gas = dz.devices("Gas") -- Gas meter or comment this line
-- outPut Devices
local electricityCost = dz.devices("CoutJournalier") -- define this virtual sensor as Custom sensor or comment this line when not used
--local gasCost = dz.devices("gasCost today") -- define this virtual sensor as Custom sensor or comment this line when not used
-- fixed Transport + contract costs per month in Euro's
local electricityFixedMonth = 15.88
--local gasFixedMonth = 6.31
-- ********************************************************************** No changes below this line **************
local function getDaysForMonth(month, year) -- Returns number of days in given or current month
if month == nil then month = dz.time.month end
if year == nil then year = dz.time.year end
return os.date('*t',os.time{year=year,month=month+1,day=0}).day
end
local function triggerJSON(url, response, delay)
local delay = delay or 0
dz.openURL({ url = url,
method = "GET",
callback = response}).afterSec(delay)
end
local function getCosts(id) -- these costs should be set in domoticz settings
if next(dz.data.energyCosts) == nil or dz.data.energyCosts.creationTime < ( dz.time.dDate - dz.time.secondsSinceMidnight ) then
local costURL = dz.settings['Domoticz url'] .. "/json.htm?param=getcosts&type=command&idx=" .. id
triggerJSON(costURL, scriptVar .. "_cost")
end
return ( next(dz.data.energyCosts) ~= nil )
end
local function makeCostTable(t) -- (re)Create costTable if not existing yet; Refreshed at least once a day
if next( dz.data.energyCosts ) == nil or dz.data.energyCosts.creationTime < ( dz.time.dDate - dz.time.secondsSinceMidnight ) then
dz.data.energyCosts = t
dz.data.energyCosts.electricityFixedDay = (electricityFixedMonth or 0 ) / getDaysForMonth()
--dz.data.energyCosts.gasFixedDay = (gasFixedMonth or 0 ) / getDaysForMonth()
dz.data.energyCosts.creationTime = dz.time.dDate
dz.data.energyCosts.humanReadableCreationTime = dz.time.raw
end
end
local function updateCustomSensor(device, value)
local currentValue = device.rawData[1]
if value ~= tonumber(currentValue) then -- Update only needed when new value is different fom previous one
dz.log(device.name .. " ==>> previous value: " .. currentValue .. " ; new value " .. value,dz.LOG_DEBUG)
device.updateCustomSensor(value)
end
end
local function getEnergy(id)
local energyURL = dz.settings['Domoticz url'] .. "/json.htm?range=month&sensor=counter&type=graph" ..
"&actmonth=" .. dz.time.month ..
"&idx=" .. id
triggerJSON(energyURL, scriptVar .. "_energy")
end
--local function makeTodaysGasCosts()
-- local gasTodayCost
-- if gasCost then
-- gasTodaysCost = dz.data.energyCosts.gasFixedDay * 10000
-- gasTodaysCost = gasTodaysCost + gas.counterToday * dz.data.energyCosts.CostGas
-- end
-- return dz.utils.round(gasTodaysCost / 10000, 2)
--end
local function makeTodaysElectricityCosts(t)
local today
for i, record in ipairs(t) do
if record.d == dz.time.rawDate then
today = i
end
end
local electricityTodaysCost
if electricityCost then
electricityTodaysCost = dz.data.energyCosts.electricityFixedDay * 10000
if today then
electricityTodaysCost = electricityTodaysCost + t[today].v * dz.data.energyCosts.CostEnergy
electricityTodaysCost = electricityTodaysCost + t[today].v2 * dz.data.energyCosts.CostEnergyT2
electricityTodaysCost = electricityTodaysCost - t[today].r1 * dz.data.energyCosts.CostEnergyR1
electricityTodaysCost = electricityTodaysCost - t[today].r2 * dz.data.energyCosts.CostEnergyR2
end
end
return dz.utils.round(electricityTodaysCost / 10000,2)
end
local function updateCustomSensor(device, value)
if device == nil or value == nil then
return
end
local currentValue = device.rawData[1]
if value ~= tonumber(currentValue) then -- Update only needed when new value is different fom previous one
dz.log(device.name .. " ==>> previous value: " .. currentValue .. " ; new value " .. value,dz.LOG_DEBUG)
device.updateCustomSensor(value)
end
end
if not ( item.isHTTPResponse ) then
if not ( getCosts(electricity.id) ) then
-- logWrite("No or outdated costs. Next time the costs will be there")
return
end
-- logWrite("-- costs are there; get energy data")
getEnergy(electricity.id)
elseif item.trigger == ( scriptVar .. "_energy" ) then
updateCustomSensor( electricityCost, makeTodaysElectricityCosts(item.json.result))
--updateCustomSensor( gasCost, makeTodaysGasCosts())
else
makeCostTable(item.json)
end
end
}
Re: Calculer le cout de l'électricité
Publié : 27 mars 2020, 17:14
par vil1driver
Re: Calculer le cout de l'électricité
Publié : 27 mars 2020, 18:21
par xavier188
alors discutions close. Merci pour l'aide
on est bien d'accord que l'on ne peut pas faire de script avec du Domoticz pour windows ?
Re: Calculer le cout de l'électricité
Publié : 30 mars 2020, 12:01
par adv
Salut, nan nan les scripts LUA sont pris en charge dans Windows...
Sur le blog de Patrice il est stipulé:
Pour nos amis modifiant les fichiers sous Windows, enregistrez les en UTF8 sans BOM (Notepad++)
A+
Re: Calculer le cout de l'électricité
Publié : 30 mars 2020, 14:39
par totof60
@ adv
merci pour le script
Pour ceux qui comme moi vont chercher ; c'est à mettre dans le dossier /home/pi/domoticz/scripts/dzVents/scripts
Re: Calculer le cout de l'électricité
Publié : 30 mars 2020, 18:35
par TryphonDomo
Bonjour,
Pensez vous que je pourrais utiliser ce script pour mon appareil de mesure(UMG605 de Janitza), sachant que je peux lui demander soit l'énergie soit la puissance avec ce code:
http://192.168.1.99/json.do?_PLN[0..2]
Résultat dans une page web:
"_PLN": [[ 1.4371, 3.3327, -2.0997],"W"]} (Courant non branché)
Mais je n'arrive pas à exploiter ces valeurs, à vrai dire, j'ai beau à lire et relire les tutos sur le Json, vraiment du mal à comprendre...
Je ne vois pas comment je peux inclure cette ligne de code dans tous les tutos que j'ai trouvé ici, à chaque fois j'ai des erreurs...
Si quelqu'un peut me venir en aide, ce serait super sympa!