Logic Machine Forum
Loop through groupadresses to set alarm - Printable Version

+- Logic Machine 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: Loop through groupadresses to set alarm (/showthread.php?tid=3905)



Loop through groupadresses to set alarm - SennepKrem - 27.02.2022

Code:
    -- Comfort alarm for room 9. All adresses for room 9 = X / X / 9.

-- Thresholds for alarm
MaxCo2 = 800
MaxTemp = 25
MinTemp = 20
MaxHum = 60
MinHum = 40

-- Get co2, temperature and humidity values
Co2 = grp.getvalue('12/1/9')
Temp = grp.getvalue('6/1/9')
Humidity = grp.getvalue('13/1/9')
ComfortAlarm = grp.getvalue('25/1/9')


-- Check if values are within the thresholds
if Co2 > MaxCo2 or Temp > MaxTemp or Temp < MinTemp or Humidity > MaxHum or Humidity < MinHum then

 
  -- Sets alarm on or off
if ComfortAlarm == false then
        grp.write('25/1/9', 1)
else
end
else
  if
    ComfortAlarm == true then
    grp.write('25/1/9', 0)
  end
end
Hey,

I have made a script to set a comfort alarm if Co2, room temperature or humidity is not within threshold values. This works fine. 
The group adress structure in my project is that all adresses to one room = X / X / room number. So for the code above its a comfort alarm for room number 9.
Example Co2 in room number 9 is 12/1/9. Co2 in room 24 is 12/1/24. So main group and middle group is all the same in every room. 

My question is if its possible to make a loop to run through every room checking the same adresses and setting the same alarm for each room?
So alarm for room 9 would set 25/1/9, and alarm for room 60 would set 25/1/60.
All help would be appreciated


RE: Loop through groupadresses to set alarm - benanderson_475 - 27.02.2022

(27.02.2022, 15:50)SennepKrem Wrote: Hey,

I have made a script to set a comfort alarm if Co2, room temperature or humidity is not within threshold values. This works fine. 
The group adress structure in my project is that all adresses to one room = X / X / room number. So for the code above its a comfort alarm for room number 9.
Example Co2 in room number 9 is 12/1/9. Co2 in room 24 is 12/1/24. So main group and middle group is all the same in every room. 

My question is if its possible to make a loop to run through every room checking the same adresses and setting the same alarm for each room?
So alarm for room 9 would set 25/1/9, and alarm for room 60 would set 25/1/60.
All help would be appreciated

Are all the rooms in numerical order, following the xx/xx/room format?
This loop below would work if they are all in order, otherwise you may need a table to list all the rooms and iterate over that from the start to the end.

Code:
   -- Comfort alarm for room 9. All adresses for room 9 = X / X / 9.

-- Thresholds for alarm
MaxCo2 = 800
MaxTemp = 25
MinTemp = 20
MaxHum = 60
MinHum = 40

start_Grp = '1'
end_Grp = '60'

for i = start_Grp, end_Grp do


-- Get co2, temperature and humidity values
  Co2 = grp.getvalue('12/1/'.. i)
temp = grp.getvalue('6/1/'.. i)
Humidity = grp.getvalue('13/1/'.. i)
ComfortAlarm = grp.getvalue('25/1/'.. i)


-- Check if values are within the thresholds
if Co2 > MaxCo2 or Temp > MaxTemp or Temp < MinTemp or Humidity > MaxHum or Humidity < MinHum then

 
  -- Sets alarm on or off
if ComfortAlarm == false then
        grp.write('25/1/'.. i, 1)
else
end
else
  if
    ComfortAlarm == true then
    grp.write('25/1/'.. i, 0)
  end
end
 
end



RE: Loop through groupadresses to set alarm - SennepKrem - 28.02.2022

(27.02.2022, 20:40)benanderson_475 Wrote:
(27.02.2022, 15:50)SennepKrem Wrote: Hey,

I have made a script to set a comfort alarm if Co2, room temperature or humidity is not within threshold values. This works fine. 
The group adress structure in my project is that all adresses to one room = X / X / room number. So for the code above its a comfort alarm for room number 9.
Example Co2 in room number 9 is 12/1/9. Co2 in room 24 is 12/1/24. So main group and middle group is all the same in every room. 

My question is if its possible to make a loop to run through every room checking the same adresses and setting the same alarm for each room?
So alarm for room 9 would set 25/1/9, and alarm for room 60 would set 25/1/60.
All help would be appreciated

Are all the rooms in numerical order, following the xx/xx/room format?
This loop below would work if they are all in order, otherwise you may need a table to list all the rooms and iterate over that from the start to the end.

Code:
   -- Comfort alarm for room 9. All adresses for room 9 = X / X / 9.

-- Thresholds for alarm
MaxCo2 = 800
MaxTemp = 25
MinTemp = 20
MaxHum = 60
MinHum = 40

start_Grp = '1'
end_Grp = '60'

for i = start_Grp, end_Grp do


-- Get co2, temperature and humidity values
  Co2 = grp.getvalue('12/1/'.. i)
temp = grp.getvalue('6/1/'.. i)
Humidity = grp.getvalue('13/1/'.. i)
ComfortAlarm = grp.getvalue('25/1/'.. i)


-- Check if values are within the thresholds
if Co2 > MaxCo2 or Temp > MaxTemp or Temp < MinTemp or Humidity > MaxHum or Humidity < MinHum then

 
  -- Sets alarm on or off
if ComfortAlarm == false then
        grp.write('25/1/'.. i, 1)
else
end
else
  if
    ComfortAlarm == true then
    grp.write('25/1/'.. i, 0)
  end
end
 
end

Thank you! This worked just as i wanted. Very much appreciated!