In een eerder blog heb ik je verteld over de slimme meter uitlezen. Omdat ik mij heb voorgenomen te gaan besparen waar ik kan, leek het mij verstandig om de dagelijkse kosten van mijn stroom- en gasverbruik in kaart te brengen. Na wat zoekwerk ben ik tot de volgende manier gekomen. Deze uitleg is wat ingewikkelder omdat we gaan werken met dzVents scripts. dzVents is een taal van Domoticz gebaseerd op LUA. Hiermee kan je zeer eenvoudig en snel scripts schrijven voor jouw automatisering. In andere artikels leg ik je nog meer scripts uit, maar voor nu houden we het bij de slimme meter.
Wat heb je nodig:
- Domoticz
- Gekoppelde slimme meter
- 3 Custom Sensoren
- dzEvents script
Als je mijn vorige blog gevolgd hebt, dan heb je je slimme meter aan Domoticz gekoppeld. Dit is natuurlijk belangrijk omdat we anders geen data hebben om mee te werken. Als het goed is zie je 4 sensoren in je Apparaten overzicht:
Stap 1 – Een Dummy toevoegen aan Domoticz
Om de kosten weer te geven gaan we eerst een Dummy aanmaken. Ga naar Instellingen->Hardware.
Kies een duidelijke naam, ik heb gekozen voor Dummy (lekker origineel)
Selecteer bij Type: Dummy (Does nothing, use for virtual switches only).
Laat Gegevens Timeout op “Niet actief” staan.
Klik op Toevoegen.
Je hebt nu een Dummy gemaakt. Niets spannends, want er gebeurt nog niets. Nu kunnen we Virtuele Sensoren aanmaken. Dit worden de sensoren die onze kosten gaan weergeven.
Stap 2 – Maak virtuele sensoren in Domoticz
Klik op maak virtuele sensoren.
Geef je sensor een naam: Stroomkosten.
Kies bij Type voor Custom Sensor.
En vul bij Aslabel EUR in. (Ik kies hier voor EUR omdat het label achter de waarde wordt weergegeven.)
Doe dit vervolgens nog 2x voor de namen:
- Gaskosten
- Kosten Stroom+Gas
Als je dit gedaan hebt dan zie je bij Instellingen->Apparaten 3 nieuwe sensoren staan.
Stap 3 – dzVents script toevoegen in Domoticz
Alle sensoren zijn nu aangemaakt. Tijd voor het ingewikkelde deel. We gaan het dzVents script installeren en activeren.
Dit kan op 2 manieren:
- Via Domoticz -> Gebeurtenissen in de browser
- Of handmatig op de Raspberry Pi
Om het makkelijk te houden raad ik je aan om het via de browser te doen. Later leg ik je uit hoe je dzVents via Raspberry Pi kunt programmeren en geef ik je meer tips over het aanroepen van scripts.
Voor nu blijven we in de browser en gaan we naar Instellingen->Meer instellingen->Gebeurtenissen.
Klik op + en selecteer dzVents->Timer.
Je hebt nu een script file aangemaakt, waarin we het script gaan plaatsen die de berekening voor jouw kosten maakt en dit vervolgens koppelt aan de virtuele sensoren die we eerder gemaakt hebben.
Kopieer onderstaand script:
return { on = { timer = { 'every 15 minutes' }, }, execute = function(domoticz, device, timer) local vandaagKwh = domoticz.devices('Stroom').counterToday local vandaagM3Gas = domoticz.devices('Gas').counterToday local StroomKosten = domoticz.devices('Stroomkosten') local GasKosten = domoticz.devices('Gaskosten') local Kosten = domoticz.devices('Kosten Stroom+Gas') -- Eenheidsprijs in Euro's / Kwh - M3 local kwhPrijs = 0.22875 local gasM3Prijs = 0.74681 if (domoticz.time == 'Between 23:00 and 07:00') or (domoticz.day == 'Saturday') or (domoticz.day == 'Sunday') then kwhPrijs = 0.21330 -- Daltarief else kwhPrijs = 0.22875 -- Normaal tarief end -- Vaste kosten in Euro's per dag (zoals vastrecht) local kwhPrijsVast = 0.1435 local gasM3PrijsVast = 0.1435 -- Kosten berekenen local kwhKosten = tonumber(domoticz.utils.round( (kwhPrijs * vandaagKwh) + kwhPrijsVast,2)) local GasM3Kosten = tonumber(domoticz.utils.round( (gasM3Prijs * vandaagM3Gas) + gasM3PrijsVast,2)) local Kostentotaal = kwhKosten + GasM3Kosten -- Kosten updaten StroomKosten.updateCustomSensor(kwhKosten) GasKosten.updateCustomSensor(GasM3Kosten) Kosten.updateCustomSensor(Kostentotaal) end }
En plaats deze in de editor.
Ik zal kort uitleggen wat het script inhoud. Ben je nog niet bekend met dzVents dan raad ik je aan om de wiki goed te lezen. Voor mij is het ook vrij nieuw, maar met deze handleiding ben ik zelf al een heel eind gekomen. Geloof je het allemaal wel, skip dan door naar de volgende stap.
on = { timer = { 'every 15 minutes' },
Het script draait elke 15 minuten.
local vandaagKwh = domoticz.devices('Stroom').counterToday -- Stroommeter device local vandaagM3Gas = domoticz.devices('Gas').counterToday -- Gasmeter device local StroomKosten = domoticz.devices('Stroomkosten') -- Stroomkosten device local GasKosten = domoticz.devices('Gaskosten') -- Gaskosten device local Kosten = domoticz.devices('Kosten Stroom+Gas')
Hier worden de sensoren opgeroepen en in een variabele gestopt zodat we deze makkelijk kunnen gebruiken verderop in het script. De namen moeten overeenkomen met de namen van je sensoren.
Het volgende deel is belangrijk want hierin worden je energiekosten vanuit de leverancier ingevuld. Zoek jouw tarieven op (deze staan in je contract van je energieleverancier) en vul ze in.
-- Eenheidsprijs in Euro's / Kwh - M3 local kwhPrijs = 0.22875 local gasM3Prijs = 0.74681 if (domoticz.time == 'Between 23:00 and 07:00') or (domoticz.day == 'Saturday') or (domoticz.day == 'Sunday') then kwhPrijs = 0.21330 -- Daltarief else kwhPrijs = 0.22875 -- Normaal tarief end -- Vaste kosten in Euro's per dag (zoals vastrecht) local kwhPrijsVast = 0.1435 local gasM3PrijsVast = 0.1435
In het laatste deel wordt de berekening gemaakt en worden de waardes aan de juiste sensoren toegekend.
En als het goed is zie je nu bij Overig de sensoren met de waardes. Let op: Dit kan even duren omdat het script natuurlijk elke 15 minuten draait.
Update 06-03-2020: Lees je waterkosten per maand uit via Domoticz
Met dank aan Thomas is het ook mogelijk om je waterkosten uit te lezen. Maak 2 nieuwe virtuele sensoren aan (zie hierboven voor de uitleg).
Voeg onderstaande code als los dzVents script toe of combineer hem met het script hierboven.
return { on = { timer = { 'every 30 days' }, }, execute = function(domoticz, device, timer) local vandaagLiters = domoticz.devices(‘Water’).counterToday local WaterKosten = domoticz.devices(‘Waterkosten’) — Eenheidsprijs in Euro’s / Liters local LitersPrijs = 0.09 — Vaste kosten in Euro’s per dag (zoals vastrecht) local LitersPrijsVast = 0.20 — Kosten berekenen local LitersKosten = tonumber(domoticz.utils.round( (LitersPrijs * vandaagLiters) + LitersPrijsVast,2)) — Kosten updaten WaterKosten.updateCustomSensor(LitersKosten) end }
Let op: Om je waterverbruik te monitoren heb je een watermeter nodig die op jouw watermeter past. Deze zijn te koop voor circa € 90,-. Deze dien je zelf met een uitbreidingsboard op je Raspberry Pi te solderen.
Wil je nog meer besparen? Lees de 5 tips om te besparen met een slim huis.
Vond je dit artikel waardevol? Dan zou ik het zeer waarderen als je een reactie achterlaat. Je mag natuurlijk ook vragen stellen, ik help je waar ik kan.
62 reacties
Dag Krijn, dank voor je heldere teksten.
Weet je hoe ik een smart plug met energiemeter integreer in mijn Domoticz applicatie?
Domoticz draait op een Raspberry Pi, ik heb al een paar jaar een P1-kabel aan m’n slimme meter. De smart plug is van Iqonic, op mijn telefoon gebruik ik daarvoor de Smart Life app om de energiemeter uit te kunnen lezen. Dat zou ik ook graag in Domoticz kunnen doen waarbij de informatie wordt opgeslagen zodat ik in Domoticz het verbruik op een tijdlijn kan zien. Weet jij of dat kan? Of moet ik dat anders aanpakken?
Bij voorbaat dank, vrgr, Gert Jan Klijnstra
Mooi script en alles werkt prima behalve dat ik bij jaarlijkse stroom verbruik en kosten enorme negatieve cijfers krijg. Bij dag en maand notering is dit wel goed. Iemand een idee waarom de jaar nnotaties zo anders zijn. ??
Mooi script en alles werkt prima behalve dat ik bij jaarlijkse stroom verbruik en kosten enorme negatieve cijfers krijg. Bij dag en maand notering is dit wel goed. Iemand een idee waarom de jaar nnotaties zo anders zijn. ??
Oh ja en waar moet ik aan denken bij 1 jaar ?? is dat 1 jaar vanaf nu terug gerekend ? Of is dat van 1jan t/m 31dec ??
Hey Krijn,
Ik heb het terugleveren toegevoegd.
return {
on = {
timer = {
‘every 15 minutes’
},
},
execute = function(domoticz, device, timer)
local vandaagKwh = domoticz.devices(‘Power’).counterToday
local vandaagM3Gas = domoticz.devices(‘Gas’).counterToday
local vandaagKwhOpgewekt = domoticz.devices(‘Power’).counterDeliveredToday
local StroomKosten = domoticz.devices(‘Stroomkosten’)
local GasKosten = domoticz.devices(‘Gaskosten’)
local Kosten = domoticz.devices(‘Kosten Stroom+Gas’)
local Opbrengsten = domoticz.devices(‘StroomTerug’)
— Eenheidsprijs in Euro’s / Kwh – M3
local kwhPrijs = 0.44983
local gasM3Prijs = 1.95899
if (domoticz.time == ‘Between 23:00 and 07:00’) or (domoticz.day == ‘Saturday’) or (domoticz.day == ‘Sunday’) then
kwhPrijs = 0.40458 — Daltarief
else
kwhPrijs = 0.48685 — Normaal tarief
end
— Vaste kosten in Euro’s per dag (zoals vastrecht)
local kwhPrijsVast = 0.18757
local gasM3PrijsVast = 0.18757
— Kosten berekenen
local kwhKosten = tonumber(domoticz.utils.round( (kwhPrijs * vandaagKwh) + kwhPrijsVast,2))
local GasM3Kosten = tonumber(domoticz.utils.round( (gasM3Prijs * vandaagM3Gas) + gasM3PrijsVast,2))
local Kostentotaal = kwhKosten + GasM3Kosten
local kwhTerug = tonumber(domoticz.utils.round( (kwhPrijs * vandaagKwhOpgewekt),2))
— Kosten updaten
StroomKosten.updateCustomSensor(kwhKosten)
GasKosten.updateCustomSensor(GasM3Kosten)
Kosten.updateCustomSensor(Kostentotaal)
Opbrengsten.updateCustomSensor(kwhTerug)
end
}
klopt het geld bij kWh terug en bij stroomkosten wel..
ik weet niet zeker hoe de berekening uit de P1 komt met Power (day) daar zie je in de sensor
huidig + en – (door zonnepanelen) en de dag + en – (zonnepanelen)
maar ook heb je een sensor wat de panelen opgeleverd hebben-direct uit de inverters.
In de berekening zou je dan toch iets moeten doen met salderen? Of begrijp ik de berekening niet goed?
De opgewekte prijs is toch ook alleen de kale prijs?
Hmm, script rekent volgens mij niet goed met dag- of nachttarief. Afhankelijk van het moment dat het script wordt aangeroepen rekent hij ofwel het dagtototaal met normaaltarief of hij rekent de alles met het daltarief. Eigenlijk zou hele elk kwartier stukjes moeten optellen, maar ik schrijf hem om naar gemiddelde kWh prijs, zoveel verschil zit niet meer in dal- en normaaltarief
Daar zat ik dus ook naar te kijken. nu heb ik momenteel een verschil van net geen 6 cent en een enorm scheef dag en nacht gebruik.
Hoi Krijn,
dank je wel voor je script. ik gebruik hem nu al een aardige tijd.
Vraagje, ik zag op mn contractgegevens “vermindering energiebelastig (per dag) 1,5303 ”
dit schijnt een vast bedrag per huishouden te zijn.
in hoeverre wordt deze vermindering meegenomen in het script?
Dank alvast!
Floris
Hoi krijn,
Ik heb je script toegepast maar ze blijven 0 euro aangeven. Naam aangepast maar helaas werkt ook niet.
Wat doe ik niet goed. Groet theo
Krijn, inmiddels lijkt het te werken.
Ik denk dat je de namen van de apparaten hé ’t aangepast tov de basis
Hoi Theo,
Goed om te horen dat het werkt! Het is inderdaad belangrijk dat je de benamingen goed overneemt. Dit is mij ook meermaals overkomen. Aldoende leert men 😉
Groeten,
Krijn
Ik zit met 2 zonnepaneelinstallaties. Via bovenstaand script werkt het perfect. Is een waardevolle bijdrage geweest in mijn project.
Maar ik zit met bijkomend. Ik zou graag de momentele waarde (dus de kW) van de twee installaties willen samentellen. Met de counterwaardes van de dag werkt het, maar niet met het momenteel vermogen dat ze opwekken.
Dit zou interessant zijn om bv de boiler van 1200W uit te schakelen als de samengetelde waarde van beide installaties net onder de 1200W komt bij een wolk die voor de zon komt, en op dat moment geen stroom moet aankopen.
Ik hoop natuurlijk dat er mij iemand op weg kan helpen, want ben hier nog niet zo lang mee bezig.
groetjes, Jan
Met fase aan snijding kan je boiler laden op .. % dus heb script gemaakt zodra meer al 250 watt teruggeleverd wordt gaat de boiler van 2000 watt laden met 10 %. Zo zorg ik er voor dat het rustig met stroom die over is de boiler geladen word
Wat doe ik fout de waardes blijven op 0 staan,
zou ik een screenshot mogen sturen
Het is me gelukt , hij kon het script niet wegschrijven naar het path: dit kon ik in de logging zien
nu werkt het prima thx
Ik krijg de volgende melding en heb geen idee hoe wat ik nu verkeerd doe. Ik heb je scripts 1 op 1 geknipt en geplakt. Daarna alleen de prijs aangepast van de stroom;
ik krijg deze melding:
Error: EventSystem: Lua script stroomkosten did not return a commandArray
Hallo Krijn,
IK heb je script in gebruik en dat werkt goed. Maar is zou de log graag een staaf/kolom grafiek zien bij de Energiekosten. Dat zie ik wel bij het gasverbruik, maar ik zou het op een zelfde manier bij de kosten willen zien. dus met kolommen b.v. per uur, per dag en per maand.
Hoe zou dat moeten? Wat moet ik daarvoor aanpassen en hoe?
Hallo Krijn,
Ik wil, daar de TF sturing van mijn boiler gaat verdwijnen, via mijn slimme meter het hoog/laag tarief gebruiken om via een pi en een magneetschakelaar alsnog mijn boiler te schakelen op h/l tarief. Ik heb gezien dat het seriële signaal via p1 van de meter 0-0: 96.14.0 (0002) het h/l tarief geeft.
Weet je of hiervoor een programmaatje is te maken of beschikbaar is.
Werkt als een speer. en weer veel bijgeleerd!
Hoi Krijn, ik heb variabele stroom kosten bij EasyEnergy. Is het ook mogelijke om deze te programmeren? De data is op te vragen volgens onderstaand forum:
https://gathering.tweakers.net/forum/list_messages/1989722
Dag Kees,
Het is mogelijk om dit te programmeren. Je dient als eerste de meest recente kostprijs op te halen vanuit de leverancier. Daarna kun je die in het script verwerken.
Groeten,
Krijn
goedenmiddag
hoe zit het met terug leveren .
ik heb een energie 0 woning geen gas .
de ene dag lever ik 2kw terug en de andere dag gebruik ik 1kw .
gaat dit script ook terug rekenen wat ik terug krijg gestort aan terug levering .
leon
Dag Leon,
Zoals het script nu is wordt er geen rekening gehouden met teruglevering. Dit komt omdat ik zelf geen zonnepanelen heb. Hiervoor heb ik dus hulp nodig van iemand met zonnepanelen.
Zodra ik het script heb uitgebreid zal ik hem hier toevoegen.
Groeten,
Krijn
Wat ben ik blij dat er ook forums zijn waar je wel binnen 2 dagen antwoord krijgt.
Deze kan beter uit de lucht gehaald worden.
Gelukkig heb ik nu een werkend script maar niet dankzij Krijn.
Beste Fred,
Wat vervelend, ik heb je reactie over het hoofd gezien. Aangezien ik dit puur uit hobby doe, reageer ik ook niet op dagelijkse basis. Gelukkig zijn er genoeg fora op dit gebied en ben ik blij te horen dat je toch het antwoord hebt gevonden.
Ik heb nog eens naar het script gekeken en denk dat er een foutje inzit voor gebruikers met dubbele meters (of specifiek Landis E360 meter of door de laatste versie van de Domoticz/dzVents software).
Bepalen van de Kwh-kosten is denk ik incorrect.
Voor een enkele meter en gas meter speelt dit niet. In 24 uur loopt deze telkens op van nul tot gebruikte hoeveelheid die dag.
Pijnpunt zit volgens mij hier:
vandaagKwh is nul bij start van hoogtarief (07:00)
vandaagKwh is nul bij start van laagtarief (00:00)
Hier wordt geen rekening mee gehouden. Kosten zijn opgebouwd uit som vandaagKwh x prijs voor laag- en hoog tarief
Als onderstaande om 07u00 wordt uitgevoerd:
local kwhKosten = tonumber(domoticz.utils.round( (kwhPrijs * vandaagKwh) + kwhPrijsVast,2))
is het resultaat
tonumber(domoticz.utils.round( (kwhPrijs * 0) + kwhPrijsVast,2))
is dus kwhPrijsVast.
Kosten voor laagtarief tot 07u00 is dus gereset.
Ik weet niet of iemand hier ook tegenaangelopen is.
Ik zal komende tijd dit in de gaten houden. Aangezien ik net paar dagen aan het stoeien ben met dzVents en Domoticz (lees gebrek aan ervaring) kan het ook zijn dat ik iedereen op het verkeede been zet.
Leuk artikel en heb zelf in avondje mijn slimme meter kunnen uitlezen. Waar ik tegenaanliep is dat het script na 23u00 denkt te maken te hebben met een hoog tarief.
Mogelijk heeft dit te maken met laatse versie van domoticz en dzVents.
TIP:
Vervang:
if (domoticz.time == ‘Between 23:00 and 07:00’) or (domoticz.day == ‘Saturday’) or (domoticz.day == ‘Sunday’) then
Door:
if (domoticz.time.matchesRule(‘at 23:00-07:00’)) or (domoticz.time.wday == 7) or (domoticz.time.wday == 1)
Ik heb weekend nog niet gecontroleerd maar vermoed dat het wel gaat werken.
Hoop dat dit de lezers helpt bij soortgelijk problemen.
Groet,
Patrick
hallo,
ik heb alles stap voor stap gevolgd en de bedragen aangepast
maar mijn meters geven geen geen bedragen aan moet ik nog iets doen ??
Hallo Krijn,
Helaas is het script om mij onduidelijke reden na een half uur gestopt en geeft een foutmelding in de logfile waar ik niet uitkom.
Ik hoop dat jij of iemand anders mij kan helpen om het werkend te krijgen.
Hieronder alle gegevens.
Alvast bedankt, groetjes,
Fred
50 Energie meters 0001 1 Electra P1 Smart Meter Energy 3431130;3915768;1;8;111;0 – – 2020-08-01 13:29:22
51 Energie meters 00000001 1 Voltage L1 General Voltage 234.8 V – – 2020-08-01 13:29:22
52 Energie meters 00000002 1 Voltage L2 General Voltage 232.5 V – – 2020-08-01 13:29:22
53 Energie meters 00000003 1 Voltage L3 General Voltage 234.7 V – – 2020-08-01 13:29:22
80 Energie meters 0000000 1 Usage L1 Usage Electric 59 Watt – – 2020-08-01 13:29:22
81 Energie meters 0000000 2 Usage L2 Usage Electric 42 Watt – – 2020-08-01 13:29:22
82 Energie meters 0000000 3 Usage L3 Usage Electric 12 Watt – – 2020-08-01 13:29:22
83 Energie meters 0000000 4 Delivery L1 Usage Electric 0 Watt – – 2020-08-01 13:29:22
84 Energie meters 0000000 5 Delivery L2 Usage Electric 0 Watt – – 2020-08-01 13:29:21
85 Energie meters 0000000 6 Delivery L3 Usage Electric 0 Watt – – 2020-08-01 13:29:21
54 Energie meters 0001 2 Gas P1 Smart Meter Gas 2124.751 – – 2020-08-01 13:25:09
Virtuele sensornamen
90 Dummy energiekosten 00082090 1 Gaskosten General Custom Sensor 0.21 Euro – – 2020-08-01 16:22:00
91 Dummy energiekosten 00082091 1 Stroomkosten General Custom Sensor 1.12 Euro – – 2020-08-01 16:22:00
92 Dummy energiekosten 00082092 1 Kostentotaal General Custom Sensor 1.33 Euro – – 2020-08-01 16:22:00
Logfile
2020-08-01 20:15:00.211 Error: dzVents: Error: (3.0.2) An error occurred when calling event handler Script #2
2020-08-01 20:15:00.211 Error: dzVents: Error: (3.0.2) …domoticz/scripts/dzVents/generated_scripts/Script #2.lua:35: attempt to index a nil value (global ‘Electra’)
Script #2
return {
on = {
timer = {
‘every 15 minutes’
},
},
execute = function(domoticz, device, timer)
local vandaagKwh = domoticz.devices(‘Electra’).counterToday
local vandaagM3Gas = domoticz.devices(‘Gas’).counterToday
local Stroomkosten = domoticz.devices(‘Stroomkosten’)
local Gaskosten = domoticz.devices(‘Gaskosten’)
local Kosten = domoticz.devices(‘Kosten Stroom+Gas’)
— Eenheidsprijs in Euro’s / Kwh – M3
local kwhPrijs = 0.22875
local gasM3Prijs = 0.74681
if (domoticz.time == ‘Between 23:00 and 07:00’) or (domoticz.day == ‘Saturday’) or (domoticz.day == ‘Sunday’) then
kwhPrijs = 0.21330 — Daltarief
else
kwhPrijs = 0.22875 — Normaal tarief
end
— Vaste kosten in Euro’s per dag (zoals vastrecht)
local kwhPrijsVast = 0.1435
local gasM3PrijsVast = 0.1435
— Kosten berekenen
local kwhKosten = tonumber(domoticz.utils.round( (kwhPrijs * vandaagKwh) + kwhPrijsVast,2))
local GasM3Kosten = tonumber(domoticz.utils.round( (gasM3Prijs * vandaagM3Gas) + gasM3PrijsVast,2))
local Kostentotaal = kwhKosten + GasM3Kosten
— Kosten updaten
Electra.updateCustomSensor(Stroomkosten)
Gas.updateCustomSensor(GasM3Kosten)
Kosten.updateCustomSensor(Kostentotaal)
end
}
Hoi Krijn,
Na een paar dagen puzzelen met het script ben ik er eindelijk uit.
HET WERKT.
Op meerdere regels moest ik de namen van de sensoren aanpassen dat was het probleem.
Groet,
Fred
Bedankt voor het script. Ik heb hem exact overgenomen en ook bij mij bleef deze op nul staan. Na wat controleren van het log zag i kdat het aan deze regel code kwam:
local vandaagKwh = domoticz.devices(‘Stroom’).counterToday
Ik weet niet waarom maar mijn stroommeter heet power in de apparaten lijst. Dus toen ik de code had veranderd naar:
local vandaagKwh = domoticz.devices(‘Power’).counterToday
Misschien nuttig voor anderen.
Werkte hij wel. Hoe krijg ik nu totalen per week / maand / jaar te zien?
Hoi Geert,
Fijn dat het bij jou wel gelukt is. Helaas bij mij wil het nog steeds niet lukken.
Alle namen heb ik al div keren veranderd maar helaas.
Ik hoop dat Krijn mij kan helpen.
groet
Fred
Hoi Krijn,
Ik heb inmiddels een paar foutjes eruit gehaald dat waren schrijffoutjes van mijn kant.
Ja en dan werkt het natuurlijk ook niet. Ik heb nu dan nog een foutmelding waar ik niet uitkom ik hoop jij wel. Hieronder een kopie ervan.
Graag hoor ik van je wat de oplossing is.
Groetjes
Fred
2020-07-28 18:48:00.368 Error: dzVents: Error: (3.0.2) An error occurred when calling event handler Script #2
2020-07-28 18:48:00.368 Error: dzVents: Error: (3.0.2) …domoticz/scripts/dzVents/generated_scripts/Script #2.lua:30: attempt to perform arithmetic on a nil value (local ‘vandaagKwh’)
2020-07-28 18:50:00.361 Error: dzVents: Error: (3.0.2) An error occurred when calling event handler Script #2
2020-07-28 18:50:00.361 Error: dzVents: Error: (3.0.2) …domoticz/scripts/dzVents/generated_scripts/Script #2.lua:30: attempt to perform arithmetic on a nil value (local ‘vandaagKwh’)
2020-07-28 18:52:00.387 Error: dzVents: Error: (3.0.2) An error occurred when calling event handler Script #2
2020-07-28 18:52:00.387 Error: dzVents: Error: (3.0.2) …domoticz/scripts/dzVents/generated_scripts/Script #2.lua:30: attempt to perform arithmetic on a nil value (local ‘vandaagKwh’)
2020-07-28 18:54:00.392 Error: dzVents: Error: (3.0.2) An error occurred when calling event handler Script #2
2020-07-28 18:54:00.392 Error: dzVents: Error: (3.0.2) …domoticz/scripts/dzVents/generated_scripts/Script #2.lua:30: attempt to perform arithmetic on a nil value (local ‘vandaagKwh’)
Hoi Krijn,
Allereerst geweldig dat je dit allemaal doet en wilt delen.
Ik heb alle stappen gevolgd maar helaas er gebeurt bij mij niets.
In jou script heb ik alleen de timer op 10 min gezet dat is de enige aanpassing.
Toen ik naar dventz en timer ging stond daar al ik denk de uitleg van een timer deze heb ik verwijderd en jou script voor in de plaats gezet. De bedragen kan ik later aanpassen ik moet het eerst werkend hebben. Wat doe ik niet goed? Ik hoop dat je mij kan helpen.
return {
on = {
timer = {
‘every 10 minutes’
},
},
execute = function(domoticz, device, timer)
local vandaagKwh = domoticz.devices(‘Stroom’).counterToday
local vandaagM3Gas = domoticz.devices(‘Gas’).counterToday
local StroomKosten = domoticz.devices(‘Stroomkosten’)
local GasKosten = domoticz.devices(‘Gaskosten’)
local Kosten = domoticz.devices(‘Kosten Stroom+Gas’)
— Eenheidsprijs in Euro’s / Kwh – M3
local kwhPrijs = 0.22875
local gasM3Prijs = 0.74681
if (domoticz.time == ‘Between 23:00 and 07:00’) or (domoticz.day == ‘Saturday’) or (domoticz.day == ‘Sunday’) then
kwhPrijs = 0.21330 — Daltarief
else
kwhPrijs = 0.22875 — Normaal tarief
end
— Vaste kosten in Euro’s per dag (zoals vastrecht)
local kwhPrijsVast = 0.1435
local gasM3PrijsVast = 0.1435
— Kosten berekenen
local kwhKosten = tonumber(domoticz.utils.round( (kwhPrijs * vandaagKwh) + kwhPrijsVast,2))
local GasM3Kosten = tonumber(domoticz.utils.round( (gasM3Prijs * vandaagM3Gas) + gasM3PrijsVast,2))
local Kostentotaal = kwhKosten + GasM3Kosten
— Kosten updaten
StroomKosten.updateCustomSensor(kwhKosten)
GasKosten.updateCustomSensor(GasM3Kosten)
Kosten.updateCustomSensor(Kostentotaal)
end
}
Helaas ik kan geen foto’s meesturen.
Groetjes,
Fred
Hi Krijn,
Ten eerste, super bedankt voor het maken van deze gids, het werkt fantastisch!
However, ik heb wel een enkel probleem. Na het aansluiten van de P1 kabel op mijn slimme meter krijg ik netjes de correcte gasstand te zien, alleen is dit de ‘all-time’ waarde en krijg ik geen waarde per dag te zien.
https://imgur.com/a/z3jCOaR
Dit is dan ook de reden dat mijn gas kosten niet per dag zijn, maar ook volgens de ‘all-time’ stand berekend worden.
https://imgur.com/a/OabvjvC
Enig idee hoe dit is op te lossen? Thanks!
Cool! Net je scriptje geplaatst op mijn nieuwe Domoticz slimme meter configuratie. Werkt perfect. Dank je voor de heldere uitleg, geeft inspiratie om meer te gaan doen!
Hi John,
Graag gedaan. Dit is precies de reden waarom ik gestart ben met bloggen. Andere inspireren en op weg helpen. Ik ben zeker geen expert, maar op deze manier kunnen we van elkaar leren.
Groeten,
Krijn
Bedankt voor het delen van het script, ziet er allemaal simpel en logisch uit, maar toch gaat het bij mij niet goed. Ik krijg deze foutmelding:
domoticz/scripts/dzVents/generated_scripts/Script #1.lua:27: attempt to perform arithmetic on a nil value (local ‘vandaagKwh’)
Terwijl de gegevens wel gewoon weergegeven worden bij het apparaat waar vandaagKwh zijn gegevens vandaan haalt. Blijkbaar lukt er iets niet in het verwerken van de gegevens? Of heb je misschien een idee waar het aan kan liggen?
Beste Krijn,
heb al 2 reacties gegeven maar die zie ik niet terug hier helaas. Kan je mij vertellen wat ik fout doe in mijn script, ik blijf de waarden 0 houden in het dashboard:
return {
on = {
timer = {
‘every 2 minutes’
},
},
execute = function(domoticz, device, timer)
local vandaagKwh = domoticz.devices(‘Stroom’).counterToday
local vandaagM3Gas = domoticz.devices(‘Gas’).counterToday
local StroomKosten = domoticz.devices(‘Stroomkosten’)
local GasKosten = domoticz.devices(‘Gaskosten’)
local Kosten = domoticz.devices(‘Kosten Stroom+Gas’)
— Eenheidsprijs in Euro’s / Kwh – M3
local kwhPrijs = 0.2318
local gasM3Prijs = 0.8122
if (domoticz.time == ‘Between 23:00 and 07:00’) or (domoticz.day == ‘Saturday’) or (domoticz.day == ‘Sunday’) then
kwhPrijs = 0.2174 — Daltarief
else
kwhPrijs = 0.2318 — Normaal tarief
end
— Vaste kosten in Euro’s per dag (zoals vastrecht)
local kwhPrijsVast = 0.8574
local gasM3PrijsVast = 0.7252
— Kosten berekenen
local kwhKosten = tonumber(domoticz.utils.round( (kwhPrijs * vandaagKwh) + kwhPrijsVast,2))
local GasM3Kosten = tonumber(domoticz.utils.round( (gasM3Prijs * vandaagM3Gas) + gasM3PrijsVast,2))
local Kostentotaal = kwhKosten + GasM3Kosten
— Kosten updaten
StroomKosten.updateCustomSensor(kwhKosten)
GasKosten.updateCustomSensor(GasM3Kosten)
Kosten.updateCustomSensor(Kostentotaal)
end
}
Dag Bart, wat raar dat je reactie niet wordt weergegeven.
Ik heb even naar je script gekeken. Ik zie dat bij de timertrigger niet de juiste aanhalingstekens worden gebruikt waardoor hij een foutmelding geeft. Als je een script hebt draaien kun je in de log van Domoticz zien waar het eventueel fout gaat.
Succes,
Krijn
Krijn,
thnx! Heb wat zitten aanpassen en nu werkt het (nu alleen nog op antwoord van Kris wachten over mijn zonnepanelen :-)).
Groet,
Bart
helaas werk het niet bij mij ik heb geknipt en geplakt maar helaas allemaal rode meldingen in de log . dit is wat er als script in zit ,
return {
on = {
timer = {
‘every minute’, — causes the script to be called every minute
‘every other minute’, — minutes: xx:00, xx:02, xx:04, …, xx:58
‘every minutes’, — starting from xx:00 triggers every xx minutes (0 > xx < 60)
'every hour', — 00:00, 01:00, …, 23:00 (24x per 24hrs)
'every other hour', — 00:00, 02:00, …, 22:00 (12x per 24hrs)
'every hours’, — starting from 00:00, triggers every xx hours (0 > xx < 24)
'at 13:45', — specific time
'at *:45', — every 45th minute in the hour
'at 15:*', — every minute between 15:00 and 16:00
'at 12:45-21:15', — between 12:45 and 21:15. You cannot use '*'!
'at 19:30-08:20', — between 19:30 and 8:20 then next day
'at 13:45 on mon,tue', — at 13:45 only on Monday en Tuesday (english)
'every hour on sat', — you guessed it correctly
'at sunset', — uses sunset/sunrise info from Domoticz
'at sunrise',
'at sunset on sat,sun',
'xx minutes before sunset',
'xx minutes after sunset',
'xx minutes before sunrise',
'xx minutes after sunrise', — guess 😉
'between aa and bb', — aa/bb can be a time stamp like 15:44
— aa/bb can be sunrise/sunset
— aa/bb can be 'xx minutes before/after
— sunrise/sunset'
'at nighttime', — between sunset and sunrise
'at daytime', — between sunrise and sunset
'at civildaytime', — between civil twilight start and civil twilight end
'at civilnighttime', — between civil twilight end and civil twilight start
'at daytime on mon,tue', — between sunrise and sunset only on monday and tuesday
— or if you want to go really wild:
'at nighttime at 21:32-05:44 every 5 minutes on sat, sun',
'every 10 minutes between 20 minutes before sunset and 30 minutes after sunrise on mon,fri,tue',
— or just do it yourself:
function(domoticz)
— you can use domoticz.time to get the current time
— note that this function is called every minute!
— custom code that either returns true or false
return true
end,
}
},
execute = function(domoticz, timer)
domoticz.log('Timer event was triggered by ' .. timer.trigger, domoticz.LOG_INFO)
on = {
timer = {
'every 15 minutes'
},
},
execute = function(domoticz, device, timer)
local vandaagKwh = domoticz.devices('Stroom').counterToday
local vandaagM3Gas = domoticz.devices('Gas').counterToday
local StroomKosten = domoticz.devices('Stroomkosten')
local GasKosten = domoticz.devices('Gaskosten')
local Kosten = domoticz.devices('Kosten Stroom+Gas')
— Eenheidsprijs in Euro's / Kwh – M3
local kwhPrijs = 0.22875
local gasM3Prijs = 0.74681
if (domoticz.time == 'Between 23:00 and 07:00') or (domoticz.day == 'Saturday') or (domoticz.day == 'Sunday') then
kwhPrijs = 0.21330 — Daltarief
else
kwhPrijs = 0.22875 — Normaal tarief
end
— Vaste kosten in Euro's per dag (zoals vastrecht)
local kwhPrijsVast = 0.1435
local gasM3PrijsVast = 0.1435
— Kosten berekenen
local kwhKosten = tonumber(domoticz.utils.round( (kwhPrijs * vandaagKwh) + kwhPrijsVast,2))
local GasM3Kosten = tonumber(domoticz.utils.round( (gasM3Prijs * vandaagM3Gas) + gasM3PrijsVast,2))
local Kostentotaal = kwhKosten + GasM3Kosten
— Kosten updaten
StroomKosten.updateCustomSensor(kwhKosten)
GasKosten.updateCustomSensor(GasM3Kosten)
Kosten.updateCustomSensor(Kostentotaal)
end
on = { timer = { 'every 15 minutes' },
local vandaagKwh = domoticz.devices('Stroom').counterToday — Stroommeter device
local vandaagM3Gas = domoticz.devices('Gas').counterToday — Gasmeter device
local StroomKosten = domoticz.devices('Stroomkosten') — Stroomkosten device
local GasKosten = domoticz.devices('Gaskosten') — Gaskosten device
local Kosten = domoticz.devices('Kosten Stroom+Gas')
is er iemand die mij aan een werkend script kan helpen ,heel graag!!
Als ik zo naar je script kijk valt mij op dat je alle timer waardes erin hebt gezet. Dit lijkt mij een beetje teveel van het goede. Probeer eens 1 timer trigger erin te verwerken en dan regel voor regel uit breiden. Zo zie je snel waar de fout zit. Als je mijn uitleg stap voor stap volgt, dan moet je het werkend krijgen. Werk vanuit daar naar een setting die voor jou past.
De kunst is om 1 ding tegelijk aan te passen en de testen. Zo is het makkelijker om fouten te traceren.
Beste Krijn, leuk gedaan. Ik vraag me alleen af waarom je de kosten per eenheid in het script hebt gezet en niet uit de instellingen haalt bij Kosten T1 bijvoorbeeld. Ik ben nl op zoek naar de juist verwijzing naar deze instellingen. Immers dan hoef je het script niet aan te passen als je kWh kosten veranderen, alleen instellingen aanpassen.
Dag Peter,
Goede vraag! Ik vraag het mij nu zelf ook af. Ik ben gewend om in de scripts te schrijven, vandaar dat ik geen rekening heb gehouden dat deze instellingen al in Domoticz zitten. Ik ga binnenkort eens knutselen om te kijken of ik het voor elkaar krijg de waardes uit te lezen uit de instellingen. Bedankt voor de tip!
bedankt voor dit mooie script, het werkte direct na het instellen. ik heb alleen zonnepanelen op het dak liggen en zag dat dat er niet vanaf werd gehaald. ik heb nu je script een beetje aangepast en zien nu niet alleen wat ik eventueel per dag kwijt ben maar ook wat ik eventueel heb verdiend. hieronder het aangepaste script:
return {
on = {
timer = {
‘every 15 minutes’
},
},
execute = function(domoticz, device, timer)
local vandaagKwh = domoticz.devices(‘P1 Meter’).counterToday
local vandaagM3Gas = domoticz.devices(‘P1 Gas’).counterToday
local vandaagopwek = domoticz.devices(‘KWh Meter’).counterToday
local StroomKosten = domoticz.devices(‘Stroomkosten’)
local GasKosten = domoticz.devices(‘Gaskosten’)
local Kosten = domoticz.devices(‘Kosten Stroom+Gas’)
— Eenheidsprijs in Euro’s / Kwh – M3
local kwhPrijs = 0.2163
local gasM3Prijs = 0.7663
if (domoticz.time == ‘Between 23:00 and 07:00’) or (domoticz.day == ‘Saturday’) or (domoticz.day == ‘Sunday’) then
kwhPrijs = 0.2033 — Daltarief
else
kwhPrijs = 0.2163 — Normaal tarief
end
— Vaste kosten in Euro’s per dag (zoals vastrecht)
local kwhPrijsVast = 0.8574
local gasM3PrijsVast = 0.7252
— Kosten berekenen
local kwhKosten = tonumber(domoticz.utils.round( (kwhPrijs * vandaagKwh) – (kwhPrijs * vandaagopwek) + kwhPrijsVast,2))
local GasM3Kosten = tonumber(domoticz.utils.round( (gasM3Prijs * vandaagM3Gas) + gasM3PrijsVast,2))
local Kostentotaal = kwhKosten + GasM3Kosten
— Kosten updaten
StroomKosten.updateCustomSensor(kwhKosten)
GasKosten.updateCustomSensor(GasM3Kosten)
Kosten.updateCustomSensor(Kostentotaal)
end
}
nogmaals bedankt.
kevin
Hi Kevin,
Idem hier, heb zonnepanelen maar kom niet helemaal uit je scriptje. Ik heb als sensor namelijk een Power staan, die aangeeft wat : Verbruik is en wat Levering is. Daarom snap ik niet wat het verschil is in jouw P1 meter en jouw KWH meter. Ben ik duidelijk genoeg?
Groetjes,
Bart
Hallo Kevin.
Heb jouw aangepaste script ook bij mij toegepast in domoticz want ik heb ook zonnepanelen. Kreeg wat foutmeldingen na kopieren van je script naar de script editor in domoticz. Al gauw bleek dat ik de verkeerde komma erin had staan. Toen ik dat gewijzigd had werkte het script direct goed. Ik heb alleen “Hoog” en “Laag” tarief voor overdag op werkdagen en s’nachts inclusief weekend. Tarieven zijn weliswaar hetzelfde maar de telwerken T1 en T2 tellen het wel apart. Vraag me af hoe het verder gaat als ik overga van “Hoog” naar “Laag” ….? Ik heb nu “Hoog” toegevoegd.
Toch alvast bedankt voor je aangepast script.
Hoi Krijn,
Erg bedankt voor deze duidelijk handleiding! Vandaag voor het eerst met een raspberry pi en Domoticz aan de gang gegaan en het werkt! Nu verder verdiepen in deze nieuwe materie.
he hallo, heb volgens mij alles precies gedaan wat op deze pagina staat, toch blijven de tellers bij mij op 0 EUR staan. Ik denk niet dat het NUTS bedrijf dit van me aan neemt:-)
Kan iemand me misschien helpen? alvast bedankt voor de reactie’s
Maand factor gevonden ;-). Je hebt de Timer op “every 30 days” gezet zie ik.
Ik ben zelf niet zo handig in programmeren, maar leer zo al experimenterende steeds meer. Leuk. Om het aantal schrijf bewegingen te beperken: zou je niets zoiets kunnen programmeren dat het script enkel getriggerd wordt bij verspringen van een actuele waarde? Als er dan niemand thuis is, wordt het script ook steeds weggeschreven.
Hi Thomas,
Dit kan zeker! Ik zal binnenkort een stuk code schrijven waarmee dit mogelijk is.
Voor degene die wél handig met de soldeerbout zijn, is de watermeter opnemer natuurlijk voordelig te maken met een 8mm inductief opnemertje en een esp8266. Zie het web voor talloze ideeën hiervoor. Hoe krijg je de opnemer een beetje handig op de watermeter? In mijn geval heb ik een gat geboord in een leeg levensmiddelen bakje van plastic dat over de watermeter past. Zit het klepje in de weg dat kun je er – voorzichtig – afhalen zonder kapot te maken. suc6!
Hallo Krijn, leuk dat je mijn script ook publiceert. Je zegt dat het script de waterkosten per maand weergeeft. Maar waar zit de maand factor in jouw script verwerkt?
De watermeter is – afhankelijk van je type watermeter! – te koop voor zo’n €90,=.
Je moet deze dan nog wel zelf met een “interface” (toch een beetje solderen 😉 in je “home automatic systeem” systeem implementeren. Om zo’n water meeteenheid te vinden is “Google your friend” hierbij. Nogmaals let wel goed op of deze op jouw type watermeter past. suc6.
Beste Krijn,
Heel erg bedankt voor deze duidelijke uitleg. Heb de waardes aangepast en alles geknipt en geplakt en werkt echt perfect! Ben hier echt super blij mee!
Smika
Weer gelukt! Met wat knippen, plakken en toch ook een beetje zelf nadenken 😉 heb ik nu een label in Domoticz dat de kosten voor stroom, gas én ook water weergeeft.
Mijn “watermeter” is overigens een 8mm inductieve opnemer bovenop de meter die de omwentelingen van het meetschijfje telt en die vervolgens via een esp8266 naar Domoticz stuurt.
Weet u toevallig of die “watermeter” met een esp8266 in zijn geheel ergens te koop zijn? Ik ben namelijk geen soldeer persoon :-). Heb vaker gezocht, maar ken de termen niet zo goed. Bij voorbaat dank.
Hallo Krijn,
Je hebt eer van je werk. Onder inspiratie van jouw Tread vanmorgen ook mijn Waterkosten zichtbaar gemaakt. Mijn eerste – maar vanuit jouw idee – werkend stukje dzVents experiment;-). Ik moet nog even experimenteren met de kostenfactoren, maar dat komt wel goed. Timer staat hier op 1 min, maar zet ik terug op 15 min. Nogmaals bedankt.
return {
on = {
timer = {
‘every 1 minutes’
},
},
execute = function(domoticz, device, timer)
local vandaagLiters = domoticz.devices(‘Water’).counterToday
local WaterKosten = domoticz.devices(‘Waterkosten’)
— Eenheidsprijs in Euro’s / Liters
local LitersPrijs = 0.09
— Vaste kosten in Euro’s per dag (zoals vastrecht)
local LitersPrijsVast = 0.20
— Kosten berekenen
local LitersKosten = tonumber(domoticz.utils.round( (LitersPrijs * vandaagLiters) + LitersPrijsVast,2))
— Kosten updaten
WaterKosten.updateCustomSensor(LitersKosten)
end
}
Hi Thomas,
Gaaf om te horen dat het zelf gelukt is! Ik ga jouw stukje code verwerken in de blog.
Groeten,
Krijn
Leuk! Ook ik ben al een tijdje aan het experimenteren met Domoticz, waarbij inmiddels zo “ambitieus” ben geworden dat ik verder wil dan enkele Blockly schakel scriptjes.
Jouw script – met de duidelijke uitleg – gekopieerd en werkt in één keer. Omdat ik nieuwsgierig was of het werkte had ik de timer op 2 min. aangepast 😉 Bedankt voor dit mooie script!
Hi Thomas,
Gaaf om te horen dat het script ook voor jou werkt. Je bent vrij om met de instellingen te spelen.
Let wel op dat een lagere interval zorgt voor meer schrijfopdrachten. Draai je Domoticz op een SD-kaart dan kan dit ten koste gaan van de levensduur.
Groeten,
Krijn