DomoticzDzVentsMijn Smart HomeScripts

Dagelijkse energiekosten weergeven in Domoticz

34 reacties

Leestijd: 5 min

In een eerder blog heb ik je verteld over de slimme meter uitlezen in Domoticz. 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:

Domoticz Energiekosten Apparaten

Stap 1 – Een Dummy toevoegen aan Domoticz

Om de kosten weer te geven gaan we eerst een Dummy aanmaken. Ga naar Instellingen->Hardware .

Domoticz Energiekosten Dummy

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.

Domoticz Energiekosten Custom Sensor

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.

Domoticz Energiekosten Dzvents

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.


Klik nu op Opslaan.

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.

Domoticz Energiekosten

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 bovenstaand script.

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 te solderen.

 

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.

Tags: Domoticz, DzVents, Mijn Smart Home, Scripts

34 reacties. Reactie plaatsen

  • Fred vd Poel
    3 augustus 2020 21:02

    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
    }

    Beantwoorden
  • Fred van der Poel
    1 augustus 2020 16:27

    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

    Beantwoorden
  • 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?

    Beantwoorden
    • Fred van der Poel
      1 augustus 2020 13:22

      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

      Beantwoorden
  • Fred van der Poel
    28 juli 2020 19:13

    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’)

    Beantwoorden
  • Fred van der Poel
    26 juli 2020 11:07

    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

    Beantwoorden
  • 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!

    Beantwoorden
  • 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!

    Beantwoorden
    • 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

      Beantwoorden
  • 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?

    Beantwoorden
  • 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
    }

    Beantwoorden
    • 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

      Beantwoorden
      • Krijn,

        thnx! Heb wat zitten aanpassen en nu werkt het (nu alleen nog op antwoord van Kris wachten over mijn zonnepanelen :-)).

        Groet,
        Bart

        Beantwoorden
  • 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!!

    Beantwoorden
    • 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.

      Beantwoorden
  • 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.

    Beantwoorden
    • 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!

      Beantwoorden
  • 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

    Beantwoorden
    • 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

      Beantwoorden
    • 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.

      Beantwoorden
  • 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.

    Beantwoorden
  • 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

    Beantwoorden
  • 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.

    Beantwoorden
  • 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!

    Beantwoorden
  • 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?

    Beantwoorden
  • 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.

    Beantwoorden
  • 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

    Beantwoorden
  • 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.

    Beantwoorden
    • 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.

      Beantwoorden
  • 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
    }

    Beantwoorden
  • 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!

    Beantwoorden
    • 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

      Beantwoorden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Fill out this field
Fill out this field
Geef een geldig e-mailadres op.

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

Ook interessant voor jou…

Z-Wave USB stick installeren in Domoticz
Hoe installeer je Domoticz op een Rasberry Pi? (4 Stappen)
Menu