Stroom-, gas- en waterkosten zichtbaar maken in Domoticz
In een eerder artikel hebben we uitgelegd hoe je door middel van 3 Python scripts de stroom-, gas- en waterkosten zichtbaar kunt maken in Domoticz. Aangezien ik niet zo’n fan van Python ben heb ik verder gekeken hoe dit makkelijker kan. Gelukkig is de oplossing vrij eenvoudig: een dzVents script zodat alle kosten met één script te zien zijn in Domoticz. Om het waterverbruik in Domoticz te krijgen kun je de eerder geplaatste handleidingen volgen: Waterverbruik met LUA script of Waterverbruik met Python script.
Om het stroom- en gasverbruik inzichtelijk te krijgen moet je de Toon thermostaat koppelen aan Domoticz. Onderstaande zeven sensoren krijg je dan te zien. In dit voorbeeld gaat het om IDX 6 (Stroomverbruik) en IDX 7 (Gasverbruik).
Maak nu een Dummy hardware aan:
Klik vervolgens op “Create Virtual Sensors” en maak een Virtual Sensor aan van het type Custom Sensor. Maak ook een Custom sensor aan met de naam “Gaskosten” en een sensor met de naam “Waterkosten”
Alle kosten-sensoren zijn nu in Domoticz zichtbaar, het is tijd voor het dzVents-script. Ga naar Setup > More Options > Events. Maak een nieuw dzVents script aan van het type Timer en kopieer onderstaand script. Indien de namen van de zes sensoren overeenkomen dan hoef je aan het script niets te wijzigen (de namen van de sensoren staan op regel 7 t/m 13). Het script draait iedere 5 minuten, indien gewenst kun je dat op regel 2 aanpassen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
return { on = { timer = { "every 5 minutes" }}, -- script draait iedere 5 minuten -- on = { devices = { "Stroom","Gas","Waterverbruik" }}, -- Verwijder -- aan het begin van deze regel en plaats -- voor bovenstaande regel als je het script wilt draaien zodra er een nieuw verbruik aan Domoticz is doorgegeven execute = function(dz) -- Devices local vandaagKwh = dz.devices('Stroom').counterToday -- Stroommeter device local vandaagM3Gas = dz.devices('Gas').counterToday -- Gasmeter device local vandaagM3Water = dz.devices('Waterverbruik').counterToday -- Watermeter device local StroomKosten = dz.devices('Stroomkosten') -- Stroomkosten device local GasKosten = dz.devices('Gaskosten') -- Gaskosten device local WaterKosten = dz.devices('Waterkosten') -- Waterkosten device -- Eenheidsprijs in Euro's / Kwh - M3 local kwhPrijs = 0.23029 local gasM3Prijs = 0.5836 local waterM3Prijs = 0.8200 if (dz.time == 'Between 23:00 and 07:00') or (dz.day == 'Saturday') or (dz.day == 'Sunday') then kwhPrijs = 0.21266 -- Daltarief else kwhPrijs = 0.23029 -- Normaal tarief end -- Vaste kosten in Euro's per dag (zoals vastrecht) local kwhPrijsVast = 0.0000 local gasM3PrijsVast = 0.0000 local waterM3PrijsVast = 0.0000 -- Kosten berekenen local kwhKosten = tonumber(dz.utils.round( (kwhPrijs * vandaagKwh) + kwhPrijsVast),2) -- rounded to two decimals and replace dot by comma local GasM3Kosten = tonumber(dz.utils.round( (gasM3Prijs * vandaagM3Gas) + gasM3PrijsVast),2) local WaterM3Kosten = tonumber(dz.utils.round( (waterM3Prijs * vandaagM3Water)/1000 + waterM3PrijsVast),2) -- Kosten updaten StroomKosten.updateCustomSensor(kwhKosten) GasKosten.updateCustomSensor(GasM3Kosten) WaterKosten.updateCustomSensor(WaterM3Kosten) end } |
Na maximaal vijf minuten zie je dat de kosten voor de eerste keer zichtbaar zijn:
Hoi Joost,
Allereerst dank voor alle leuke onderwerpen op je site.
Het uitbreiden van de mogelijkheden van Domoticz staat al een tijd op mijn TODO lijst 😉
Ik vroeg me af waarom je de voorkeur hebt voor dzEvents,
wat als ik het goed begrijp een (proprietary variatie zijn op?) LUA script(s is),
tov Python. Ik lees nl overal dat Python *de* ‘fastets growing major programming language’ is.
Anne.
Leuk idee en net script. Een vraag. Is er een reden dat je niet gekozen hebt om de prijzen in gebruikersvariabelen op te nemen?
Ik ben zelf niet zo’n fan van user variables, omdat je niet kunt aangeven in welke scripts ze gebruikt worden (ik heb zo’n 30 user variables in gebruik).
Duidelijk. 🙂 Begrijp je keuze daarin.
Ik heb het script nog niet geprobeerd, maar als ik het zo zie, lijkt hij nog geen rekening te houden met verschil in hoog en laag tarief. Klopt dat en heb je een idee hoe je dat dan wel voor elkaar zou kunnen krijgen?
Script hield geen rekening met hoog en laag tarief inderdaad. Ik heb even zitten proberen met zo’n dzVents script en onderstaande if then else constructie lijkt nu te werken. Ik heb overigens de Watermeter uitgecomment omdat ik die niet heb.
return {
on = { timer = { “every minute” }}, — script draait iedere 5 minuten
— on = { devices = { “Stroom”,”Gas”,”Waterverbruik” }}, — Verwijder — aan het begin van deze regel en plaats — voor bovenstaande regel als
— je het script wilt draaien zodra er een nieuw verbruik aan Domoticz is doorgegeven
execute = function(Domoticz)
— Devices
local vandaagKwh = Domoticz.devices(‘Stroom’).counterToday — Stroommeter device
local vandaagM3Gas = Domoticz.devices(‘Gas’).counterToday — Gasmeter device
–local vandaagM3Water = Domoticz.devices(‘Waterverbruik’).counterToday — Watermeter device
local StroomKosten = Domoticz.devices(‘Stroomkosten’) — Stroomkosten device
local GasKosten = Domoticz.devices(‘Gaskosten’) — Gaskosten device
–local WaterKosten = Domoticz.devices(‘Waterkosten’) — Waterkosten device
— Eenheidsprijs in Euro’s / Kwh – M3
local kwhPrijs = 0
if (Domoticz.time == ‘Between 23:00 and 07:00’) or (Domoticz.day == ‘Saturday’) or (Domoticz.day == ‘Sunday’) then
kwhPrijs = 0.20978 — Daltarief
else
kwhPrijs = 0.2283 — Normaal tarief
end
local gasM3Prijs = 0.76767
–local waterM3Prijs = 0.8200
— Vaste kosten in Euro’s per dag (zoals vastrecht)
local kwhPrijsVast = 0.82917808
local gasM3PrijsVast = 0.66435616
–local waterM3PrijsVast = 0.0000
— Kosten berekenen
local kwhKosten = tonumber(Domoticz.utils.round( (kwhPrijs * vandaagKwh)+ kwhPrijsVast,2) )–)–:gsub(“%.”,”,”) — rounded to two decimals and replace dot by comma
local GasM3Kosten = tonumber(Domoticz.utils.round( (gasM3Prijs * vandaagM3Gas) + gasM3PrijsVast,2))–)–:gsub(“%.”,”,”)
–local WaterM3Kosten = tonumber(Domoticz.utils.round( (waterM3Prijs * vandaagM3Water)/1000,2) + waterM3PrijsVast)–)–:gsub(“%.”,”,”)
— Kosten updaten
StroomKosten.updateCustomSensor(kwhKosten)
GasKosten.updateCustomSensor(GasM3Kosten)
–WaterKosten.updateCustomSensor(WaterM3Kosten)
end
}
Inderdaad dit werkt alleen was ik even stuk gelopen op het deeltje ‘ execute = function(Domoticz) ‘. In het originele voorbeeld staat ‘execute = function(dz)’ en als je dan twee stukken code merge dan gaat het mis.
Ik ben er blij mee het werkt!!
Geweldig artikel.. net als zovele welke hier op de site staan!
Hoe kom jij trouwens aan die custom icons voor je gas en water sensoren? Zou je ze evt willen delen?
ik krijg een melding in de log :
2019-05-05 16:34:29.732 Status: dzVents: Error (2.4.6): error loading module ‘Hoog en laag tarief’ from file ‘/home/pi/domoticz/scripts/dzVents/generated_scripts/Hoog en laag tarief.lua’:
2019-05-05 16:34:29.732 …cripts/dzVents/generated_scripts/Hoog en laag tarief.lua:2: unexpected symbol near char(226)
en er staat een rood kruisje voor line 2
ik krijg een melding in de log :
2019-05-05 16:34:29.732 Status: dzVents: Error (2.4.6): error loading module ‘Hoog en laag tarief’ from file ‘/home/pi/domoticz/scripts/dzVents/generated_scripts/Hoog en laag tarief.lua’:
2019-05-05 16:34:29.732 …cripts/dzVents/generated_scripts/Hoog en laag tarief.lua:2: unexpected symbol near char(226)
en er staat een rood kruisje voor line 2
kan je iets maken waarbij de terug geleverde stroom wordt verrekend?
Hoi Maarten,
Ik heb geen terug geleverde stroom, helaas kan ik je hier niet mee helpen.
Hoi Maarten,
Dat zou niet al te moeilijk moeten zijn.
Ne zoals in het voorbeeld de kwhKosten worden berekend kun je dat ook doen voor de kwhOpbrengsten.
Je kunt dan nog een extra virtual sensor aanmaken waarin je het verschil opslaat.
Anne.
Ja binnenkort eens in verdiepen.
Ik draai nu 4.10717 en al mijn scrips worden niet meer getriggerd 🙁
dzEvents staan aan
electricityTodaysCost = electricityTodaysCost – t[today].r1 * dz.data.energyCosts.CostEnergyR1
electricityTodaysCost = electricityTodaysCost – t[today].r2 * dz.data.energyCosts.CostEnergyR2
toevoegen aan het script op regel 138,139
draai het al een aantal maanden zonder problemen 🙂
Hoi Maarten,
Zou je je script hier eens bij willen zetten?
Mijn script gaat maar tot regel 39.
Ook ik ben geïnteresseerd in de teruglevering kosten te verrekenen.
Dank U.
Prachtig script.
Echter als ik bij vaste kosten ipv 0.0 invoer maar onderstaande:
— Vaste kosten in Euro’s per dag (zoals vastrecht)
local kwhPrijsVast = 0.14795
local gasM3PrijsVast = 0.14795
Dan is er geen afronding op 2 getallen (bij 0,0 als vastprijs wel.
Hoe zou ik dat op kunnen lossen?
Ik draai Domoticz V4.11337
Script is nu aangepast, zodat bij gebruik van vaste kosten ook de afronding op 2 decimalen wordt toegepast.
Bedankt voor het juist afronden.
Ik draaide Domoticz V4.11337, maar heb nu een schone installatie gedaan en draai nu Domoticz V4.10717 (laatste stable) en waag me even niet meer aan de Beta releases.
Helaas lijkt e.e.a. Niet meer getriggerd te worden.
alles blijft op 1 EUR staan.
Maarten Duijst schreef op 1 september 2019 om 21:33 als oplossing:
electricityTodaysCost = electricityTodaysCost – t[today].r1 * dz.data.energyCosts.CostEnergyR1
electricityTodaysCost = electricityTodaysCost – t[today].r2 * dz.data.energyCosts.CostEnergyR2
toevoegen aan het script op regel 138,139
Maar er is helemaal geen regel 138,139 in je script.
Waar moet ik dat dan neerzetten om alles werkend (trigger) te krijgen onder Domoticz V4.10717 (laatste stable)?
Hallo George,
Maarten gebruikt volgens mij een ander script. Maar met de onderstaande regel kun je de teruglevering uit je stroommeting halen.
local vandaagKwhOpgewekt = dz.devices(‘Stroomverbruik’).counterDeliveredToday — Stroommeter device
Als je deze waarde aftrekt van het verbruik dan heb je de energiekosten per dag.
— Kosten berekenen
local kwhKosten = tonumber(dz.utils.round( ((kwhPrijs * (vandaagKwh-vandaagKwhOpgewekt) + kwhPrijsVast)),2))–:gsub(“%.”.”.”) — rounded to two decimals and replace dot by comma
Ik heb naar de script gekeken en uitgeprobeerd alleen zit er volgens mij een fout in. Je hebt inderdaad onderscheid gemaakt in de prijs van hoogtarief en daltarief. Alleen er is geen onderscheid in de verbruik en de rekensom.
Wat er nu gebeurt met je script is dat op het moment dat deze runt, de stand van verbruik op die dag opvraagd met .counterToday en deze dan vermenigvuldigt met normaaltarief of daltarief afhankelijk van de tijdstip van de dag. Dit betekent dat als je script om 23:59 runt dan zal je de totale verbruik van de dag (hoog en laag, want counterToday maakt daar geen onderscheid in) vermenigvuldigen met de laagtarief.
Ter indicatie is dit geen probleem, maar als je jaarverbruik wilt bijhouden, met oa je andere script, dan heb je telkens gerekend met je daltarief. Je andere script (jaarverbruik) runt op 23:59
Ik probeer dit script te implementeren maar ik krijg een foutmelding in mijn log:
‘EventSystem: Lua script Kosten did not return a commandArray’
Hoe los ik dit op? Ik heb al behoorlijk zitten googlen maar zie geen goede oplossing.
Je heb het script opgeslagen als LUA, maar het is een dzVents-script.
inderdaad, wat stom van me. Nu werkt het wel. Dank voor je hulp.
Zit nog wel met decimalen te rommelen. Het is mij niet helemaal duidelijk hoe ik deze regel moet aanpassen als ik 2 decimalen wil:
Dit is het nu:
local kwhKosten = tonumber(dz.utils.round( (kwhPrijs * vandaagKwh) +
kwhPrijsVast),2) –)–:gsub(“%.”,”,”)
Als ik streepjes aan het einde weg haal krijg ik een foutmelding:
local kwhKosten = tonumber(dz.utils.round( (kwhPrijs * vandaagKwh) +
kwhPrijsVast),2) ):gsub(“%.”,”,”)
Het cijfer 2 zorgt ervoor dat je 2 decimalen krijgt. Als je 2 in 1 verandert dan krijg je een bedrag met 1 decimaal.
maar ik krijg als ik jouw script gebruik geen enkele decimaal alleen hele euro’s. Is dat een instelling in domoticz? Ik zie dit nergens staan qua instelling.
Vreemd! Ik krijg met het script gewoon 2 decimalen (en als ik er 4 neer zet dan krijg ik 4 decimalen).
Vraagje
Werkt dit alleen met een Toon thermostaat of werkt het ook als ik op een andere manier al mijn dagelijkse gasverbruik meet in Domoticz.???
Hoeft niet persé via een Toon thermostaat te gaan.
Zo lang je met een stroommeter, gasmeter en/of watermeter device in Domoticz hebt.
— Devices
local vandaagKwh = dz.devices(‘Stroom’).counterToday — Stroommeter device
local vandaagM3Gas = dz.devices(‘Gas’).counterToday — Gasmeter device
local vandaagM3Water = dz.devices(‘Waterverbruik’).counterToday — Watermeter device
Dat heb ik Joost Ik gebruik onderstaand script maar daar vind ik niet de dagwaardes in terug .
— dzVents script to Parse P1 Smart Meter Electricity value into separate Meter Readings.
local fetchIntervalMins = 5 — (Integer) Minutes frequence of this script execution 1 = every minute, 10 = every 10 minutes, etc ) must be one of (1,2,3,4,5,6,10,12,15,20,30)
local ScriptVersion = ‘0.1.9’
return {
on = {
timer = { ‘every ‘ .. fetchIntervalMins .. ‘ Minutes’ }
},
logging = {
level = domoticz.LOG_DEBUG, — Uncomment this line to override the dzVents global logging setting
marker = ‘SME ‘.. ScriptVersion
},
execute = function(dz, item)
— The following need updated for your environment get the Idx or ‘Name’ of the Device tab.
local P1data = 78 — Electra, P1 Smart Meter device
local idxu1 = 118 — Meter Usage low, Virtual device, counter incremental
local idxu2 = 119 — Meter Usage High, Virtual device, counter incremental
local idxr1 = 120 — Meter Return Low, Virtual device, counter incremental
local idxr2 = 121 — Meter Return High, Virtual device, counter incremental
local idxcons = 122 — Meter Actual Usage, Virtual device, counter incremental
local idxprod = 123 — Meter Actual Production, Virtual device, counter incremental
local idxuTotal = 124 — Meter Usage low, Virtual device, counter incremental
local idxrTotal = 125 — Meter returnlow, Virtual device, counter incremental
— Get values from device P1Data of the Smart Meter
local SMdata = dz.devices(P1data)
local function updateCounter(idx,value)
dz.devices(idx).updateCounter(value)
dz.log(“Set ” .. dz.devices(idx).name .. ” to: “,dz.LOG_DEBUG)
end
— Update the device and Debug meassages with the accessory values from table SMdata
updateCounter(idxu1,SMdata.usage1)
updateCounter(idxu2,SMdata.usage2)
updateCounter(idxr1,SMdata.return1)
updateCounter(idxr2,SMdata.return2)
updateCounter(idxcons,SMdata.usage)
updateCounter(idxprod,SMdata.usageDelivered)
updateCounter(idxuTotal,( SMdata.usage1 + SMdata.usage2 ))
updateCounter(idxrTotal,( SMdata.return1 + SMdata.return2 ))
end
}
Device 78 is je stroommeter. Je moet in het script eventueel wel alles van gas en water verwijderen als je deze devices niet hebt.
Helemaal met jou eens en ik heb ook de niet gebruikte regels gecomenteerd. (–)
Maar als ik Device 78 (mijn p1 meter) zie ik het het huidig verbruik, het dag verbruik en het dag geleverd.
Maar die vind ik niet in de devices van dit script terug.
.counterToday is het dagverbruik van device Stroom
local vandaagKwh = dz.devices(‘Stroom’).counterToday — Stroommeter device
Het script loopt zonder foutmeldingen maar mijn cijfers kloppen niet.
Mijn laatste vermoeden is dat het script alleen te gebruiken is voor een 1 fase meter en niet voor een drie fase meter. Maar ik kan het mis hebben natuurlijk.
Ik ga nog proberen om b.v. het verbruik over de 3 fases bij elkaar te brengen.
Jammer maar zal wel eer wat komen ….
Zijn dit de normale apparaten die je ziet bij het aansluiten van de P1 meter in Domoticz ??
Of mis ik waarde’s ?? Ik zie in de string maar 6 staan ??
78 Energie-meter 0001 1 Stroom P1 Smart Meter Energy 3772454;3368617;2217788;4857762;250;0
79 Energie-meter 0000000 1 Usage L1 Usage Electric 0 Watt
80 Energie-meter 0000000 2 Usage L2 Usage Electric 23 Watt
81 Energie-meter 0000000 3 Usage L3 Usage Electric 226 Watt
82 Energie-meter 0000000 4 Delivery L1 Usage Electric 0 Watt
83 Energie-meter 0000000 5 Delivery L2 Usage Electric 0 Watt
84 Energie-meter 0000000 6 Delivery L3 Usage Electric 0 Watt
85 Energie-meter 0001 2 Gas P1 Smart Meter Gas 6408.862
Je string is hetzelfde als 1 fase bij mij:
218 2019-12-20 19:07:52 Stroom 252503;182608;15;0;217;0
Geen idee of het bij 3 fases anders moet zijn.
Door een paar aanpassingen werkt alles nu op het device van de huidige levering. (idxprod)
Hier kijk ik later nog eens naar waarom ik die waarde niet uit de meter krijg.
Verder heb ik het script toegevoegd voorde stroomkosten en gaskosten .
Echter blijven deze op 1 Euro staan.
Wel mooi maar niet goed lijkt mij..
Kan iemand mij de juiste formulering geven van onderstaande string.
Ik heb het script zo overgenomen maar nu wordt het laatste gedeelte uitgecomenteerd door de twee – –
local kwhKosten = tonumber(dz.utils.round( (kwhPrijs * vandaagKwh) + kwhPrijsVast),2) –)–:gsub(“%.”,”,”)
– -)- -:gsub(“%.”,”,”) kun je weglaten, dit doet niks (meer). Is nu ook verwijderd uit bovenstaand script.
Ik heb van alles geprobeerd maar blijf de waarde 1 houden in het berekenen van de kosten.
local kwhKosten = tonumber(domoticz.utils.round((kwhPrijs*vandaagKwh)+kwhPrijsVast),2)
Alle waarden van de variabelen zijn aanwezig maar de uitkomst is en blijft 1
Ook al verkort ik de regel tot:
local kwhKosten = tonumber(domoticz.utils.round(kwhPrijs*vandaagKwh),2)
Het is en blijft 1
Zelfs als ik het volgende doe:
local kwhKosten = tonumber(domoticz.utils.round((0.23029*2.625)+kwhPrijsVast),2)
Blijft de uitkomst 1
Ja en zelfs bij deze:
local kwhKosten = tonumber(domoticz.utils.round(0.23029*2.625),2)
Zijn er meer die hier problemen mee hebben??
Hierbij de de oplossing:
Als je een argument wilt converteren naar een nummer en dit is reeds een nummer of converteerbare string dan zal het je het nummer geven in alle andere gevallen een 0
Zie ook het misplaatste haakje sluiten in het script.
1ste oplossing:
local kwhKosten = tonumber(dz.utils.round( (kwhPrijs * vandaagKwh) + kwhPrijsVast, 2 ))
Een nog betere oplossing :
local kwhKosten = dz.utils.round( kwhPrijs * vandaagKwh + kwhPrijsVast, 2)
— Kosten berekenen
local kwhKosten = dz.utils.round( (kwhPrijs * vandaagKwh) + kwhPrijsVast,2)
local GasM3Kosten = dz.utils.round( (gasM3Prijs * vandaagM3Gas) + gasM3PrijsVast,2)
–local WaterM3Kosten = dz.utils.round( (waterM3Prijs * vandaagM3Water)/1000 + waterM3PrijsVast,2)
Top kerel, ben al een paar dagen aan het stoeien (maar niet goed gelezen, staat gewoon gepost hier). Het werkt nu perfect bij mij. Bedankt!
Hallo,
ik probeer het aan de gang te krijgen het script. Maar krijg de hele tijd deze melding in mijn log:
020-01-15 22:24:00.474 Status: dzVents: Info: —— Start internal script: energie kosten:, trigger: every minute
2020-01-15 22:24:00.474 Status: dzVents: Error (2.4.19): An error occured when calling event handler energie kosten
2020-01-15 22:24:00.474 Status: dzVents: Error (2.4.19): …icz/scripts/dzVents/generated_scripts/energie kosten.lua:7: attempt to index global ‘Domoticz’ (a nil value)
2020-01-15 22:24:00.474 Status: dzVents: Info: —— Finished energie kosten
iemand een idee?
Alvast dank
Heet jouw stroommeter Stroom? Let op de hoofdletter.
Goedemorgen,
ik ben eruit. Ik had bij local vandaagKwh = Domoticz.devices(‘Meterstanden’).counterToday — Stroommeter device
local vandaagM3Gas = Domoticz.devices(‘Gas1’).counterToday — Gasmeter device
De virtuele sensoren ingevuld. Nu mijn huidige sensoren van p1 meter ingevuld en het werkt. 🙂
Was er al 10 dagen mee aan het stoeien, Ieder geval dank voor het mee denken.
Mijn watermeter telt keurig de liters water maar de kosten van het water worden niet berekend.
Alleen de vaste kosten worden elke dag er bij opgeteld. Waar doe ik wat fout ??
Dat is lastig te zeggen zonder (eventuele) foutmeldingen. Hebben alle devices dezelfde naam als in het artikel? Anders zou het daar al fout kunnen gaan.
Joost ik heb alles nog een keer gecontroleerd en kan geen fouten vinden.
Mijn devices zijn exact zo genoemd als je in jou script ook aangeeft.
Het device “Waterverbruik” geeft keurig het waterverbruik aan als onderstaand.
Waterverbruik: 0.183 m3 ook het totaalverbruik word exact aangegeven. (vandaagM3Water)
Het device “Waterkosten” geeft elke dag aan: 0,34 Euro (dit zijn de vaste kosten per dag(waterM3PrijsVast))
Nu ik dit hier zo schrijf kom ik erachter dat de verekening van water per m3 gaat natuurlijk en niet per liter (gelukkig).
Kan het zo zijn dat er niet eerder verrekening plaats vind dat dat de watermeter op 1m3 staat?
En word deze dan weer terug gezet op 0?
Ik ben er van uit gegaan dat het hetzelfde is als met de stroom en gasmeter.
Elke dag worden deze weer op nul gezet. tenminste de dagmeters
Verder heb ik helemaal geen errors e.d. dus lijkt mij het script goed te lopen.
Probleem opgelost..
local WaterM3Kosten = dz.utils.round( (waterM3Prijs * vandaagM3Water)/ 1000 + waterM3PrijsVast,2)
veranderd in:
local WaterM3Kosten = dz.utils.round( (waterM3Prijs * vandaagM3Water) + waterM3PrijsVast,2)
ik krijg onderstaande error
2020-01-27 03:27:00.448 Status: dzVents: Info: —— Finished electra
2020-01-27 03:27:00.448 Error: dzVents: Error: (2.5.7) An error occurred when calling event handler electra
2020-01-27 03:27:00.448 Error: dzVents: Error: (2.5.7) …i/domoticz/scripts/dzVents/generated_scripts/electra.lua:30: bad argument #1 to ‘tonumber’ (string expected, got number)
aangepast in script
timer 1 minuut
— Devices
local vandaagKwh = dz.devices(‘Power’).CounterToday — Stroommeter device
output json
“result” :
[
{
“AddjMulti” : 1.0,
“AddjMulti2” : 1.0,
“AddjValue” : 0.0,
“AddjValue2” : 0.0,
“BatteryLevel” : 255,
“Counter” : “17174.384”,
“CounterDeliv” : “0.000”,
“CounterDelivToday” : “0.000 kWh”,
“CounterToday” : “1.318 kWh”,
“CustomImage” : 0,
“Data” : “10189996;6984388;0;0;364;0”,
“Description” : “”,
“Favorite” : 1,
“HardwareID” : 4,
“HardwareName” : “Slimme meter”,
“HardwareType” : “P1 Smart Meter USB”,
“HardwareTypeVal” : 4,
“HaveTimeout” : false,
“ID” : “0001”,
“LastUpdate” : “2020-01-27 03:24:06”,
“Name” : “Power”,
“Notifications” : “false”,
“PlanID” : “0”,
“PlanIDs” :
Ik weet niet wat ik fout doe .
iemand een suggestie ?
alvast bedankt Ad
Hoi,
Ik krijg het maar niet aan de praat. Ben helemaal opnieuw begonnen met bovenstaand script en verder nog niets aangepast. Krijg dan deze melding:
2020-02-11 00:25:00.213 Error: dzVents: Error: (2.5.7) An error occurred when calling event handler Script #4
2020-02-11 00:25:00.213 Error: dzVents: Error: (2.5.7) …Domoticz\scripts\dzVents\generated_scripts/Script #4.lua:26: bad argument #1 to ‘tonumber’ (string expected, got number)
Iemand enig idee?
Echt supertof dat je dit hebt opgesteld, ben er al een paar dagen mee bezig maar krijg de kosten niet goed. Er komt nu wel iets in beeld nadat ik de benaming goed had gezet (in het script stond stroom, maar bij mij zit de counter in “Power”
Echter zie ik elke dag “1” euro, bij zowel gas al electra. Ik heb de waarden van mijn energieleverancier overgenomen, vergeet ik iets?
https://www.mupload.nl/img/ka3u6p7328.png
Open even een topic op https://domoticaboard.nl/ met printscreens van je script, devices en log. Dan is het wat makkelijker te achterhalen wat er fout gaat.
Het is uiteindelijk gelukt, staat hierboven beschreven. Gelukt dus!
Super gaaf script, heb deze nu enkele dagen draaien. Super bedankt voor het delen!
Ik heb zelf nog niet zoveel script skills maar denk je dat het haalbaar is om naast het hoog, laag en weekend tarief ook de feestdagen toe te voegen middels exacte datum?
Nederlandse officiële feestdagen in 2020:
Nieuwjaarsdag: woensdag 1 januari
Pasen: zondag 12 april, maandag 13 april
Koningsdag: maandag 27 april
Bevrijdingsdag: dinsdag 5 mei
Hemelvaartsdag: donderdag 21 mei
Pinksteren: zondag 31 mei, maandag 1 juni
Eerste en tweede kerstdag: vrijdag 25 december en zaterdag 26 december
Wanneer deze dagen ook meegenomen kunnen worden krijg je een meer gesloten overzicht die overeenkomt met je jaarafrekening.
Nogmaals bedankt voor je script 🙌
Dat zou wel kunnen, maar dat heeft vrijwel geen effect. Het zijn 10 dagen, waarvan de helft van de uren (‘s nachts) sowieso al in het daltarief vallen. Daarnaast vallen altijd tenminste 2 dagen op zondag (is ook al daltarief).
Over het hele jaar zal het niet meer dan 1 euro verschil maken (uitgaande van 10 kW per dag).
Bedankt voor je reactie Joost en je hebt ook zeker wel gelijk dat het verschil misschien ook wel verwaarloosbaar is maar ik kijk graag altijd achter de komma 🙂
Ben aan bezig om het script werkend te krijgen.
Ik krijg steeds onderstaande foutmelding.
2020-06-19 11:58:00.441 Error: dzVents: Error: (3.0.9) …/domoticz/var/scripts/dzVents/generated_scripts/Venz.lua:29: bad argument #1 to ‘tonumber’ (string expected, got number)
Zou je aan kunnen geven wat ik fout doe?
Groet, Peter
Hoi Peter ik had hetzelfde probleem,
tonumber werkt blijkbaar niet meer, gebruik onderstaande code (dus zonder de tonumber):
local kwhKosten = dz.utils.round( (kwhPrijs * vandaagKwh) + kwhPrijsVast,2)
in het voorbeeld script staat de tonumber nog, maar in de reacties eronder is het aangepast, wellicht kan de auteur het nog aanpassen
Zelf gebruik ik het script mét tonumber en dat werkt hier nog steeds prima (met de nieuwste beta van Domoticz).
ok dan zal er bij mij toch iets anders zijn (ik draai hem op een Pi), maar wellicht dat het bij iemand anders ook tot de oplossing kan leiden
Hi Henry,
Ik heb precies hetzelfde probleem,
2020-07-17 11:43:35.766 Error: dzVents: Error: (3.0.2) An error occurred when calling event handler Script #2
2020-07-17 11:43:35.766 Error: dzVents: Error: (3.0.2) …domoticz/scripts/dzVents/generated_scripts/Script #2.lua:32: bad argument #1 to ‘tonumber’ (string expected, got number)
Dit werkt dan ook niet. Je eerdere oplossing geeft geen foutmelding meer voor Stroomkosten, maar laat nu ook geen waarde zien op de dummy.
@Joost, ik draai zelf ook de laatste versie en tonumber werkt bij mij niet. Enig idee?
Alvast bedankt! 🙂
Beste Joost, bedankt voor dit leuke script! Werk erg goed (vooral nadat ik de tarieven had aangepast en een “Punt” ipv een “Komma” bij de tarieven heb veranderd) Nu heb ik een vraag:
Ik zag dat jij van die leuke “Icons” hebt voor “Gas” en “Stroom”. Kan je me vertellen waar je deze gevonden hebt?
Word nog wel een uitdaging met het energieplafond.