54 lines
1.2 KiB
C++
54 lines
1.2 KiB
C++
|
|
#include <Arduino.h>
|
|
#include <Wire.h>
|
|
#include "Keyboard.h"
|
|
#include "Rfid.h"
|
|
#include "Interface.h"
|
|
#include <ESP8266WiFi.h>
|
|
#include <vector>
|
|
#include "Users.h"
|
|
// Rfid
|
|
Rfid rfid;
|
|
// i2C Bus
|
|
#define PIN_WIRE_SDA D3
|
|
#define PIN_WIRE_SCL D4
|
|
|
|
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
|
|
Users users;
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(9600);
|
|
Serial.print("Starting");
|
|
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);
|
|
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
keyboard.scanAsync();
|
|
rfid.scan();
|
|
std::vector<Users::User> logon_users;
|
|
if (iface.pinAvailable() && !users.checkPin(iface.getPin(), &logon_users))
|
|
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);
|
|
logon_users.clear();
|
|
}
|
|
iface.render();
|
|
} |