Delete main.cpp
This commit is contained in:
115
main.cpp
115
main.cpp
@@ -1,115 +0,0 @@
|
|||||||
#include <Arduino.h>
|
|
||||||
#include <SPI.h>
|
|
||||||
#include <MFRC522.h>
|
|
||||||
#include <WiFi.h>
|
|
||||||
#include <HTTPClient.h>
|
|
||||||
#include <Preferences.h> // Biblioteka do pamięci nieulotnej
|
|
||||||
|
|
||||||
// --- KONFIGURACJA ---
|
|
||||||
const char* ssid = "TWOJA_NAZWA_WIFI";
|
|
||||||
const char* password = "TWOJE_HASLO_WIFI";
|
|
||||||
const String serverUrl = "http://twoja-domena.pl/check_access.php";
|
|
||||||
const String apiKey = "MojeTajneHaslo123";
|
|
||||||
|
|
||||||
#define RST_PIN 22
|
|
||||||
#define SS_PIN 5
|
|
||||||
#define RELAY_PIN 2
|
|
||||||
#define CACHE_SIZE 10 // Liczba zapamiętanych kart
|
|
||||||
|
|
||||||
MFRC522 mfrc522(SS_PIN, RST_PIN);
|
|
||||||
Preferences preferences;
|
|
||||||
|
|
||||||
// Funkcja sprawdzająca, czy UID jest w lokalnej pamięci
|
|
||||||
bool checkLocalCache(String uid) {
|
|
||||||
preferences.begin("access-cache", true); // Tryb tylko do odczytu
|
|
||||||
for (int i = 0; i < CACHE_SIZE; i++) {
|
|
||||||
String key = "uid" + String(i);
|
|
||||||
if (preferences.getString(key.c_str(), "") == uid) {
|
|
||||||
preferences.end();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
preferences.end();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Funkcja dodająca UID do pamięci (zastępuje najstarszy wpis - Round Robin)
|
|
||||||
void addToCache(String uid) {
|
|
||||||
preferences.begin("access-cache", false);
|
|
||||||
int nextIndex = preferences.getInt("nextIdx", 0);
|
|
||||||
|
|
||||||
String key = "uid" + String(nextIndex);
|
|
||||||
preferences.putString(key.c_str(), uid);
|
|
||||||
|
|
||||||
// Inkrementacja indeksu (0-9)
|
|
||||||
nextIndex = (nextIndex + 1) % CACHE_SIZE;
|
|
||||||
preferences.putInt("nextIdx", nextIndex);
|
|
||||||
|
|
||||||
preferences.end();
|
|
||||||
Serial.println("Dodano kartę do lokalnej pamięci cache.");
|
|
||||||
}
|
|
||||||
|
|
||||||
void openGate() {
|
|
||||||
Serial.println(">>> DOSTĘP PRZYZNANY - OTWIERAM BRAMĘ <<<");
|
|
||||||
digitalWrite(RELAY_PIN, LOW);
|
|
||||||
delay(2000);
|
|
||||||
digitalWrite(RELAY_PIN, HIGH);
|
|
||||||
}
|
|
||||||
|
|
||||||
void setup() {
|
|
||||||
Serial.begin(115200);
|
|
||||||
SPI.begin();
|
|
||||||
mfrc522.PCD_Init();
|
|
||||||
pinMode(RELAY_PIN, OUTPUT);
|
|
||||||
digitalWrite(RELAY_PIN, HIGH);
|
|
||||||
|
|
||||||
WiFi.begin(ssid, password);
|
|
||||||
Serial.print("Łączenie z WiFi");
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop() {
|
|
||||||
// 1. Wykrywanie karty
|
|
||||||
if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) return;
|
|
||||||
|
|
||||||
String uid = "";
|
|
||||||
for (byte i = 0; i < mfrc522.uid.size; i++) {
|
|
||||||
uid += String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
|
|
||||||
uid += String(mfrc522.uid.uidByte[i], HEX);
|
|
||||||
}
|
|
||||||
uid.toUpperCase();
|
|
||||||
Serial.println("\nZczytano UID: " + uid);
|
|
||||||
|
|
||||||
// 2. Próba weryfikacji ONLINE
|
|
||||||
if (WiFi.status() == WL_CONNECTED) {
|
|
||||||
HTTPClient http;
|
|
||||||
String url = serverUrl + "?uid=" + uid + "&key=" + apiKey;
|
|
||||||
http.begin(url);
|
|
||||||
int httpCode = http.GET();
|
|
||||||
|
|
||||||
if (httpCode > 0) {
|
|
||||||
String payload = http.getString();
|
|
||||||
if (payload == "ALLOW") {
|
|
||||||
addToCache(uid); // Aktualizacja cache przy każdym sukcesie online
|
|
||||||
openGate();
|
|
||||||
} else {
|
|
||||||
Serial.println("Dostęp zabroniony (Serwer)");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Błąd połączenia z serwerem, przejdź do trybu OFFLINE
|
|
||||||
Serial.println("Błąd serwera. Próba autoryzacji OFFLINE...");
|
|
||||||
if (checkLocalCache(uid)) openGate();
|
|
||||||
else Serial.println("Brak karty w pamięci lokalnej.");
|
|
||||||
}
|
|
||||||
http.end();
|
|
||||||
}
|
|
||||||
// 3. Brak WiFi - Tryb OFFLINE
|
|
||||||
else {
|
|
||||||
Serial.println("Brak WiFi! Próba autoryzacji OFFLINE...");
|
|
||||||
if (checkLocalCache(uid)) openGate();
|
|
||||||
else Serial.println("Odmowa: Karta nieznana w trybie offline.");
|
|
||||||
}
|
|
||||||
|
|
||||||
mfrc522.PICC_HaltA();
|
|
||||||
delay(1500);
|
|
||||||
}
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user