18.01.2025, 11:12
Explain exactly what do you want this script to do.
|
Scripting
|
|
18.01.2025, 11:12
Explain exactly what do you want this script to do.
20.01.2025, 09:10
(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)
20.01.2025, 10:07
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(20.01.2025, 10:07)RomansP Wrote: I am not sure that I correctly understand what you need, but here is the code 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 ?
20.01.2025, 12:24
If there are two setpoints then you need to know which one is currently used. Does your heating actuator have a setpoint status output?
20.01.2025, 13:55
(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
20.01.2025, 13:57
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.
20.01.2025, 15:10
Also >> if event.getvalue() then << is not needed as an event always returns a certain value
20.01.2025, 15:25
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
21.01.2025, 11:19
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
21.01.2025, 11:31
You are missing quotes around the category name:
Code: status = event.getvalue()
script.categoryset('zones', status) |
|
« Next Oldest | Next Newest »
|