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[1], callReader1One,  CHANGE);  
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
  //Clear and initialize readers
 | 
			
		||||
  wiegand26.initReaderOne(); //Set up Reader 1 and clear buffers.
 | 
			
		||||
 | 
			
		||||
  // Initialize button input
 | 
			
		||||
  pinMode(A5, INPUT);
 | 
			
		||||
  digitalWrite(A5, HIGH);
 | 
			
		||||
 | 
			
		||||
  //Initialize output relays
 | 
			
		||||
  for(byte i=0; i<4; i++){        
 | 
			
		||||
    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
 | 
			
		||||
{ 
 | 
			
		||||
  
 | 
			
		||||
  //////////////////////////  
 | 
			
		||||
  // 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
 | 
			
		||||
  //////////////////////////  
 | 
			
		||||
@ -228,6 +143,15 @@ void loop()                                     // Main branch, runs over and ov
 | 
			
		||||
  // check timer -- if expired, remove authorization
 | 
			
		||||
  
 | 
			
		||||
  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
 | 
			
		||||
    long currentTime = millis() - relay1timer;
 | 
			
		||||
    // if time entirely elapsed, deauthorize.
 | 
			
		||||
@ -250,7 +174,7 @@ void loop()                                     // Main branch, runs over and ov
 | 
			
		||||
    lcd.print(minRemaining);
 | 
			
		||||
    lcd.print(":");
 | 
			
		||||
    lcd.print(secRemaining);
 | 
			
		||||
    lcd.print(" remain");
 | 
			
		||||
    lcd.print(" remain    ");
 | 
			
		||||
  }
 | 
			
		||||
  if(!authorized && relay1high) {
 | 
			
		||||
    lcd.clear();
 | 
			
		||||
@ -276,10 +200,106 @@ void loop()                                     // Main branch, runs over and ov
 | 
			
		||||
    // display login message
 | 
			
		||||
    lcd.setCursor(0, 0);  
 | 
			
		||||
    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()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void lcdprint(int x, int y, char text) {
 | 
			
		||||
  // set the cursor to column 0, line 1
 | 
			
		||||
  // (note: line 1 is the second row, since counting begins with 0):
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user