Page 1 of 1

Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 23 January 2019 13:37
by pvklink
Hi, just bought my first eurotronic / spirit radiator valve. I used V4. 10363 and the valve was recognized immediately.

I got
three setpoints
a switch slider
Temperature and
valve mode device

The valve mode contains:
off = valve closed
heat = uses setpoint heat
heat eco= uses setpoint heat eco
Full power = for a couple of minutes maximum valve
and manufacturer specific.


some dzvents actions i tried and they work:
dz.devices('Slaapkamer Thermostat Mode').updateMode('Heat Eco')
dz.devices('slaapkamer_heat_temp').updateSetPoint(21)
dz.devices('Slaapkamer Thermostat Mode').updateMode('Manufacturer Specific')

Some questions
1. i am looking how to read the value from 'Heat Eco' in dzvents
2. i have a third setpoint, when is this setpoint used?
3. when i select manufacturer specific,from the drop down bar it returns "heat"
4. What does "manufacturer specific" do ?
5. When i operate the valve manually it also changes the actual setpoint, that looks strange!
I expected that when you manually change the valve, a manual mode is selected and and a setpoint that belogs to manually changes...

script (first attempt) and not working

Code: Select all


-- i set the valve always to heat as a sort of default/actual thermo setting
-- at nighttime i change the current heat setpoint to the value from heat eco setpoint
-- i disable the slider switch
-- i disable the setpoint (one i dont know what it does)
-- i am looking how to read the value from 'Heat Eco' in dzvents and how to set heat sp with value from eco sp
return {
	on = {devices = {'testverwarming'}},    

    logging =   { level   = domoticz.LOG_DEBUG ,                  
                  marker  = "Security"},
	
    execute = function(dz, device, info)
    local currenttempset = dz.devices('slaapkamer_heat_temp')
    local currenttempseteco = dz.devices('slaapkamer_heat_eco_temp')
    
    
    if currenttempset.temperature <> currenttempseteco.temperature
        currenttempset.updateSetPoint(currenttempseteco.temperature)
    end
 
end
}

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 23 January 2019 14:51
by waaren
pvklink wrote: Wednesday 23 January 2019 13:37 script (first attempt) and not working
try changing

Code: Select all

if currenttempset.temperature <> currenttempseteco.temperature
to

Code: Select all

if currenttempset.temperature ~= currenttempseteco.temperature
but do you want this or do you want to compare it to the current setpoint ?

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 23 January 2019 15:08
by pvklink
Both currenttempset.temperature and currenttempseteco.temperature are setpoint.

If somebody changed the valve manually effect is that the sp(currenttempset.temperature) is also changed.
When the night comes i put the sp currenttempset.temperature back to defaults (value from sp currenttempseteco.temperature)

By the way currenttempset.temperature did not change when i pushed the pushbutton
think that : currenttempset.updateSetPoint(currenttempseteco.temperature) does not work

Code: Select all

return {
	on = {devices = {'testverwarming'}},    -- alle devices die met Smoke beginnen worden door dit script opgepakt 

    logging =   { level   = domoticz.LOG_DEBUG ,                  -- Uncomment to override the dzVents global logging setting
                  marker  = "Security"},
	
    execute = function(dz, device, info)
    local currenttempset = dz.devices('slaapkamer_heat_temp')
    local currenttempseteco = dz.devices('slaapkamer_heat_eco_temp')
    
    if currenttempset.temperature ~= currenttempseteco.temperature  -- if setpoints arer different make them equal
        currenttempset.updateSetPoint(currenttempseteco.temperature)
    end
    
    - altijd op heat zetten
    - rest modes niet gebruiken
    - waarde van eco uitlezen en setpoint heat op waarde van eco zetten
    -- how to read  the value from heatpoint eco
    --dz.devices('Slaapkamer Thermostat Mode').updateMode('Manufacturer Specific')
    --dz.devices('Slaapkamer Thermostat Mode').updateMode('Heat')
    --dz.devices('Slaapkamer Thermostat Mode').updateMode('Heat Eco')
    --dz.devices('slaapkamer_heat_temp').updateSetPoint(21)

end
}

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 23 January 2019 16:19
by pvklink
Its working!

I already have a dvents script for evening and night etc.
Can these scripts trigger this script without using a dummyswitch like i do at this time?
Another option is that i make timer rules for this script....

Code: Select all

--- altijd op heat zetten
-- waarde van eco uitlezen en setpoint heat op waarde van eco zetten
-- dz.devices('Slaapkamer_thermostaat_mode').updateMode('Manufacturer Specific')
-- dz.devices('Slaapkamer_thermostaat_mode').updateMode('Heat')
-- dz.devices('Slaapkamer_thermostaat_mode').updateMode('Heat Eco')
-- dz.devices('slaapkamer_heat_temp').updateSetPoint(21)
-- dz.devices('slaapkamer_heat_temp').setPoint     uitlezen van setpoint
-- nog ophalen werkelijke temperatuur slaapkamer

return {
	on = {
		devices = {
			'test'
		}
	},
	execute = function(dz, device)

    cur1 = dz.devices('Slaapkamer_thermostaat_instelling').setPoint -- werkt met mode 'Heat'
    cur2 = dz.devices('Slaapkamer_thermostaat_nachtnorm').setPoint          -- als mode 'Heat' actief is kunnen we deze als de nachtnorm gebruiken. 
    --cur3 = dz.devices('Slaapkamer_thermostaat_dagnorm').setPoint          -- als mode 'Heat' actief is kunnen we deze als de dagnorm gebruiken. 

    if cur1 ~= cur2  then -- if setpoints are different make them equal
		dz.devices('Slaapkamer_thermostaat_instelling').updateSetPoint(cur2)
		dz.log('Device ' .. device.name .. ' pvk was changed:' .. cur1 .. '/' .. cur2 .. ' ', dz.LOG_INFO)
    end

end
}

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 23 January 2019 17:56
by waaren
pvklink wrote: Wednesday 23 January 2019 16:19 Can these scripts trigger this script without using a dummyswitch like i do at this time?
You can use the technique used in scripts below.

Code: Select all

-- master

return {
    on =        {       timer   =   { "every minute" }},                        
              
    logging =   {       level   =   domoticz.LOG_DEBUG,                                   
                        marker  =   "master" },                                           

    execute = function( dz )
   
        local function delayedURL(callback,delay)
            local logString = "/json.htm?type=command&param=addlogmessage&message=" .. dz.utils.urlEncode("Mork calling Mindy")
            local url= dz.settings['Domoticz url'] .. logString
            dz.openURL({    
                         url = url,
                         method = "GET",
                         callback = callback 
                      }).afterSec(delay)                      
        end
       
        delayedURL("Wake_up_Mindy",12) 
        
    end
}

Code: Select all

--slave

return {
    on =        {       httpResponses =        {  "Wake_up_Mindy" } },                

        logging =   {       level   =   domoticz.LOG_DEBUG,                                   
                            marker  =   "slave" },   
    
    execute = function(dz) 
        
        dz.log("Hmmmm who is calling ? ",dz.LOG_DEBUG)
        
    end
}

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 23 January 2019 22:09
by pvklink
Thanks, the solution does work!

But, i think it is a lot of code to simple call another script!
That should be one rule...
The function should be default part of dzvents..

With a dummy switch it only takes one rule....

Re: Dzvents and eurotronic / spirit radiator valve  [Solved]

Posted: Friday 25 January 2019 23:06
by waaren
pvklink wrote: Wednesday 23 January 2019 22:09 Thanks, the solution does work!
But, i think it is a lot of code to simple call another script!
That should be one rule...
The function should be default part of dzvents..

With a dummy switch it only takes one rule....
That does not sound nice.
But anyway, just put the function in global_data.lua. Then you only need one line in your caller script and one line in your called script.

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Saturday 26 January 2019 10:09
by pvklink
Hi @waaren that wasnt my intention!
I am very happy with this code!, and you are by far my dzvents hero.
Without you, 50% of my scripts wont work!
And now i am completely moved from lua, blockly to dzvents with lots of fuctionality!

But, in my old days for exampe a call to another script in basic or fortran was sort off: call "scriptname, variable) etc.
In dzvents this function isnt available. So i understand that you have to write code to create the function, like you did for me...
If the function is available in dzvents, you need only one rule...
So again, i am very happy! and it was more a wish to get it into dzvents and get dzvents better with your function!

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 30 January 2019 13:45
by EddyG
This is my dzVents script for this radiator valve and working perfectly.
My 'Heat' is set to 21 degreesCelsius and my 'Heat Eco' is set to 16 degreesCelsius

I have a button "Vakantie' (Holiday) in Domoticz which I use in a lot of scripts to get other settings for Holidays times.

Code: Select all

return {
        active = true,
--      active = false,

        on = {
--              timer = { 'every minute' }

                timer = { 'at 08:01 on mon, tue, wed, thu, fri',
                          'at 08:31 on sat, sun',
                          'at 20:01' }
        },

        execute = function(domoticz)
--              local debug = false
                local debug = true

                local valVakantie = domoticz.devices("Vakantie").state
                local t = domoticz.time

                if debug then
                        print('Zolder Thermostat Mode: ' .. domoticz.devices('Zolder Thermostat Mode').state)
                end


                if valVakantie == "Off" then
                        if (t.matchesRule('at 08:01 on mon, tue, wed, thu, fri')) then
                                domoticz.devices('Zolder Thermostat Mode').updateMode('Heat')
                        elseif (t.matchesRule('at 08:31 on sat, sun')) then
                                domoticz.devices('Zolder Thermostat Mode').updateMode('Heat')
                        elseif (t.matchesRule('at 20:01')) then
                                domoticz.devices('Zolder Thermostat Mode').updateMode('Heat Eco')
                        end
                else
                        domoticz.devices('Zolder Thermostat Mode').updateMode('Heat Eco')
                end
        end
}

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 30 January 2019 15:48
by pvklink
Great!
I will combine the holiday button with my "button" anybody home which is trigger by arming and disarming my alarm unit!
Only thing in your script is that when somebody changes the radiator valve manually the corresponding setpoint of the actual mode is also changed and used the nexttime

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 30 January 2019 16:22
by EddyG
You could just set "Heat" and "Heat Eco" every time in the script too, or do that once everyday, that way you could manual temporary override the settings.

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 30 January 2019 16:24
by pvklink
That's exactly what i did, i am going to make a holiday button!

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 30 January 2019 17:39
by pvklink
Hi Eddy,

what sort off heating devices do you have? I am just starting with:

- a nefit smartline 24 2009 no opentherm
- nefit roomthermostat moduline 300 (manual, no opentherm, it does modulate)
- 8 low temperature jagra, 7 with an old manual thermostat and 1 with a spirit zwave plus.

at the moment i cant trigger my smartline24
and i cant manage my roomthermostat with domoticz dzvents

I am thinking of placing a Nefit EMS-OT converter Opentherm module 7746901847 and a new room thermostat.

Do you know a roomthermostat that i can manage by dzvents commands, i am orientating devices like toon

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 30 January 2019 18:59
by EddyG
I have a dedicated heating system which is autonoom and not connected to Domoticz.
I only use domoticz with this valve to seperately control the temperature in 3 rooms.
So sorry, I am not familiar with any thermostats that could be connected to Domoticz.

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Thursday 31 January 2019 22:03
by pvklink
I also have made my script more intelligent.
When i dont use the item element, and corresponding item checks and i dont use the webhooks in this script it works well with the selector switch
But when i add the item checks and add the webhook lines and sections, the selector switch does not work. So item.isdevice isnt true when i use the selector switch ?

Code: Select all

-- altijd op heat zetten..
-- waarde van eco uitlezen en setpoint heat op waarde van eco zetten in de nacht
-- waarde van eco uitlezen en setpoint heat op waarde van Manufacturer Specific zetten in de dag
-- dz.devices('Slaapkamer_thermostaat_mode').updateMode('Manufacturer Specific')
-- dz.devices('Slaapkamer_thermostaat_mode').updateMode('Heat')
-- dz.devices('Slaapkamer_thermostaat_mode').updateMode('Heat Eco')
-- dz.devices('slaapkamer_heat_temp').updateSetPoint(21)
-- dz.devices('slaapkamer_heat_temp').setPoint     uitlezen van setpoint

local hr1   = 'Hook_DZ_nacht'
local hr2   = 'Hook_DZ_dag'

return {
	on = {httpResponses = {hr1,hr2},                
		devices = {'Default_heating'}
	    },

    logging =   { level   = domoticz.LOG_DEBUG ,                  -- Uncomment to override the dzVents global logging setting
                  marker  = "Security"},
	
    execute = function(dz, item, device, info)                                      -- dont use item
    local nt1   = 'Niels_slaapkamer_thermostaat_instelling'
    local nt2   = 'Niels_slaapkamer_thermostaat_nachtnorm'
    local nt3   = 'Niels_slaapkamer_thermostaat_dagnorm'
	local switch1 = dz.devices('Niels-game-pc-noodvz').value
	local switch2 = dz.devices('pc-niels-game').value
    local cur1 = dz.devices(nt1).setPoint
    local cur2 = dz.devices(nt2).setPoint
    local cur3 = dz.devices(nt3).setPoint

    if item.isDevice then                                                                      -- dont check
        if device.state == 'dag' then    
        	dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur3)
            dz.log("Script: " .. info.scriptName .. " verwarming wordt op dagstand gezet....", dz.LOG_INFO)

        elseif device.state == 'nacht' then
            dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur2)
            dz.log("Script: " .. info.scriptName .. " verwarming wordt op nachtstand gezet....", dz.LOG_INFO)

        elseif device.state == 'check' then

            if (switch1 == 'On') or (switch1 == 'On') then
    	        dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur3)
                dz.log("Script: " .. info.scriptName .. " verwarming wordt op dagstand gezet....", dz.LOG_INFO)
            else
                dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur2)
                dz.log("Script: " .. info.scriptName .. " verwarming wordt op nachtstand gezet....", dz.LOG_INFO)
            end
        end

    elseif item.isHTTPResponse then								-- when i delete this section
        if (item.trigger == hr1) then -- nachtaanroep
            if cur1 ~= cur2  then -- if setpoints are different make them equal night is coming
	        	dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur2)
                dz.log("Script: " .. info.scriptName .. " verwarming wordt op nachtstand gezet....", dz.LOG_INFO)
            end
        end

        if (item.trigger == hr2) then -- dagaanroep						-- when i delete this section it works
            if cur1 ~= cur3  then -- if setpoints are different make them equal day is coming
	            dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur3)
                dz.log("Script: " .. info.scriptName .. " verwarming wordt op dagstand gezet....", dz.LOG_INFO)
            end
        end
    end

end
}

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Thursday 31 January 2019 22:48
by pvklink
solved it!

Code: Select all

-- altijd op heat zetten..
-- waarde van eco uitlezen en setpoint heat op waarde van eco zetten in de nacht
-- waarde van eco uitlezen en setpoint heat op waarde van Manufacturer Specific zetten in de dag
-- dz.devices('Slaapkamer_thermostaat_mode').updateMode('Manufacturer Specific')
-- dz.devices('Slaapkamer_thermostaat_mode').updateMode('Heat')
-- dz.devices('Slaapkamer_thermostaat_mode').updateMode('Heat Eco')
-- dz.devices('slaapkamer_heat_temp').updateSetPoint(21)
-- dz.devices('slaapkamer_heat_temp').setPoint     uitlezen van setpoint

local hr1   = 'Hook_DZ_nacht'
local hr2   = 'Hook_DZ_dag'

return {
	on = {httpResponses = {hr1,hr2},                
		devices = {'Default_heating'}
	    },

    logging =   { level   = domoticz.LOG_DEBUG ,                  -- Uncomment to override the dzVents global logging setting
                  marker  = "Security"},
	
    execute = function(dz, device, info)
    local nt1   = 'Niels_slaapkamer_thermostaat_instelling'
    local nt2   = 'Niels_slaapkamer_thermostaat_nachtnorm'
    local nt3   = 'Niels_slaapkamer_thermostaat_dagnorm'
	local switch1 = dz.devices('Niels-game-pc-noodvz').value
	local switch2 = dz.devices('pc-niels-game').value
    local cur1 = dz.devices(nt1).setPoint
    local cur2 = dz.devices(nt2).setPoint
    local cur3 = dz.devices(nt3).setPoint

    if device.isDevice then
        if device.state == 'dag' then    
        	dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur3)
            dz.log("Script: " .. info.scriptName .. " verwarming wordt op dagstand gezet....", dz.LOG_INFO)

        elseif device.state == 'nacht' then
            dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur2)
            dz.log("Script: " .. info.scriptName .. " verwarming wordt op nachtstand gezet....", dz.LOG_INFO)

        elseif device.state == 'check' then

            if (switch1 == 'On') or (switch1 == 'On') then
    	        dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur3)
                dz.log("Script: " .. info.scriptName .. " verwarming wordt op dagstand gezet....", dz.LOG_INFO)
            else
                dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur2)
                dz.log("Script: " .. info.scriptName .. " verwarming wordt op nachtstand gezet....", dz.LOG_INFO)
            end
        end

    elseif device.isHTTPResponse then
        if (device.trigger == hr1) then -- nachtaanroep
            if cur1 ~= cur2  then -- if setpoints are different make them equal night is coming
	        	dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur2)
                dz.log("Script: " .. info.scriptName .. " verwarming wordt op nachtstand gezet....", dz.LOG_INFO)
            end
        end

        if (device.trigger == hr2) then -- dagaanroep
            if cur1 ~= cur3  then -- if setpoints are different make them equal day is coming
	            dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur3)
                dz.log("Script: " .. info.scriptName .. " verwarming wordt op dagstand gezet....", dz.LOG_INFO)
            end
        end
    end

end
}


Re: Dzvents and eurotronic / spirit radiator valve

Posted: Friday 01 February 2019 11:11
by EddyG
There are 2 setpoints in the device "Heat" and "Heat Eco"
You can set the values of those setpoints in dzVents.
Isn't it more simple to switch between those 2 setpoints?

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Friday 01 February 2019 16:31
by pvklink
when a user then turns the heat, the setpoint also changes.
i use one mode and use one setpoint for manual and i use the other setpoints as norm for day and night and i can easily adjust them without code

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Wednesday 06 February 2019 16:32
by knielen
pvklink wrote: Thursday 31 January 2019 22:48 solved it!

Code: Select all

-- altijd op heat zetten..
-- waarde van eco uitlezen en setpoint heat op waarde van eco zetten in de nacht
-- waarde van eco uitlezen en setpoint heat op waarde van Manufacturer Specific zetten in de dag
-- dz.devices('Slaapkamer_thermostaat_mode').updateMode('Manufacturer Specific')
-- dz.devices('Slaapkamer_thermostaat_mode').updateMode('Heat')
-- dz.devices('Slaapkamer_thermostaat_mode').updateMode('Heat Eco')
-- dz.devices('slaapkamer_heat_temp').updateSetPoint(21)
-- dz.devices('slaapkamer_heat_temp').setPoint     uitlezen van setpoint

local hr1   = 'Hook_DZ_nacht'
local hr2   = 'Hook_DZ_dag'

return {
	on = {httpResponses = {hr1,hr2},                
		devices = {'Default_heating'}
	    },

    logging =   { level   = domoticz.LOG_DEBUG ,                  -- Uncomment to override the dzVents global logging setting
                  marker  = "Security"},
	
    execute = function(dz, device, info)
    local nt1   = 'Niels_slaapkamer_thermostaat_instelling'
    local nt2   = 'Niels_slaapkamer_thermostaat_nachtnorm'
    local nt3   = 'Niels_slaapkamer_thermostaat_dagnorm'
	local switch1 = dz.devices('Niels-game-pc-noodvz').value
	local switch2 = dz.devices('pc-niels-game').value
    local cur1 = dz.devices(nt1).setPoint
    local cur2 = dz.devices(nt2).setPoint
    local cur3 = dz.devices(nt3).setPoint

    if device.isDevice then
        if device.state == 'dag' then    
        	dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur3)
            dz.log("Script: " .. info.scriptName .. " verwarming wordt op dagstand gezet....", dz.LOG_INFO)

        elseif device.state == 'nacht' then
            dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur2)
            dz.log("Script: " .. info.scriptName .. " verwarming wordt op nachtstand gezet....", dz.LOG_INFO)

        elseif device.state == 'check' then

            if (switch1 == 'On') or (switch1 == 'On') then
    	        dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur3)
                dz.log("Script: " .. info.scriptName .. " verwarming wordt op dagstand gezet....", dz.LOG_INFO)
            else
                dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur2)
                dz.log("Script: " .. info.scriptName .. " verwarming wordt op nachtstand gezet....", dz.LOG_INFO)
            end
        end

    elseif device.isHTTPResponse then
        if (device.trigger == hr1) then -- nachtaanroep
            if cur1 ~= cur2  then -- if setpoints are different make them equal night is coming
	        	dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur2)
                dz.log("Script: " .. info.scriptName .. " verwarming wordt op nachtstand gezet....", dz.LOG_INFO)
            end
        end

        if (device.trigger == hr2) then -- dagaanroep
            if cur1 ~= cur3  then -- if setpoints are different make them equal day is coming
	            dz.devices('Niels_slaapkamer_thermostaat_instelling').updateSetPoint(cur3)
                dz.log("Script: " .. info.scriptName .. " verwarming wordt op dagstand gezet....", dz.LOG_INFO)
            end
        end
    end

end
}

Huh? Something is wrong:

Code: Select all

 if (switch1 == 'On') or (switch1 == 'On') 

Re: Dzvents and eurotronic / spirit radiator valve

Posted: Friday 08 February 2019 19:00
by pvklink
mm, double check! :-)
I will change it...

Thanks!