For my house I have an RFID reader at my front door, this talks via an arduino with MQTT back to openhab to allow or deny access.
Basically I have a rule:
rule “Access Control”
when Item GF_Security_Front_RFID received command
then
if(receivedCommand==“AABBCCDD”){
sendCommand(GF_Security_Front_Lock, 1)
}
What I want to do is modify that rule so that if the RFID tag is read again within x seconds, it opens the roller door
Something like:
Read 1:
Unlock the door
Start a 4 second timer
Read 2:
If timer still running
Send command to open roller door.
Sure
Use the expire binding (you will have to install it if not installed)
create an unbound Switch item
Switch MyRFIDTimer { expire="1m,command=OFF" }
so… when Item GF_Security_Front_RFID received command
set the MyRFIDTimer to ON
MyRFIDTimer.sendCommand(ON)
but what we could do is check if it’s on first and open the other door if it is
so something like this maybe
rule “Access Control”
when
Item GF_Security_Front_RFID received command
then
if (MyRFIDTimer.state ==ON){
// open the roller door
} else {
MyRFIDTimer.sendCommand(ON)
if(receivedCommand==“AABBCCDD”){
sendCommand(GF_Security_Front_Lock, 1)
}
}
end
You can also achieve this in node red without the virtual item by using a flow variable to store the first use of the RFID trigger and a delay node to reset it after an amount of time. I just configured something almost identical to activate different scenes by repeatedly hitting the same button on a switch.