Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local event = require("event")
- local component = require("component")
- local term = require("term")
- local pass = "password"
- local master = "MasterKey"
- local wait = 2
- local screen_main = "6f1"
- local doorConfig = {
- {
- name = "door1",
- addr = "80e5", -- адрес контроллера двери
- reader = "4cde",
- level = 1,
- screen = "67b"
- },
- {
- name = "door2",
- addr = "7a8",
- reader = "caee",
- level = 1,
- screen = "aad"
- }
- }
- local users = {
- ["Scrag"] = {
- level = 1,
- data = "g"
- }
- }
- local doors = {
- }
- local function init()
- for _, doorData in ipairs(doorConfig) do
- local readerAddr = component.get(doorData.reader)
- local screenAddr = component.get(doorData.screen)
- local doorAddr = component.get(doorData.addr)
- if readerAddr and screenAddr and doorAddr then
- doorData.addr = doorAddr
- doorData.screen = screenAddr
- doors[readerAddr] = doorData
- component.invoke(doorAddr, "setPassword", "", pass)
- component.invoke(doorAddr, "close", pass)
- component.gpu.bind(screenAddr)
- term.clear()
- end
- end
- screen_main = component.get(screen_main)
- doorConfig = nil
- component.gpu.bind(screen_main, true)
- end
- local function run()
- while 1 do
- local _, address, pName, data = event.pull("magData")
- if data == master then
- for _, door in pairs(doors) do
- component.invoke(door.addr, "open", pass)
- end
- print("Система безопастности отключена: " ..pName)
- break
- end
- local door = doors[address]
- if door then
- component.gpu.bind(door.screen)
- local user = users[pName]
- if not user then
- print("Не в WhiteList")
- else
- if user.level > door.level then
- print("Недостаточный уровень доступа", door.name, pName, user.level)
- elseif user.data ~= data then
- print("Карта недействительна", door.name, pName, data)
- else
- print("Открытие двери", door.name, pName)
- component.invoke(door.addr, "open", pass)
- os.sleep(wait)
- component.invoke(door.addr, "close", pass)
- end
- end
- component.gpu.bind(screen_main)
- end
- end
- end
- init()
- run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement