Adjusted logic to use new csv storage
This commit is contained in:
		
							parent
							
								
									57a48839bc
								
							
						
					
					
						commit
						fc44a3fd8d
					
				
							
								
								
									
										1228
									
								
								data/userdb.csv
									
									
									
									
									
								
							
							
						
						
									
										1228
									
								
								data/userdb.csv
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										10
									
								
								data/userdb.csv.bak
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								data/userdb.csv.bak
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | 1,Max1,Muster,RFID,12341,1 | ||||||
|  | 2,Max2,Muster,RFID,12342,1 | ||||||
|  | 3,Max3,Muster,RFID,12343,1 | ||||||
|  | 4,Max4,Muster,RFID,12344,1 | ||||||
|  | 5,Max5,Muster,RFID,12345,1 | ||||||
|  | 6,Max6,Muster,RFID,12346,1 | ||||||
|  | 7,Max7,Muster,RFID,12347,1 | ||||||
|  | 8,Max8,Muster,RFID,12348,1 | ||||||
|  | 9,Max9,Muster,RFID,12349,1 | ||||||
|  | 10,Max20,Muster,RFID,12340,1 | ||||||
| @ -84,7 +84,9 @@ void Keyboard::scanColumn(uint8_t *key_ptr, uint8_t start, uint8_t stop) | |||||||
|             _timeElapsed = millis(); |             _timeElapsed = millis(); | ||||||
|             this->_lastKey = *key_ptr; |             this->_lastKey = *key_ptr; | ||||||
|             this->_buffer.push_back(mapChr(*key_ptr)); |             this->_buffer.push_back(mapChr(*key_ptr)); | ||||||
|  |             #ifdef DEBUG | ||||||
|             Serial.print(*key_ptr); |             Serial.print(*key_ptr); | ||||||
|  |             #endif | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -24,7 +24,7 @@ void Rfid::scan() | |||||||
|         this->_rfid = ""; |         this->_rfid = ""; | ||||||
|         for (byte i = 0; i < this->_mfrc522.uid.size; i++) |         for (byte i = 0; i < this->_mfrc522.uid.size; i++) | ||||||
|         { |         { | ||||||
|             this->_rfid += this->_mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "; |             this->_rfid += this->_mfrc522.uid.uidByte[i] < 0x10 ? "0" : ""; | ||||||
|             this->_rfid += String(this->_mfrc522.uid.uidByte[i], HEX); |             this->_rfid += String(this->_mfrc522.uid.uidByte[i], HEX); | ||||||
|         } |         } | ||||||
|         this->_rfid.trim(); |         this->_rfid.trim(); | ||||||
| @ -32,7 +32,9 @@ void Rfid::scan() | |||||||
|         if (this->_rfid != this->_lastRfid || millis() > this->_lastRfidScan + RFID_TIMEOUT) |         if (this->_rfid != this->_lastRfid || millis() > this->_lastRfidScan + RFID_TIMEOUT) | ||||||
|         { |         { | ||||||
|             _status = 1; |             _status = 1; | ||||||
|  |             #ifdef DEBUG | ||||||
|             Serial.print(this->_rfid); |             Serial.print(this->_rfid); | ||||||
|  |             #endif | ||||||
|             this->_lastRfid = this->_rfid; |             this->_lastRfid = this->_rfid; | ||||||
|             this->_lastRfidScan = millis(); |             this->_lastRfidScan = millis(); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -48,24 +48,8 @@ User UserDb::user_by_uid(unsigned long cmp){ | |||||||
| void UserDb::print_to_serial() | void UserDb::print_to_serial() | ||||||
| { | { | ||||||
|     Serial.println("Starting UserDB Test Read"); |     Serial.println("Starting UserDB Test Read"); | ||||||
|     // File userdb_file = LittleFS.open("userdb.csv","r");
 |     for(Iterator it = begin(); it.has_next(); ++it){ | ||||||
|     // if (!userdb_file)
 |  | ||||||
|     //{
 |  | ||||||
|     //     Serial.println("Failed to open file for reading");
 |  | ||||||
|     //     return;
 |  | ||||||
|     // }
 |  | ||||||
|     // unsigned int line = 0;
 |  | ||||||
|     // while(userdb_file.available()){
 |  | ||||||
|     //     String temp = userdb_file.readStringUntil('\n');
 |  | ||||||
|     //     User res = read_csv_line(temp);
 |  | ||||||
|     //     Serial.println(res.toString());
 |  | ||||||
|     //     line++;
 |  | ||||||
|     // }
 |  | ||||||
|     Iterator it = begin(); |  | ||||||
|     do |  | ||||||
|     { |  | ||||||
|         User temp = *it; |         User temp = *it; | ||||||
|         Serial.println(temp.toString()); |         Serial.println(temp.toString()); | ||||||
|         ++it; |     } | ||||||
|     } while (it.has_next()); |  | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								src/UserDb.h
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								src/UserDb.h
									
									
									
									
									
								
							| @ -26,7 +26,7 @@ namespace userdb | |||||||
|         mutable String last_name; |         mutable String last_name; | ||||||
|         mutable String rfid_uid; |         mutable String rfid_uid; | ||||||
|         mutable String user_pin; |         mutable String user_pin; | ||||||
|         mutable bool enabled = true; |         mutable bool enabled = false; | ||||||
|         bool operator<(const User &o) const { return uid < o.uid; } |         bool operator<(const User &o) const { return uid < o.uid; } | ||||||
|         bool operator==(const User &o) const { return uid == o.uid; } |         bool operator==(const User &o) const { return uid == o.uid; } | ||||||
|         String toString() |         String toString() | ||||||
| @ -53,7 +53,7 @@ namespace userdb | |||||||
|             int str_length = instring.length() - 1; |             int str_length = instring.length() - 1; | ||||||
|             for (int i = 0; i < str_length; i++) |             for (int i = 0; i < str_length; i++) | ||||||
|             { |             { | ||||||
|                 if (instring.charAt(i) == ',') |                 if (instring.charAt(i) == ';') | ||||||
|                 { |                 { | ||||||
|                     locations[location_index] = i; |                     locations[location_index] = i; | ||||||
|                     location_index++; |                     location_index++; | ||||||
| @ -106,11 +106,11 @@ namespace userdb | |||||||
|             } |             } | ||||||
|             bool has_next() |             bool has_next() | ||||||
|             { |             { | ||||||
|                 return db_file.available(); |                 return available; | ||||||
|             } |             } | ||||||
|             void next() |             void next() | ||||||
|             { |             { | ||||||
|                 if (has_next()) |                 if (db_file.available()) | ||||||
|                 { |                 { | ||||||
|                     String temp = db_file.readStringUntil('\n'); |                     String temp = db_file.readStringUntil('\n'); | ||||||
|                     current = read_csv_line(temp, line); |                     current = read_csv_line(temp, line); | ||||||
| @ -118,6 +118,8 @@ namespace userdb | |||||||
|                 } |                 } | ||||||
|                 else |                 else | ||||||
|                 { |                 { | ||||||
|  |                     available=false; | ||||||
|  |                     current=User{}; | ||||||
|                     db_file.close(); |                     db_file.close(); | ||||||
|                 } |                 } | ||||||
|             }; |             }; | ||||||
| @ -125,6 +127,7 @@ namespace userdb | |||||||
|         private: |         private: | ||||||
|             File db_file; |             File db_file; | ||||||
|             User current; |             User current; | ||||||
|  |             bool available = true; | ||||||
|             unsigned int line = 0; |             unsigned int line = 0; | ||||||
|         }; |         }; | ||||||
|         Iterator begin() { return Iterator(LittleFS.open("userdb.csv", "r")); } |         Iterator begin() { return Iterator(LittleFS.open("userdb.csv", "r")); } | ||||||
|  | |||||||
							
								
								
									
										56
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								src/main.cpp
									
									
									
									
									
								
							| @ -6,7 +6,7 @@ | |||||||
| #include "Interface.h" | #include "Interface.h" | ||||||
| #include <ESP8266WiFi.h> | #include <ESP8266WiFi.h> | ||||||
| #include <vector> | #include <vector> | ||||||
| #include "Users.h" | //#include "Users.h"
 | ||||||
| #include "UserDb.h" | #include "UserDb.h" | ||||||
| #include "Persistence.h" | #include "Persistence.h" | ||||||
| // File persistence
 | // File persistence
 | ||||||
| @ -27,46 +27,56 @@ IPAddress gateway(192, 168, 4, 9); | |||||||
| IPAddress subnet(255, 255, 255, 0); | IPAddress subnet(255, 255, 255, 0); | ||||||
| 
 | 
 | ||||||
| // User DB
 | // User DB
 | ||||||
| Users users(persistence); | //Users users(persistence);
 | ||||||
| 
 | 
 | ||||||
| void setup() | void setup() | ||||||
| { | { | ||||||
| 	Persistence::Configuration config = persistence.loadConfig(); | 	Persistence::Configuration config = persistence.loadConfig(); | ||||||
| 	users.ImportFromPersistence(); | 	//users.ImportFromPersistence();
 | ||||||
| 	Serial.begin(9600); | 	Serial.begin(9600); | ||||||
| 	Serial.print("Starting"); | 	Serial.print("Starting"); | ||||||
| 	Serial.println(WiFi.softAPConfig(local_IP, gateway, subnet) ? "Ready" : "Failed!"); | 	Serial.println(WiFi.softAPConfig(local_IP, gateway, subnet) ? "Ready" : "Failed!"); | ||||||
| 	Serial.println(WiFi.softAP(config.SSID) ? "Ready" : "Failed!"); | 	if (strlen(config.PASS)>0) | ||||||
|  | 		Serial.println(WiFi.softAP(config.SSID, config.PASS) ? "Ready" : "Failed!"); | ||||||
|  | 	else | ||||||
|  | 		Serial.println(WiFi.softAP(config.SSID) ? "Ready" : "Failed!"); | ||||||
|  | 	delay(250); | ||||||
|  | #ifdef DEBUG | ||||||
| 	userdatabase.print_to_serial(); | 	userdatabase.print_to_serial(); | ||||||
| 	//delay(500);
 | #endif | ||||||
| 	keyboard.begin(&Wire); | 	keyboard.begin(&Wire); | ||||||
| 	rfid.begin(); | 	rfid.begin(); | ||||||
| 	iface.begin(&keyboard); | 	iface.begin(&keyboard); | ||||||
| 	//while(users.countUsers()<100){
 |  | ||||||
| 	//	users.addUser("Harry","Potter","","1234");
 |  | ||||||
| 	//}
 |  | ||||||
| 	Serial.println(userdatabase.user_by_pin("12348").toString()); |  | ||||||
| 	//users.PrintAllToSerial();
 |  | ||||||
| 	//Serial.println(persistence.TestRead());
 |  | ||||||
| 	//users.ExportToPersistence();
 |  | ||||||
| 	//Serial.println(persistence.TestRead());
 |  | ||||||
| 	 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void loop() | void loop() | ||||||
| { | { | ||||||
| 	keyboard.scanAsync(); | 	keyboard.scanAsync(); | ||||||
| 	rfid.scan(); | 	rfid.scan(); | ||||||
| 	std::vector<Users::User> logon_users; | 	userdb::User login_user; | ||||||
| 	if (iface.pinAvailable() && !users.checkPin(iface.getPin(), &logon_users)) | 	if (iface.pinAvailable()) | ||||||
| 		iface.showMessage("Login failed!", "-> Pin incorrect", 3000); |  | ||||||
| 	else if (rfid.available() && !users.checkRfid(rfid.getID(), &logon_users)) |  | ||||||
| 		iface.showMessage("Login failed!", "-> Unkown Card", 3000); |  | ||||||
| 	else if (logon_users.size() > 0) |  | ||||||
| 	{ | 	{ | ||||||
| 		iface.greetUser(logon_users[0].first_name + " " + logon_users[0].last_name); | 		login_user = userdatabase.user_by_pin(iface.getPin()); | ||||||
| 		Serial.print(users.toString(&logon_users[0])); | 		if (login_user.enabled == false) | ||||||
| 		logon_users.clear(); | 		{ | ||||||
|  | 			iface.showMessage("Login failed!", "-> Pin incorrect", 3000); | ||||||
|  | 			return; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	else if (rfid.available()) | ||||||
|  | 	{ | ||||||
|  | 		login_user = userdatabase.user_by_rfid(rfid.getID()); | ||||||
|  | 		if (login_user.enabled == false) | ||||||
|  | 		{ | ||||||
|  | 			iface.showMessage("Login failed!", "-> Unkown Card", 3000); | ||||||
|  | 			return; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if (login_user.enabled == true) | ||||||
|  | 	{ | ||||||
|  | 		iface.greetUser(login_user.first_name + " " + login_user.last_name); | ||||||
|  | 		Serial.println("Logon from User " + login_user.toString()); | ||||||
| 	} | 	} | ||||||
| 	iface.render(); | 	iface.render(); | ||||||
| } | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user