RE: Scripting - admin - 18.01.2025
Explain exactly what do you want this script to do.
RE: Scripting - mariosp - 20.01.2025
(18.01.2025, 11:12)admin Wrote: Explain exactly what do you want this script to do.
so its a littlebit complicated.
I have underfloor heating i want the pwm valves to not close and i want to change the %of the opening valve i want if the actual temperature
is higher than then setpoint to write to the group address of the heating actuator the setpoint - the offset that my client will set
but if the actual temperature is lower than the set i want to write to group address of the heating actuator the actual temperature so it will open more if need it heres is the script that i end up. Thank you in advance!
Code: if event.getvalue() then
-- actual temperature of room1
local actual_temp1 = grp.getvalue('12/0/5')
-- group address of the heating actuator for temperature
local fake_temp_addr1 = '3/3/1'
-- virtual group address that i created for mosaic
local offsetvalue = grp.getvalue('32/1/69')
-- master setpoint for all rooms
local value_temp = grp.getvalue('12/1/0')
--setpoint of room
local value_temp1 = grp.getvalue('3/1/1')
-- for mosaic because that i made it with rotary dimmer
local offset = value_temp - offsetvalue * 0.01
if actual_temp1 >= value_temp or value_temp1
then
grp.write(fake_temp_addr1,offset)
else
grp.write(fake_temp_addr1,actual_temp1)
RE: Scripting - RomansP - 20.01.2025
I am not sure that I correctly understand what you need, but here is the code
Code: local actual_temp1 = grp.getvalue('12/0/5')
local fake_temp_addr1 = '3/3/1'
local offsetvalue = grp.getvalue('32/1/69')
local value_temp = grp.getvalue('12/1/0')
local value_temp1 = grp.getvalue('3/1/1')
local offset = value_temp - (offsetvalue * 0.01)
if actual_temp1 >= value_temp1 then
grp.write(fake_temp_addr1, offset)
else
grp.write(fake_temp_addr1, actual_temp1)
end
RE: Scripting - mariosp - 20.01.2025
(20.01.2025, 10:07)RomansP Wrote: I am not sure that I correctly understand what you need, but here is the code
Code: local actual_temp1 = grp.getvalue('12/0/5')
local fake_temp_addr1 = '3/3/1'
local offsetvalue = grp.getvalue('32/1/69')
local value_temp = grp.getvalue('12/1/0')
local value_temp1 = grp.getvalue('3/1/1')
local offset = value_temp - (offsetvalue * 0.01)
if actual_temp1 >= value_temp1 then
grp.write(fake_temp_addr1, offset)
else
grp.write(fake_temp_addr1, actual_temp1)
end
i want it ether mastersetpoint or the room setpoint are higher to grp.write the actual temperature. do you see anything wrong with my script ?
RE: Scripting - admin - 20.01.2025
If there are two setpoints then you need to know which one is currently used. Does your heating actuator have a setpoint status output?
RE: Scripting - mariosp - 20.01.2025
(20.01.2025, 12:24)admin Wrote: If there are two setpoints then you need to know which one is currently used. Does your heating actuator have a setpoint status output? yes and i tryed now but it work only for first one room of the script here is the full script!
Code: if event.getvalue() then
local actual_temp1 = grp.getvalue('12/0/5')
local fake_temp_addr1 = '3/3/1'
local offsetvalue = grp.getvalue('32/1/69')
local value_temp = grp.getvalue('12/1/0')
local value_temp1 = grp.getvalue('3/1/1')
local offset = value_temp - offsetvalue * 0.01
local temp_dif = value_temp - actual_temp1
local setpointstatus1 = grp.getvalue('4/2/1')
if actual_temp1 >= setpointstatus1
then
grp.write(fake_temp_addr1,offset)
else
grp.write(fake_temp_addr1,actual_temp1)
local actual_temp2 = grp.getvalue('12/0/3')
local fake_temp_addr2 = '3/3/2'
local offsetvalue = grp.getvalue('32/1/69')
local value_temp = grp.getvalue('12/1/0')
local value_temp2 = grp.getvalue('3/1/2')
local offset = value_temp - offsetvalue * 0.01
local temp_dif = value_temp - actual_temp2
local setpointstatus2 = grp.getvalue('4/2/2')
if actual_temp2 >= setpointstatus2
then
grp.write(fake_temp_addr2,offset)
else
grp.write(fake_temp_addr2,actual_temp2)
local actual_temp3 = grp.getvalue('12/0/4')
local fake_temp_addr3 = '3/3/3'
local offsetvalue = grp.getvalue('32/1/69')
local value_temp = grp.getvalue('12/1/0')
local value_temp3 = grp.getvalue('3/1/3')
local offset = value_temp - offsetvalue * 0.01
local temp_dif = value_temp - actual_temp3
local setpointstatus3 = grp.getvalue('4/2/3')
if actual_temp3 > setpointstatus3
then
grp.write(fake_temp_addr3,offset)
else
grp.write(fake_temp_addr3,actual_temp3)
local actual_temp4 = grp.getvalue('12/0/4')
local fake_temp_addr4 = '3/3/4'
local offsetvalue = grp.getvalue('32/1/69')
local value_temp = grp.getvalue('12/1/0')
local value_temp4 = grp.getvalue('3/1/4')
local offset = value_temp - offsetvalue * 0.01
local temp_dif = value_temp - actual_temp4
local setpointstatus4 = grp.getvalue('4/2/4')
if actual_temp4 >= setpointstatus4
then
grp.write(fake_temp_addr4,offset)
else
grp.write(fake_temp_addr4,actual_temp4)
local actual_temp5 = grp.getvalue('12/0/1')
local fake_temp_addr5 = '3/3/5'
local offsetvalue = grp.getvalue('32/1/69')
local value_temp = grp.getvalue('12/1/0')
local value_temp5 = grp.getvalue('3/1/5')
local offset = value_temp - offsetvalue * 0.01
local temp_dif = value_temp - actual_temp5
local setpointstatus5 = grp.getvalue('4/2/5')
if actual_temp5 >= setpointstatus5
then
grp.write(fake_temp_addr5,offset)
else
grp.write(fake_temp_addr5,actual_temp5)
local actual_temp6 = grp.getvalue('12/0/3')
local fake_temp_addr6 = '3/3/6'
local offsetvalue = grp.getvalue('32/1/69')
local value_temp = grp.getvalue('12/1/0')
local value_temp6 = grp.getvalue('3/1/6')
local offset = value_temp - offsetvalue * 0.01
local temp_dif = value_temp - actual_temp6
local setpointstatus6 = grp.getvalue('4/2/6')
if actual_temp5 >= setpointstatus6
then
grp.write(fake_temp_addr6,offset)
else
grp.write(fake_temp_addr6,actual_temp6)
local actual_temp7 = grp.getvalue('12/0/2')
local fake_temp_addr7 = '3/3/7'
local offsetvalue = grp.getvalue('32/1/69')
local value_temp = grp.getvalue('12/1/0')
local value_temp7 = grp.getvalue('3/1/7')
local offset = value_temp - offsetvalue * 0.01
local temp_dif = value_temp - actual_temp7
local setpointstatus7 = grp.getvalue('4/2/7')
if actual_temp7 >= value_temp or value_temp7
then
grp.write(fake_temp_addr7,offset)
else
grp.write(fake_temp_addr7,actual_temp7)
local actual_temp8 = grp.getvalue('12/0/3')
local fake_temp_addr8 = '3/3/8'
local offsetvalue = grp.getvalue('32/1/69')
local value_temp = grp.getvalue('12/1/0')
local value_temp8 = grp.getvalue('3/1/8')
local offset = value_temp - offsetvalue * 0.01
local temp_dif = value_temp - actual_temp8
local setpointstatus8 = grp.getvalue('4/2/8')
if actual_temp8 >= setpointstatus8
then
grp.write(fake_temp_addr8,offset)
else
grp.write(fake_temp_addr8,actual_temp8)
local actual_temp9 = grp.getvalue('12/0/3')
local fake_temp_addr9 = '3/3/9'
local offsetvalue = grp.getvalue('32/1/69')
local value_temp = grp.getvalue('12/1/0')
local value_temp9 = grp.getvalue('3/1/9')
local offset = value_temp - offsetvalue * 0.01
local temp_dif = value_temp - actual_temp9
local setpointstatus9 = grp.getvalue('4/2/9')
if actual_temp9 >= setpointstatus9 then
grp.write(fake_temp_addr9,offset)
else
grp.write(fake_temp_addr9,actual_temp9)
end
end
end
end
end
end
end
end
end
end
RE: Scripting - admin - 20.01.2025
You should handle each zone in a different script.
Your current script does not work because if/else/end statements are wrong. First end should be at line 16. There should not be multiple end statements at the bottom of the script.
RE: Scripting - Erwin van der Zwart - 20.01.2025
Also >> if event.getvalue() then << is not needed as an event always returns a certain value
RE: Scripting - mariosp - 20.01.2025
Thank you guys for you help !!!
Its Working now !
How im gonna do it for half hour to work and do not work for half hour continuously?
I read for the scheduled script but dont know how to make it
RE: Scripting - mariosp - 21.01.2025
Hello guys i tried this script that will enable and disable the scripts from and event and i will make a schedule on/off of the virtual group address that the event is based. i tried this but it doesnt work anyone can see why ?
Code: if event.getvalue(1) then
script.categoryenable(zones)
else
script.categorydisable(zones)
end
RE: Scripting - admin - 21.01.2025
You are missing quotes around the category name:
Code: status = event.getvalue()
script.categoryset('zones', status)
|