mirror of
https://github.com/zyphlar/open-access-control-minimal-http.git
synced 2024-03-08 15:57:47 +00:00
Added extend button
This commit is contained in:
parent
02435a78b1
commit
5f8d01fc27
|
@ -108,10 +108,14 @@ void setup(){ // Runs once at Arduino boot-up
|
||||||
*/
|
*/
|
||||||
pcattach.PCattachInterrupt(reader1Pins[0], callReader1Zero, CHANGE);
|
pcattach.PCattachInterrupt(reader1Pins[0], callReader1Zero, CHANGE);
|
||||||
pcattach.PCattachInterrupt(reader1Pins[1], callReader1One, CHANGE);
|
pcattach.PCattachInterrupt(reader1Pins[1], callReader1One, CHANGE);
|
||||||
|
|
||||||
//Clear and initialize readers
|
//Clear and initialize readers
|
||||||
wiegand26.initReaderOne(); //Set up Reader 1 and clear buffers.
|
wiegand26.initReaderOne(); //Set up Reader 1 and clear buffers.
|
||||||
|
|
||||||
|
// Initialize button input
|
||||||
|
pinMode(A5, INPUT);
|
||||||
|
digitalWrite(A5, HIGH);
|
||||||
|
|
||||||
//Initialize output relays
|
//Initialize output relays
|
||||||
for(byte i=0; i<4; i++){
|
for(byte i=0; i<4; i++){
|
||||||
pinMode(relayPins[i], OUTPUT);
|
pinMode(relayPins[i], OUTPUT);
|
||||||
|
@ -132,95 +136,6 @@ void setup(){ // Runs once at Arduino boot-up
|
||||||
void loop() // Main branch, runs over and over again
|
void loop() // Main branch, runs over and over again
|
||||||
{
|
{
|
||||||
|
|
||||||
//////////////////////////
|
|
||||||
// Reader input/authentication section
|
|
||||||
//////////////////////////
|
|
||||||
if(reader1Count >= 26)
|
|
||||||
{ // When tag presented to reader1 (No keypad on this reader)
|
|
||||||
|
|
||||||
|
|
||||||
Serial.println("connecting...");
|
|
||||||
|
|
||||||
// if you get a connection, report back via serial:
|
|
||||||
if (client.connect())
|
|
||||||
{
|
|
||||||
Serial.println("connected");
|
|
||||||
|
|
||||||
Serial.print("GET /~access/access?device=laser&id=");
|
|
||||||
Serial.print(reader1, HEX);
|
|
||||||
Serial.println(" HTTP/1.0");
|
|
||||||
Serial.println();
|
|
||||||
|
|
||||||
client.print("GET /~access/access?device=laser&id=");
|
|
||||||
client.print(reader1, HEX);
|
|
||||||
client.println(" HTTP/1.0");
|
|
||||||
client.println();
|
|
||||||
|
|
||||||
// reset values coming from http
|
|
||||||
httpresponse = "";
|
|
||||||
username = "";
|
|
||||||
authorized = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// kf you didn't get a connection to the server:
|
|
||||||
Serial.println("connection failed");
|
|
||||||
}
|
|
||||||
|
|
||||||
wiegand26.initReaderOne(); // Reset for next tag scan
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
while (client.available()) {
|
|
||||||
char thisChar = client.read();
|
|
||||||
// only fill up httpresponse with data after a ^ sign.
|
|
||||||
if (httpresponse.charAt(0) == '^' || thisChar == '^') {
|
|
||||||
httpresponse += thisChar;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!client.available() && httpresponse.length()>0) {
|
|
||||||
Serial.println("Response: ");
|
|
||||||
|
|
||||||
Serial.println(httpresponse);
|
|
||||||
int c = httpresponse.indexOf('^');
|
|
||||||
int d = httpresponse.indexOf('|');
|
|
||||||
int e = httpresponse.indexOf('$');
|
|
||||||
|
|
||||||
Serial.print("IndexOf:");
|
|
||||||
Serial.println(c);
|
|
||||||
Serial.println(d);
|
|
||||||
Serial.println(e);
|
|
||||||
|
|
||||||
Serial.println("SubStr:");
|
|
||||||
Serial.println(httpresponse.substring(c+1,d));
|
|
||||||
|
|
||||||
username = httpresponse.substring(c+1,d);
|
|
||||||
|
|
||||||
Serial.print("User: ");
|
|
||||||
Serial.println(username);
|
|
||||||
|
|
||||||
Serial.println("SubStr:");
|
|
||||||
Serial.println(httpresponse.substring(d+1,e));
|
|
||||||
|
|
||||||
if(httpresponse.substring(d+1,e) == "OK") {
|
|
||||||
authorized = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Serial.print("Auth: ");
|
|
||||||
Serial.println(authorized);
|
|
||||||
|
|
||||||
|
|
||||||
Serial.println("End Response");
|
|
||||||
httpresponse = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
// if the server's disconnected, stop the client:
|
|
||||||
if (!client.connected()) {
|
|
||||||
client.stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////////////////
|
//////////////////////////
|
||||||
// Normal operation section
|
// Normal operation section
|
||||||
//////////////////////////
|
//////////////////////////
|
||||||
|
@ -228,6 +143,15 @@ void loop() // Main branch, runs over and ov
|
||||||
// check timer -- if expired, remove authorization
|
// check timer -- if expired, remove authorization
|
||||||
|
|
||||||
if(authorized && relay1high) {
|
if(authorized && relay1high) {
|
||||||
|
|
||||||
|
// Detect button push
|
||||||
|
lcd.setCursor(12,0);
|
||||||
|
lcd.print(analogRead(A5));
|
||||||
|
lcd.print(" ");
|
||||||
|
if (analogRead(A5) < 50) {
|
||||||
|
relay1timer = millis();
|
||||||
|
}
|
||||||
|
|
||||||
// calculate current time elapsed
|
// calculate current time elapsed
|
||||||
long currentTime = millis() - relay1timer;
|
long currentTime = millis() - relay1timer;
|
||||||
// if time entirely elapsed, deauthorize.
|
// if time entirely elapsed, deauthorize.
|
||||||
|
@ -250,7 +174,7 @@ void loop() // Main branch, runs over and ov
|
||||||
lcd.print(minRemaining);
|
lcd.print(minRemaining);
|
||||||
lcd.print(":");
|
lcd.print(":");
|
||||||
lcd.print(secRemaining);
|
lcd.print(secRemaining);
|
||||||
lcd.print(" remain");
|
lcd.print(" remain ");
|
||||||
}
|
}
|
||||||
if(!authorized && relay1high) {
|
if(!authorized && relay1high) {
|
||||||
lcd.clear();
|
lcd.clear();
|
||||||
|
@ -276,10 +200,106 @@ void loop() // Main branch, runs over and ov
|
||||||
// display login message
|
// display login message
|
||||||
lcd.setCursor(0, 0);
|
lcd.setCursor(0, 0);
|
||||||
lcd.print("Please login.");
|
lcd.print("Please login.");
|
||||||
|
|
||||||
|
//////////////////////////
|
||||||
|
// Reader input/authentication section
|
||||||
|
//////////////////////////
|
||||||
|
if(reader1Count >= 26)
|
||||||
|
{ // When tag presented to reader1 (No keypad on this reader)
|
||||||
|
|
||||||
|
lcd.clear();
|
||||||
|
lcd.print("connecting...");
|
||||||
|
delay(150);
|
||||||
|
lcd.clear();
|
||||||
|
|
||||||
|
Serial.println("connecting...");
|
||||||
|
|
||||||
|
// if you get a connection, report back via serial:
|
||||||
|
if (client.connect())
|
||||||
|
{
|
||||||
|
Serial.println("connected");
|
||||||
|
|
||||||
|
Serial.print("GET /~access/access?device=laser&id=");
|
||||||
|
Serial.print(reader1, HEX);
|
||||||
|
Serial.println(" HTTP/1.0");
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
client.print("GET /~access/access?device=laser&id=");
|
||||||
|
client.print(reader1, HEX);
|
||||||
|
client.println(" HTTP/1.0");
|
||||||
|
client.println();
|
||||||
|
|
||||||
|
// reset values coming from http
|
||||||
|
httpresponse = "";
|
||||||
|
username = "";
|
||||||
|
authorized = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// kf you didn't get a connection to the server:
|
||||||
|
Serial.println("connection failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
wiegand26.initReaderOne(); // Reset for next tag scan
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
while (client.available()) {
|
||||||
|
char thisChar = client.read();
|
||||||
|
// only fill up httpresponse with data after a ^ sign.
|
||||||
|
if (httpresponse.charAt(0) == '^' || thisChar == '^') {
|
||||||
|
httpresponse += thisChar;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!client.available() && httpresponse.length()>0) {
|
||||||
|
Serial.println("Response: ");
|
||||||
|
|
||||||
|
Serial.println(httpresponse);
|
||||||
|
int c = httpresponse.indexOf('^');
|
||||||
|
int d = httpresponse.indexOf('|');
|
||||||
|
int e = httpresponse.indexOf('$');
|
||||||
|
|
||||||
|
Serial.print("IndexOf:");
|
||||||
|
Serial.println(c);
|
||||||
|
Serial.println(d);
|
||||||
|
Serial.println(e);
|
||||||
|
|
||||||
|
Serial.println("SubStr:");
|
||||||
|
Serial.println(httpresponse.substring(c+1,d));
|
||||||
|
|
||||||
|
username = httpresponse.substring(c+1,d);
|
||||||
|
|
||||||
|
Serial.print("User: ");
|
||||||
|
Serial.println(username);
|
||||||
|
|
||||||
|
Serial.println("SubStr:");
|
||||||
|
Serial.println(httpresponse.substring(d+1,e));
|
||||||
|
|
||||||
|
if(httpresponse.substring(d+1,e) == "OK") {
|
||||||
|
authorized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.print("Auth: ");
|
||||||
|
Serial.println(authorized);
|
||||||
|
|
||||||
|
|
||||||
|
Serial.println("End Response");
|
||||||
|
httpresponse = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
// if the server's disconnected, stop the client:
|
||||||
|
if (!client.connected()) {
|
||||||
|
client.stop();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} // End of loop()
|
} // End of loop()
|
||||||
|
|
||||||
|
|
||||||
void lcdprint(int x, int y, char text) {
|
void lcdprint(int x, int y, char text) {
|
||||||
// set the cursor to column 0, line 1
|
// set the cursor to column 0, line 1
|
||||||
// (note: line 1 is the second row, since counting begins with 0):
|
// (note: line 1 is the second row, since counting begins with 0):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user