Page 1 of 1

Script that uses "Counter Incremental" Energy

Posted: Sunday 11 February 2024 20:26
by McLund
Hi.
I wonder if someone can help me write a script that uses "Counter Incremental" Energy?
I have a Bosch Compress 7000i AWE 13 kW air/water heat pump. I see, among other things, the heat pump's total energy consumption since the heat pump was installed via Domoticz unit "HP_Supp energy tot" for example 74364 kWh right now. I would like to see the daily or per hour energy consumption like the image below.
.
Bild till forumet.png
Bild till forumet.png (37.08 KiB) Viewed 1800 times

I have seen information about how the sensor itself works, but no information about how the script itself is written.

I don't know anything about writing Dzventz code or Lua code, so I'm wondering if someone can help me create a script that solves this?

Many thanks for your help! :)

Best regards,
McLund

Re: Script that uses "Counter Incremental" Energy

Posted: Sunday 11 February 2024 21:30
by waltervl
You should not use a counter incremental but a normal energy counter. Then you get the hourly, daily, weekly, monthly etc overviews.

For a dzvents script you only need to update the total counter you get from the heat pump and put it in the counter with function
updateCounter(value) see also wiki https://www.domoticz.com/wiki/DzVents:_ ... ncremental

For an example script how to update a counter see https://www.domoticz.com/forum/viewtopic.php?p=234138

Re: Script that uses "Counter Incremental" Energy

Posted: Sunday 11 February 2024 21:33
by HvdW
Here's one.

Code: Select all

--[[ 
     dzVents script dzVents script time
     om P1 Smart Meter Elektriciteitswaarde te ontleden in afzonderlijke Meterstanden.
     Houd er rekening mee dat de teller van vandaag aanvankelijk tot de volgende dag bij de GUI
     een verkeerde waarde zal weergeven.
     Script gedownload van huizebruin.nl
	 www.huizebruin.nl/domoticz/slimme-meter-(p1)-opsplitsen-naar-4-tellers-domoticz-met-lua/
    29/08/2020-/-v1.10: verbeteringen in totaal verwerkt

    1-0:1.8.1(00185.000*kWh) (Totaal verbruik tarief 1 (nacht)) - usage1
    1-0:1.8.2(00084.000*kWh) (Totaal verbruik tarief 2 (dag))   - usage2
    1-0:2.8.1(00013.000*kWh) (Totaal geleverd tarief 1 (nacht)) - return1
    1-0:2.8.2(00019.000*kWh) (Totaal geleverd tarief 2 (dag))   - return2
    
            --[[   
    Power usage 1 = Dal gebruik     : 30163692      04-07-2023 29885000
    Power usage 2 = Piek gebruik    : 16186108      04-07-2023 15983000
    Power return 1 = Dal terug      : 11095413      04-07-2023 10747000
    Power return 2 = Piek terug     : 26657672      04-07-2023 25826000
]]--
                                    -- 01-01-2023       -- 04-07-2023
local startUsageLow = 29885000      -- 29048762         --29885000
local startUsageHigh = 15983000     -- 15357636         --15983000
local startReturnLow = 10747000     -- 9937177          --10747000
local startReturnHigh = 25826000    -- 24233004         --25826000

local fetchIntervalMins = 20   -- (Geheel) Minutenfrequentie van deze scriptuitvoering 1 = elke minuut, 10 = elke 10 minuten, enz.) Moet een van (1,2,3,4,5,6,10,12,15,20,30) zijn.
local ScriptVersion = '1.10' -- domoticz > V2020.1 / dzVents >= 2.4.28
 
return {

    on =      {
                        timer = { 'every ' .. fetchIntervalMins .. ' minutes' }
              },
             
    logging = {
                         level = domoticz.LOG_DEBUG, domoticz.LOG_ERROR,   -- Maak commentaar op deze regel om de instelling van dzVents global logging te overschrijven
                         marker = 'Afzonderlijke Meterstanden '.. ScriptVersion
              },

    execute = function(dz, item)
        -- domoticz.utils.dumpTable(item.json) 
        -- local P1data = dz.devices('Power').dump()
        local P1  = dz.devices('Power') -- Electra, P1 Smart Meter device (idx or "name") (required)
        local saldoHoog = dz.devices('Saldo Hoog')  -- verschil teruglevering - gebruik
        local saldoLaag = dz.devices('Saldo Laag')  -- verschil teruglevering - gebruik
        local saldoTotaal = dz.devices('Saldo Totaal')  -- verschil teruglevering - gebruik
 
        local sumSaldoHoog = (P1.return2 - startReturnHigh) - (P1.usage2 - startUsageHigh)
        local sumSaldoLaag = (P1.return1 - startReturnLow) - (P1.usage1 - startUsageLow)
        --local sumSaldoTotaal = (P1.return2 - startReturnHigh) + (P1.return1 - startReturnLow)
                     --          - (P1.usage2 - startUsageHigh) - (P1.usage1 - startUsageLow)
        local sumSaldoTotaal = sumSaldoLaag + sumSaldoHoog
        
        dz.log('Consumption       : ' ..P1.usage, dz.LOG_DEBUG)
        dz.log('Production        : ' ..P1.usageDelivered, dz.LOG_DEBUG)
        dz.log('Saldo Hoog        : ' ..sumSaldoHoog, dz.LOG_DEBUG)
        dz.log('Saldo Laag        : ' ..sumSaldoLaag, dz.LOG_DEBUG)
        dz.log('Saldo Totaal      : ' ..sumSaldoTotaal, dz.LOG_DEBUG)
        
        dz.devices('Saldo Hoog').updateCounter(sumSaldoHoog)
        dz.devices('Saldo Laag').updateCounter(sumSaldoLaag)
        dz.devices('Saldo Totaal').updateCounter(sumSaldoTotaal)


     end
}

-- einde Script
It collects P1 data and puts the calculation in Saldo Hoog (return - usage) and so on.
saldo.jpg
saldo.jpg (86.14 KiB) Viewed 1786 times

Re: Script that uses "Counter Incremental" Energy

Posted: Monday 28 October 2024 11:54
by infoed
I am looking for a custom device in which I can store the hourly costs of gas / electric.

I read that I should not use a counter incremental but a normal energy counter.
But those counters are using the energy rates as defined with the setup.

I would like to store the hourly prices in a custom device using the dynamic hourly prices of my provider.
I already have a counter where I store my hourly gas /elec. prices.

How can I do that hourly calculation /storage with a custom device so that I have a hourly calculation of hourly gas/elec * hourprice gas/elec?
I would like to have the results in a domticz device like the energy counter since those counters have the hourly/daily etc graphs and tables.

Or should I use the JSON / API calls instead ?

Re: Script that uses "Counter Incremental" Energy

Posted: Monday 28 October 2024 13:32
by waltervl
infoed wrote: Monday 28 October 2024 11:54 I am looking for a custom device in which I can store the hourly costs of gas / electric.
In recent Domoticz, with the (dynamic) cost calculation activated in menu setup settings, tab meters, the energy costs are calculated automatically by Domoticz in the energy device you use. No need to have a separate device for that. Also in the log and reports pages of the devices the costs are shown per day, month, year etc.

And if you mean energy prices then a custom sensor would be enough to store the current price, that device can be used as input for the (dynamic) cost calculation in Domoticz.

Re: Script that uses "Counter Incremental" Energy

Posted: Monday 28 October 2024 17:29
by infoed
Thank you for advising to a recent version. I'm testing it right now.

Do you know how its daily totals are being calculated within the monthly tables?
I'm expecting a sum of 24 calculations: 24* hourly price * hourly usage-delivery?

Re: Script that uses "Counter Incremental" Energy

Posted: Monday 28 October 2024 23:43
by waltervl
I don't know how they are calculated. But I guess the costs are calculated against the current prices (could change more that once an hour..).