This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Remaining time or counter
#21
(24.12.2018, 17:00)AlexLV Wrote: I think above just copy of previous post...

Guys, can you please post here final script?? I tried to make changes mentioned but not work for me..

Hi AlexLV,
Please find bellow the working script. There was an error in the time string format.
Merry Christmas

B.R,
Chouaibou.
Code:
-- ** Staircase logic with external time object and retriggering on input object Version 3.2 ** --
-- ****************************** Created by Erwin van der Zwart **************************** --
-- ************************************** SET PARAMETERS ************************************ --

-- Set output address
AddressOutput = '32/1/21'  -- 01. 1 bit (boolean)

-- Set external time address (optional)
AddressExternalTime = '32/1/22' -- 07. 2 byte unsigned integer

-- Use time left indication 
UseTimeLeft = true -- Set to false if no time left indication is used 

-- Set feedback adress of time left indication (optional)
AddressTimeLeft = '32/1/23' -- 255 byte string

-- Set time delay (Used when external time is not available)
SetDelay = 120 -- 2 minutes

-- Seconds or Minutes
SetSec = true -- Set to false for Minutes

-- Set factor delay (Multiplies Delay)
SetFac = 1

-- Logic can be turned of by value 0
Off_by_Value_Zero = false

-- ************************************** END PARAMETERS ************************************ --
-- *************************** DON'T CHANGE ANYTHING UNDER THIS LINE ************************ --
Input_Value = event.getvalue()
if Off_by_Value_Zero == false and (Input_Value == false or Input_Value == 0) then
 return
else
 tpid = storage.get('PID:' .. _SCRIPTNAME)
 if tpid == nil then
     pid = os.getpid()
     storage.set('PID:' .. _SCRIPTNAME, pid)
 else
   pid = os.getpid()  
   storage.set('PID:' .. _SCRIPTNAME, pid)
   os.kill(tpid, signal.SIGKILL)
 end
 function Calculate_Time(StairCaseTime)
   if StairCaseTime > (86400 -1) then
     StairCaseTime = (86400 -1)
   end
   local hours = math.floor(StairCaseTime / 3600 % 24)
   local minutes = math.floor(StairCaseTime / 60 % 60)
   local seconds = math.floor(StairCaseTime % 60)
   time = {
     day = 0,
     hour = hours,
     minute = minutes,
     second = seconds,
   }
   time =string.format('%02d:%02d:%02d',time.hour,time.minute,time.second)
   return time
 end
 if Input_Value == true or Input_Value == 1 then
   ValueExternalTime = grp.getvalue(AddressExternalTime) or SetDelay
   if SetSec == true then
     Multiply_Seconds = 1
   else
     Multiply_Seconds = 60
   end
   StairCaseTime = ValueExternalTime * Multiply_Seconds * SetFac
   ValueOutput = grp.getvalue(AddressOutput)
   if ValueOutput == false then
     grp.write(AddressOutput, true)
   end
   if UseTimeLeft == true then
     if StairCaseTime > 0 then
       time = Calculate_Time(StairCaseTime)
       grp.update(AddressTimeLeft, time)
       repeat
         StairCaseTime = StairCaseTime - 1
         time = Calculate_Time(StairCaseTime)
         grp.update(AddressTimeLeft, time)
         os.sleep(1)
       until StairCaseTime == 0
     end    
   else
     os.sleep(StairCaseTime)
   end
   grp.write(AddressOutput, false)
 elseif Input_Value == false or Input_Value == 0 then
   ValueOutput = grp.getvalue(AddressOutput)
   if ValueOutput == true then
     if UseTimeLeft == true then
       time = Calculate_Time(0)
       grp.update(AddressTimeLeft, time)
     end
     grp.write(AddressOutput, false)
   end
 end
 storage.delete('PID:' .. _SCRIPTNAME)
end
Reply


Messages In This Thread
Remaining time or counter - by Tokatubs - 15.12.2018, 21:29
RE: Remaining time or counter - by Tokatubs - 16.12.2018, 00:51
RE: Remaining time or counter - by AlexLV - 16.12.2018, 16:09
RE: Remaining time or counter - by AlexLV - 16.12.2018, 20:59
RE: Remaining time or counter - by Tokatubs - 18.12.2018, 19:35
RE: Remaining time or counter - by AlexLV - 19.12.2018, 22:14
RE: Remaining time or counter - by Thomas - 20.12.2018, 10:13
RE: Remaining time or counter - by admin - 20.12.2018, 10:54
RE: Remaining time or counter - by Tokatubs - 20.12.2018, 22:27
RE: Remaining time or counter - by Daniel - 21.12.2018, 08:42
RE: Remaining time or counter - by Tokatubs - 21.12.2018, 09:28
RE: Remaining time or counter - by Daniel - 21.12.2018, 12:18
RE: Remaining time or counter - by Daniel - 21.12.2018, 13:11
RE: Remaining time or counter - by Tokatubs - 21.12.2018, 22:54
RE: Remaining time or counter - by AlexLV - 24.12.2018, 17:00
RE: Remaining time or counter - by CHOUAIBOU - 25.12.2018, 13:24
RE: Remaining time or counter - by AlexLV - 26.12.2018, 09:05
RE: Remaining time or counter - by AlexLV - 06.01.2019, 23:05
RE: Remaining time or counter - by admin - 29.01.2020, 11:28
RE: Remaining time or counter - by admin - 29.01.2020, 13:34
RE: Remaining time or counter - by AlexLV - 30.01.2020, 07:14
RE: Remaining time or counter - by AlexLV - 30.01.2020, 12:41
RE: Remaining time or counter - by admin - 09.08.2022, 08:20
RE: Remaining time or counter - by admin - 09.08.2022, 10:09
RE: Remaining time or counter - by Novodk - 26.05.2023, 19:46
RE: Remaining time or counter - by Novodk - 27.05.2023, 07:02
RE: Remaining time or counter - by admin - 27.05.2023, 06:59
RE: Remaining time or counter - by admin - 27.05.2023, 07:06
RE: Remaining time or counter - by Novodk - 27.05.2023, 07:18
RE: Remaining time or counter - by admin - 29.05.2023, 08:29
RE: Remaining time or counter - by Novodk - 29.05.2023, 08:52
RE: Remaining time or counter - by FatMax - 29.05.2023, 09:04
RE: Remaining time or counter - by Novodk - 01.06.2023, 16:26

Forum Jump: