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",
|
||||
"streambuf": "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"
|
||||
}
|
@ -16,3 +16,5 @@ lib_deps =
|
||||
xreef/PCF8574 library@^2.2.1
|
||||
marcoschwartz/LiquidCrystal_I2C@^1.1.4
|
||||
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.print("Please enter Pin");
|
||||
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->_display_state = 2;
|
||||
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 "Rfid.h"
|
||||
#include "Interface.h"
|
||||
#include <ESP8266WiFi.h>
|
||||
#include <vector>
|
||||
|
||||
#include "Users.h"
|
||||
// Rfid
|
||||
Rfid rfid;
|
||||
// i2C Bus
|
||||
@ -14,6 +15,10 @@ Rfid rfid;
|
||||
|
||||
Keyboard keyboard(200);
|
||||
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
|
||||
|
||||
@ -30,7 +35,9 @@ void setup()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
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);
|
||||
rfid.begin();
|
||||
iface.begin(&keyboard);
|
||||
@ -42,28 +49,27 @@ void loop()
|
||||
{
|
||||
keyboard.scanAsync();
|
||||
rfid.scan();
|
||||
std::vector<user_account> logon_users;
|
||||
if (iface.pinAvailable())
|
||||
{
|
||||
String entered_pin = iface.getPin();
|
||||
std::for_each(userdb.begin(), userdb.end(), [=](user_account user)
|
||||
{
|
||||
if (entered_pin == user.user_pin)
|
||||
{
|
||||
iface.greetUser(user.first_name + " " + user.last_name);
|
||||
}
|
||||
});
|
||||
std::copy_if(userdb.begin(), userdb.end(), std::back_inserter(logon_users), [=](user_account user)
|
||||
{ return entered_pin == user.user_pin; });
|
||||
if (logon_users.size() == 0)
|
||||
iface.showMessage("Login failed!", "-> Pin incorrect",3000);
|
||||
}
|
||||
std::cop
|
||||
else if (rfid.available())
|
||||
{
|
||||
String rfid_card_uid = rfid.getID();
|
||||
std::for_each(userdb.begin(), userdb.end(), [=](user_account user)
|
||||
{
|
||||
if (rfid_card_uid == user.rfid_uid)
|
||||
{
|
||||
iface.greetUser(user.first_name + " " + user.last_name);
|
||||
}
|
||||
});
|
||||
std::copy_if(userdb.begin(), userdb.end(), std::back_inserter(logon_users), [=](user_account user)
|
||||
{ return rfid_card_uid == user.rfid_uid; });
|
||||
if (logon_users.size() == 0)
|
||||
iface.showMessage("Login failed!", "-> Unkown Card",3000);
|
||||
}
|
||||
if (logon_users.size() > 0)
|
||||
{
|
||||
iface.greetUser(logon_users[0].first_name + " " + logon_users[0].last_name);
|
||||
logon_users.clear();
|
||||
}
|
||||
iface.render();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user