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 whether you accept or reject these cookies being set.

Fb editor
#1
I have 2 Group adresses, one with an pir detector connected to it. 
I want the second GA to also go high when first is connected. 
But when first GA goes off, the second should have have an delay on the output for extra time. 

I did this via the FB Editor, and seems to work. But i was really wondering how this could be written more easily in normal event script?

Code:
require('custom.fbeditor20.Time')

functions_Time_json_fbe_switch_delay_input_1 = grp.find(event.dst)
functions_Time_json_fbe_switch_delay_input_2 = 0
functions_Time_json_fbe_switch_delay_input_3 = 10
out, out_not = fbe_switch_delay(functions_Time_json_fbe_switch_delay_input_1, functions_Time_json_fbe_switch_delay_input_2, functions_Time_json_fbe_switch_delay_input_3, 'fb__New_diagram__fbe_switch_delay__id')
if out ~= nil then
    grp.checkwrite('17/1/0', out, 1)
end
Reply
#2
You can use this script without FB only change the output grp and make sure this 'fb__New_diagram__fbe_switch_delay__id' is a unique value as this is used as storage ID. 
The function itself looks like this:
Code:
function fbe_switch_delay(input, delayOn, delayOff, blockID)
  -- Create callID
  math.randomseed(os.time())
    math.random()
    math.random()
    local callID = ""
    for i=1,16 do
      callID = callID .. string.format("%x", math.random(0, 0xf))
    end
  -- Store callID
  storage.set(blockID .. "_callID", callID)
  -- Wait
  if input.value and input.value ~= 0 then
    sleep(delayOn)
  else
    sleep(delayOff)
  end
  -- If a telegram arrives during an ongoing delay, then only the last telegram is output delayed. Ongoing delays are cancelled!
  if callID == storage.get(blockID .. "_callID") then
    return input.value, not input.value
  else
    return nil, nil
  end
end
------------------------------
Ctrl+F5
Reply


Forum Jump: