LogicMachine Forum
Scripting - Printable Version

+- LogicMachine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: Scripting (/showthread.php?tid=5848)

Pages: 1 2


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)