Changed some stuff, added the whole controller script

This commit is contained in:
aiden@zuchtbude.de
2020-05-03 19:41:25 +02:00
parent 66d96b567d
commit f31502b030
6 changed files with 148 additions and 48 deletions
+32
View File
@@ -0,0 +1,32 @@
-- LUA SWITCH / CASE
function switch(t)
t.case = function (self,x)
local f=self[x] or self.default
if f then
if type(f)=="function" then
f(x,self)
else
error("case "..tostring(x).." not a function")
end
end
end
return t
end
--actions = switch {
-- ["18873940"] = function()
-- print("Door has been opened : " .. user .. " MagReader : " .. address)
-- doorCtrl()
-- end,
-- ["99447582"] = function()
-- print("Exiting process : " .. user)
-- os.exit()
-- end,
-- default = function()
-- print("Code is not correct : " .. user)
-- end,
--}
--actions:case(code)
@@ -0,0 +1,37 @@
-- FileName --
The filename of an instruction sheet must be made up of the magnetic card reader and the suffix ".lua"
example : 3bbdd537-f117-4d4a-bc48-6adc766fb243.lua
|___________________________________|___|
Filename Suffix
-- Content --
The content of an instruction sheet is basically an array.
This array contains the address of the door controller, and the magstripe card codes that are allowed to go in.
example :
accessArray = {
["doorController"] = "91b601d3-19eb-4762-9073-8f2a208accc2", -- This is the address of the controller that the MagCard reader is supposed to work with --
["allowed"] = {
"18873940", -- Here are the codes of the cards that can use the card reader --
"11225543" -- This can be anything, numbers, characters, special characters, it doesnt matter --
}
}
-- How to create a magstripe access card --
You need the cardwriter.
Then you go to lua input mode, and type in :
component.os_cardwriter.write("18873940", "The name of the card you want")
done, now you have a keycard that has the code "18873940" on it.
-- Sample --
This is a sample that you can use in notepad++ for example, and put your values in, and then copy paste it into your game when you are done.
accessArray = {
["doorController"] = "",
["allowed"] = {
""
}
}
+36
View File
@@ -0,0 +1,36 @@
-- Mag Keycard Door Controller Program
event = require("event")
function inTable(tbl, item)
for key, value in pairs(tbl) do
if value == item then return true end
end
return false
end
function doorCtrl(doorController)
door = component.proxy(component.get(doorController))
door.toggle()
end
while true do
_,address,user,code = event.pull("magData")
if code == "99447582" then
print("Exiting")
door1 = require("component").os_doorcontroller
door1.close()
os.exit()
end
require("instructions/" .. address)
if inTable(accessArray["allowed"], code) then
print("The code is correct")
doorCtrl(accessArray["doorController"])
else
print("The code is incorrect")
end
end
+12
View File
@@ -0,0 +1,12 @@
-- Instruction on how to use --
Step 0:
Make sure that you have the OpenComputers and OpenSecurity mods installed
Step 1:
You copy paste the main.lua script into your OC device
Step 2:
If you havent done this yet, build your MagCard Reader and DoorControllers, and you need an "Analyzer" (5948/0)
Step 3:
Follow the instructions in the "instructions" directory
+31
View File
@@ -0,0 +1,31 @@
I need to make the cardReader script better, by using multiple doorcontrollers, and magcardreaders
to do this, i ll need different folders, each with instructions in JSON form
the id of the reader, and the id of the controller
and a set of codes that work on said reader
ab7f5cd3-db83-4232-93f3-8187ede44853 Card Reader next to the computer
83d424fd-533a-498c-94b0-57f0d91f7189 Card Reader next to door 1
4450c25a-347b-4400-a7ec-848811b8d6ca Door Controller 1
entry codes:
- 18873940
- 11225543
ace408be-05d5-45c6-b3cf-5d8c9a2a3f24 Reader 2
91b601d3-19eb-4762-9073-8f2a208accc2 Door Controller 2
entry codes:
- 18873940
- 15422687
- 11225543
3bbdd537-f117-4d4a-bc48-6adc766fb243 Reader 3
bce90c10-c8ba-4151-97a1-056d479caed1 Controller 3
entry codes:
- 18873940
- 15422687
- 11225543
-48
View File
@@ -1,48 +0,0 @@
-- Mag Keycard Door Controller Program
magReader = require("component").os_magreader
door = require("component").os_doorcontroller
event = require("event")
function switch(t)
t.case = function (self,x)
local f=self[x] or self.default
if f then
if type(f)=="function" then
f(x,self)
else
error("case "..tostring(x).." not a function")
end
end
end
return t
end
actions = switch {
["18873940"] = function()
print("Door has been opened : " .. user)
doorCtrl()
end,
["99447582"] = function()
print("Exiting process : " .. user)
os.exit()
end,
default = function()
print("Code is not correct : " .. user)
end,
}
function doorCtrl()
door.open()
os.sleep(2)
door.close()
end
while true do
_,_,user,code = event.pull("magData")
actions:case(code)
end