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