Advertisement
Guest User

Untitled

a guest
May 9th, 2021
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.47 KB | None | 0 0
  1. time_t = {time_started = {}, ramp_rate = {}, delay_time = {}, level_after_timeout = {}}
  2.  
  3.  
  4. function Timer_Group(net_f, app_f, group_f, level_f, rrate_f, delay_time_f, level_after_timeout_f)
  5.  
  6.   if (level_f > -1) then
  7.     SetCBusLevel(net_f, app_f, group_f, level_f, rrate_f)
  8.   end
  9.  
  10.   local knet, kapp, kgrp
  11.  
  12.   if ( type(net_f)=='string' ) then
  13.     knet = GetCBusNetworkAddress(net_f)
  14.   else
  15.     knet = net_f
  16.   end
  17.   if ( type(app_f)=='string' ) then
  18.       kapp = GetCBusApplicationAddress(knet, app_f)
  19.   else
  20.     kapp = app_f
  21.   end
  22.     if ( type(group_f)=='string' ) then
  23.       kgrp = GetCBusGroupAddress(knet, kapp, group_f)
  24.   else
  25.     kgrp = group_f
  26.   end
  27.   local key = tostring(knet) ..":" .. tostring(kapp) .. ":" .. tostring(kgrp)
  28.   time_t.time_started[key] = os.time()
  29.   time_t.ramp_rate[key] = rrate_f
  30.   time_t.delay_time[key] = delay_time_f
  31.   time_t.level_after_timeout[key] = level_after_timeout_f
  32.  
  33.   storage.set('time_t', time_t)
  34.  
  35. end
  36.  
  37.  
  38. function Timer_Stop(net_f, app_f, group_f)
  39.  
  40.   time_t = storage.get('time_t')
  41.  
  42.   local knet, kapp, kgrp
  43.  
  44.   if ( type(net_f)=='string' ) then
  45.     knet = GetCBusNetworkAddress(net_f)
  46.   else
  47.     knet = net_f
  48.   end
  49.   if ( type(net_f)=='string' ) then
  50.       kapp = GetCBusApplicationAddress(knet, app_f)
  51.   else
  52.     kapp = app_f
  53.   end
  54.     if ( type(net_f)=='string' ) then
  55.       kgrp = GetCBusGroupAddress(knet, kapp, group_f)
  56.   else
  57.     kgrp = group_f
  58.   end
  59.   local key = tostring(knet) ..":" .. tostring(kapp) .. ":" .. tostring(kgrp)
  60.  
  61.   if (time_t ~= nil) then
  62.     time_t.time_started[key] = nil
  63.     time_t.ramp_rate[key] = nil
  64.     time_t.delay_time[key] = nil
  65.     time_t.level_after_timeout[key] = nil
  66.   end
  67.  
  68.   storage.set('time_t', time_t)
  69.  
  70. end
  71.  
  72.  
  73. function Timer_Chk()
  74.  
  75.   local key, time_started
  76.   time_t = storage.get('time_t')
  77.  
  78.   if (time_t ~= nil) then
  79.     for key,time_started in pairs(time_t.time_started) do
  80.       if os.time() - time_t.time_started[key] >= time_t.delay_time[key] then
  81.         local knet = tonumber(string.match(key, "(%d+):"))
  82.         local kapp = tonumber(string.match(key, ":(%d+):"))
  83.         local kgrp = tonumber(string.match(key, ":(%d+)$"))
  84.  
  85.         SetCBusLevel(knet, kapp, kgrp, time_t.level_after_timeout[key], time_t.ramp_rate[key])
  86.  
  87.         time_t.time_started[key] = nil
  88.         time_t.ramp_rate[key] = nil
  89.         time_t.delay_time[key] = nil
  90.         time_t.level_after_timeout[key] = nil
  91.  
  92.         storage.set('time_t', time_t)
  93.       end
  94.     end
  95.   end
  96.  
  97. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement