before using User lib
This commit is contained in:
parent
06a1750719
commit
a46725cf03
33
.vscode/settings.json
vendored
33
.vscode/settings.json
vendored
@ -49,7 +49,38 @@
|
|||||||
"stdexcept": "cpp",
|
"stdexcept": "cpp",
|
||||||
"streambuf": "cpp",
|
"streambuf": "cpp",
|
||||||
"cinttypes": "cpp",
|
"cinttypes": "cpp",
|
||||||
"typeinfo": "cpp"
|
"typeinfo": "cpp",
|
||||||
|
"any": "cpp",
|
||||||
|
"bitset": "cpp",
|
||||||
|
"cfenv": "cpp",
|
||||||
|
"charconv": "cpp",
|
||||||
|
"chrono": "cpp",
|
||||||
|
"codecvt": "cpp",
|
||||||
|
"complex": "cpp",
|
||||||
|
"condition_variable": "cpp",
|
||||||
|
"coroutine": "cpp",
|
||||||
|
"csetjmp": "cpp",
|
||||||
|
"csignal": "cpp",
|
||||||
|
"ctime": "cpp",
|
||||||
|
"cuchar": "cpp",
|
||||||
|
"forward_list": "cpp",
|
||||||
|
"unordered_set": "cpp",
|
||||||
|
"ratio": "cpp",
|
||||||
|
"regex": "cpp",
|
||||||
|
"fstream": "cpp",
|
||||||
|
"future": "cpp",
|
||||||
|
"iomanip": "cpp",
|
||||||
|
"iostream": "cpp",
|
||||||
|
"mutex": "cpp",
|
||||||
|
"numbers": "cpp",
|
||||||
|
"scoped_allocator": "cpp",
|
||||||
|
"shared_mutex": "cpp",
|
||||||
|
"span": "cpp",
|
||||||
|
"stop_token": "cpp",
|
||||||
|
"thread": "cpp",
|
||||||
|
"typeindex": "cpp",
|
||||||
|
"valarray": "cpp",
|
||||||
|
"variant": "cpp"
|
||||||
},
|
},
|
||||||
"C_Cpp.errorSquiggles": "Disabled"
|
"C_Cpp.errorSquiggles": "Disabled"
|
||||||
}
|
}
|
@ -16,3 +16,5 @@ lib_deps =
|
|||||||
xreef/PCF8574 library@^2.2.1
|
xreef/PCF8574 library@^2.2.1
|
||||||
marcoschwartz/LiquidCrystal_I2C@^1.1.4
|
marcoschwartz/LiquidCrystal_I2C@^1.1.4
|
||||||
miguelbalboa/MFRC522@^1.4.9
|
miguelbalboa/MFRC522@^1.4.9
|
||||||
|
me-no-dev/ESP Async WebServer@^1.2.3
|
||||||
|
bblanchon/ArduinoJson@^6.18.5
|
||||||
|
@ -92,7 +92,7 @@ void Interface::render()
|
|||||||
this->_lcd.clear();
|
this->_lcd.clear();
|
||||||
this->_lcd.print("Please enter Pin");
|
this->_lcd.print("Please enter Pin");
|
||||||
this->_lcd.setCursor(0, 1);
|
this->_lcd.setCursor(0, 1);
|
||||||
this->_pin_number.concat(this->_keyboard->getString());
|
this->_pin_number = this->_keyboard->getString();
|
||||||
this->_lcd.print("Pin: " + _pin_number);
|
this->_lcd.print("Pin: " + _pin_number);
|
||||||
this->_display_state = 2;
|
this->_display_state = 2;
|
||||||
this->_displayUpdate = false;
|
this->_displayUpdate = false;
|
||||||
|
24
src/Users.cpp
Normal file
24
src/Users.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "Users.h"
|
||||||
|
|
||||||
|
Users::Users(/* args */)
|
||||||
|
{
|
||||||
|
this->userdb.insert(user_account{.uid = 012345, .first_name = "John", .last_name = "Doe", .rfid_uid = "8C 75 6C 17", .user_pin = "2424"});
|
||||||
|
this->userdb.insert(user_account{.uid = 010202, .first_name = "Max", .last_name = "Mustermann and Sons", .rfid_uid = "D3 4E 03 0B", .user_pin = "1212"});
|
||||||
|
}
|
||||||
|
|
||||||
|
Users::~Users()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
bool Users::checkPin(String pin_code, std::vector<Users::User> *logon_users)
|
||||||
|
{
|
||||||
|
std::copy_if(this->userdb.begin(), this->userdb.end(), inserter(*logon_users,logon_users->end()), [=](user_account user)
|
||||||
|
{ return pin_code == user.user_pin; });
|
||||||
|
return (logon_users->size()>0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Users::checkRfid(String rfid_code, std::vector<Users::User> *logon_users)
|
||||||
|
{
|
||||||
|
std::copy_if(this->userdb.begin(), this->userdb.end(), inserter(*logon_users,logon_users->end()), [=](user_account user)
|
||||||
|
{ return rfid_code == user.rfid_uid; });
|
||||||
|
return (logon_users->size()>0);
|
||||||
|
}
|
27
src/Users.h
Normal file
27
src/Users.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <set>
|
||||||
|
#include <vector>
|
||||||
|
class Users
|
||||||
|
{
|
||||||
|
typedef struct User
|
||||||
|
{
|
||||||
|
unsigned long uid;
|
||||||
|
String first_name;
|
||||||
|
String last_name;
|
||||||
|
String rfid_uid;
|
||||||
|
String user_pin;
|
||||||
|
bool operator < (const User &o) const { return uid <o.uid; }
|
||||||
|
bool operator == (const User &o) const { return uid ==o.uid; }
|
||||||
|
} user_account;
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::set<User> userdb;
|
||||||
|
|
||||||
|
/* data */
|
||||||
|
public:
|
||||||
|
Users(/* args */);
|
||||||
|
~Users();
|
||||||
|
bool checkRfid(String rfid_code, std::vector<Users::User> *logon_users);
|
||||||
|
bool checkPin(String pin_code, std::vector<Users::User> *logon_users);
|
||||||
|
};
|
40
src/main.cpp
40
src/main.cpp
@ -4,8 +4,9 @@
|
|||||||
#include "Keyboard.h"
|
#include "Keyboard.h"
|
||||||
#include "Rfid.h"
|
#include "Rfid.h"
|
||||||
#include "Interface.h"
|
#include "Interface.h"
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include "Users.h"
|
||||||
// Rfid
|
// Rfid
|
||||||
Rfid rfid;
|
Rfid rfid;
|
||||||
// i2C Bus
|
// i2C Bus
|
||||||
@ -14,6 +15,10 @@ Rfid rfid;
|
|||||||
|
|
||||||
Keyboard keyboard(200);
|
Keyboard keyboard(200);
|
||||||
Interface iface;
|
Interface iface;
|
||||||
|
// Wifi control
|
||||||
|
IPAddress local_IP(192,168,4,22);
|
||||||
|
IPAddress gateway(192,168,4,9);
|
||||||
|
IPAddress subnet(255,255,255,0);
|
||||||
|
|
||||||
// User DB
|
// User DB
|
||||||
|
|
||||||
@ -30,7 +35,9 @@ void setup()
|
|||||||
{
|
{
|
||||||
Serial.begin(9600);
|
Serial.begin(9600);
|
||||||
Serial.print("Starting");
|
Serial.print("Starting");
|
||||||
delay(500);
|
Serial.println(WiFi.softAPConfig(local_IP, gateway, subnet) ? "Ready" : "Failed!");
|
||||||
|
Serial.println(WiFi.softAP("Doorlock") ? "Ready" : "Failed!");
|
||||||
|
//delay(500);
|
||||||
keyboard.begin(&Wire);
|
keyboard.begin(&Wire);
|
||||||
rfid.begin();
|
rfid.begin();
|
||||||
iface.begin(&keyboard);
|
iface.begin(&keyboard);
|
||||||
@ -42,28 +49,27 @@ void loop()
|
|||||||
{
|
{
|
||||||
keyboard.scanAsync();
|
keyboard.scanAsync();
|
||||||
rfid.scan();
|
rfid.scan();
|
||||||
|
std::vector<user_account> logon_users;
|
||||||
if (iface.pinAvailable())
|
if (iface.pinAvailable())
|
||||||
{
|
{
|
||||||
String entered_pin = iface.getPin();
|
String entered_pin = iface.getPin();
|
||||||
std::for_each(userdb.begin(), userdb.end(), [=](user_account user)
|
std::copy_if(userdb.begin(), userdb.end(), std::back_inserter(logon_users), [=](user_account user)
|
||||||
{
|
{ return entered_pin == user.user_pin; });
|
||||||
if (entered_pin == user.user_pin)
|
if (logon_users.size() == 0)
|
||||||
{
|
iface.showMessage("Login failed!", "-> Pin incorrect",3000);
|
||||||
iface.greetUser(user.first_name + " " + user.last_name);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
std::cop
|
|
||||||
else if (rfid.available())
|
else if (rfid.available())
|
||||||
{
|
{
|
||||||
String rfid_card_uid = rfid.getID();
|
String rfid_card_uid = rfid.getID();
|
||||||
std::for_each(userdb.begin(), userdb.end(), [=](user_account user)
|
std::copy_if(userdb.begin(), userdb.end(), std::back_inserter(logon_users), [=](user_account user)
|
||||||
{
|
{ return rfid_card_uid == user.rfid_uid; });
|
||||||
if (rfid_card_uid == user.rfid_uid)
|
if (logon_users.size() == 0)
|
||||||
{
|
iface.showMessage("Login failed!", "-> Unkown Card",3000);
|
||||||
iface.greetUser(user.first_name + " " + user.last_name);
|
}
|
||||||
}
|
if (logon_users.size() > 0)
|
||||||
});
|
{
|
||||||
|
iface.greetUser(logon_users[0].first_name + " " + logon_users[0].last_name);
|
||||||
|
logon_users.clear();
|
||||||
}
|
}
|
||||||
iface.render();
|
iface.render();
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user