Page 1 of 1

Usage Heatpump

Posted: Sunday 09 February 2020 22:24
by Piacco
Hello,
For heating my house and to make hot water for my boiler i use a heat pump.
The total usage of the heat pump is measured by PZEM-004T which sends the data to domoticz (P1 Smart meter). Now i want to split those two. So that i know how much power i have used for heating up my house en how much power i have used for making hot water. I have installed a switch for the state of the heatpump (Heating or Hot water). Can someone help me to write a little dzVents script to achieve this :oops:

Re: Usage Heatpump

Posted: Monday 10 February 2020 9:53
by waaren
Piacco wrote: Sunday 09 February 2020 22:24 I want to split those two. So that i know how much power i have used for heating up my house en how much power i have used for making hot water. I have installed a switch for the state of the heatpump (Heating or Hot water).
It could look like below

Code: Select all

return 
{
    on = 
    {
        timer = 
        { 
            'every minute',
        },
    },

    data = 
    {
        usage = { initial = 0 },
    },

    logging = 
    {
        level = domoticz.LOG_DEBUG,
        marker = "heatpump"
    },

    execute = function(dz)
        --- Changes below this line 
        local houseActive = dz.devices('stateSwitch').state == 'On'  -- change to name of your state switch
        local usage = dz.devices('Power').usage -- change to name of your P1 meter
        local housemeter = dz.devices('house') -- define as counter inremental
        local boilermeter = dz.devices('boiler') -- define as counter inremental
        -- No changes below this line
        
        if houseActive and dz.data.usage ~= 0 then housemeter.incrementCounter(usage - dz.data.usage) 
        elseif dz.data.usage ~= 0 then boilermeter.incrementCounter(usage - dz.data.usage)
        end
        
        dz.data.usage = usage   
    end
}

Re: Usage Heatpump

Posted: Monday 10 February 2020 21:17
by Piacco
Thanks Waaren for the script, its running now :D

Heating my home can take a lot of time, so the boilermeter recieves a timeout, is there a way to update the boilermeter?

Code: Select all

if (dz.devices('boilermeter').lastUpdate.minutesago > 5 then
        dz.devices('boilermeter').update
        print("Laatste update is meer dan 5 minuten geleden")
Sorry i'm not a programmer :oops:

Re: Usage Heatpump

Posted: Monday 10 February 2020 22:58
by waaren
Piacco wrote: Monday 10 February 2020 21:17 Thanks Waaren for the script, its running now :D
Heating my home can take a lot of time, so the boilermeter recieves a timeout, is there a way to update the boilermeter?
can you try this ?

Code: Select all

return 
{
    on = 
    {
        timer = 
        { 
            'every minute',
        },
    },

    data = 
    {
        usage = { initial = 0 },
    },

    logging = 
    {
        level = domoticz.LOG_DEBUG,
        marker = "heatpump"
    },

    execute = function(dz)
        --- Changes below this line 
        local houseActive = dz.devices('stateSwitch').state == 'On'  -- change to name of your state switch
        local usage = dz.devices('Power').usage -- change to name of your P1 meter
        local housemeter = dz.devices('house') -- define as counter inremental
        local boilermeter = dz.devices('boiler') -- define as counter inremental
        -- No changes below this line
        
        if houseActive and dz.data.usage ~= 0 then 
			housemeter.incrementCounter(usage - dz.data.usage) 
			boilermeter.incrementCounter(0)
        elseif 
			dz.data.usage ~= 0 then 
			boilermeter.incrementCounter(usage - dz.data.usage)
			housemeter.incrementCounter(0) 
        end
        
        dz.data.usage = usage   
    end
}
Sorry i'm not a programmer :oops:
Neither am I :D

Re: Usage Heatpump

Posted: Tuesday 11 February 2020 20:05
by Piacco
The Timeout function is working :lol: , only sometimes i get some strange values and the increment counter of my boilermeter is not counting right and how do i show the local variable in the domoticz logfile?
print("Usage boilermeter" .. boilermeter), gives an error

Code: Select all

print("Usage boilermeter" .. boilermeter) 
Log_Usage.JPG
Log_Usage.JPG (43.14 KiB) Viewed 454 times

Re: Usage Heatpump

Posted: Tuesday 11 February 2020 21:09
by waaren
Piacco wrote: Tuesday 11 February 2020 20:05 print("Usage boilermeter" .. boilermeter), gives an error

Code: Select all

print("Usage boilermeter" .. boilermeter) 

Log_Usage.JPG
Changed some logic in below script. Best to start with new virtual devices and another script name to prevent mixup with old data.
Also shows how to get information to the log.

Code: Select all

return 
{
    on = 
    {
        timer = 
        { 
            'every minute',
        },
    },

    data = 
    {
        usage = { initial = 0 },
    },

    logging = 
    {
        level = domoticz.LOG_DEBUG,
        marker = "heatpump"
    },

    execute = function(dz)
        --- Changes below this line 
        local houseActive = dz.devices('stateSwitch').state == 'On'  -- change to name of your state switch
        local power = dz.devices('Power') -- change to name of your P1 meter
        local usage = power.usage1 + power.usage2  
        local housemeter = dz.devices('house') -- define as counter inremental
        local boilermeter = dz.devices('boiler') -- define as counter inremental
        -- No changes below this line
        
        if houseActive and dz.data.usage ~= 0 then 
            housemeter.incrementCounter(usage - dz.data.usage) 
            dz.log('usage ' .. housemeter.name ..': ' .. (usage - dz.data.usage),dz.log_DEBUG)
            boilermeter.incrementCounter(0)
            
        elseif dz.data.usage ~= 0 then 
            boilermeter.incrementCounter(usage - dz.data.usage)
            dz.log('usage ' .. boilermeter.name ..': ' .. (usage - dz.data.usage),dz.log_DEBUG)
            housemeter.incrementCounter(0) 
        end
        
        dz.data.usage = usage   
    end
}
When not yet familiar with dzVents please start with reading Get started Before implementing (~ 5 minutes). Special attention please for "In Domoticz go to Setup > Settings > Other and in the section EventSystem make sure the checkbox 'dzVents disabled' is not checked. Also make sure that in the Security section in the settings you allow 127.0.0.1 to not need a password. dzVents uses that port to send certain commands to Domoticz. Finally make sure you have set your current location in Setup > Settings > System > Location, otherwise there is no way to determine nighttime/daytime state."