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.

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:
123456789
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:
123456789101112131415161718192021222324
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: