-- ******** Alarm rotate module version 1.0 created by Erwin van der Zwart ******** -- -- ********************************* SET PARAMETERS ******************************* -- -- Set address for message on 255 byte object Address_Message = '0/0/100' -- Set used TAG name on objects to monitor alarms Alarm_Objects = grp.tag('Storingsmeldingen') -- Used message on no alarms No_Alarm_Text = 'Geen meldingen' -- ********************************* END PARAMETERS ******************************* -- -- ********************** DON'T CHANGE ANYTHING UNDER THIS LINE ******************* -- -- Get current displayed message Current_Message = grp.getvalue(Address_Message) -- Create new table for active objects Active_Alarm_Objects = {} -- Loop trough object table and transfer active objects to new active objects table for index, Alarm_Object in pairs(Alarm_Objects) do if Alarm_Object.data == true then table.insert(Active_Alarm_Objects, Alarm_Object) end end --log('Er zijn ' .. #Active_Alarm_Objects .. ' storingsmeldingen.') --grp.update('0/0/101', #Active_Alarm_Objects) -- Check if there are objects inside new table, else set message to no alarms if #Active_Alarm_Objects == 0 then -- Check if new message is not the same as current message if Current_Message ~= No_Alarm_Text then grp.update(Address_Message , No_Alarm_Text) --grp.update('0/0/102', false) -- Audio object end -- Exit script return end -- Check if there is only 1 object inside new table and set message to object if #Active_Alarm_Objects == 1 then -- Check if new message is not the same as current message if Current_Message ~= Active_Alarm_Objects[1].name then grp.update(Address_Message , Active_Alarm_Objects[1].name) --grp.update('0/0/102', true) -- Audio object end -- Exit script return end -- Set current used object to 1 (used to count latest displayed message in object table) Current_Active_Alarm_Object_Message = 1 -- Check if there is more then 1 object inside new table and loop to select latest displayed message and set next message to object if #Active_Alarm_Objects > 1 then for index, Alarm_Object in pairs(Active_Alarm_Objects) do if Current_Message == Alarm_Object.name then Current_Active_Alarm_Object_Message = index + 1 end end -- Check if latest object in table is displayed to select first one again if Current_Active_Alarm_Object_Message > #Active_Alarm_Objects then Current_Active_Alarm_Object_Message = 1 end -- Update message (no need to check old message, new should always be different, same object name cannot be used twice) grp.update(Address_Message, Active_Alarm_Objects[Current_Active_Alarm_Object_Message].name) end