You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
50 lines
1.3 KiB
local component = require("component")
|
|
local event = require("event")
|
|
local os = require("os")
|
|
|
|
local doorControllers = {}
|
|
local cardReader = component.os_magreader
|
|
|
|
for address, name in component.list("os_doorcontroller", true) do
|
|
table.insert(doorControllers, component.proxy(address))
|
|
end
|
|
|
|
GREEN_LED = 4
|
|
YELLOW_LED = 2
|
|
RED_LED = 1
|
|
|
|
|
|
local function magCardCallback(eventName, address, playerName, cardData, cardUniqueId, isCardLocked, side)
|
|
-- bits for green, yellow and red leds
|
|
cardReader.setLightState(YELLOW_LED)
|
|
if cardData == "supertajneheslo" then
|
|
cardReader.setLightState(GREEN_LED)
|
|
-- open the doors
|
|
for _, doorController in ipairs(doorControllers) do
|
|
doorController.open()
|
|
end
|
|
os.sleep(3)
|
|
-- close the doors
|
|
for _, doorController in ipairs(doorControllers) do
|
|
doorController.close()
|
|
end
|
|
else
|
|
cardReader.setLightState(RED_LED)
|
|
os.sleep(2)
|
|
end
|
|
-- turn light indicators off
|
|
cardReader.setLightState(0)
|
|
end
|
|
|
|
-- control led indicators manually
|
|
cardReader.swipeIndicator(false)
|
|
|
|
-- subscribe to the event "magData" with
|
|
event.listen("magData", magCardCallback)
|
|
|
|
-- wait for an interrupt before closing the script (CTRL + C)
|
|
event.pull("interrupted")
|
|
|
|
-- unsubscribe from the event bus
|
|
event.ignore("magData", magCardCallback)
|