final changes to wiegand support

This commit is contained in:
Guillermo Marcel 2025-06-09 13:21:14 -03:00
parent 96cb916c5a
commit 13b3b140b8
5 changed files with 87 additions and 19 deletions

View File

@ -52,7 +52,7 @@ public:
return initialized; return initialized;
} }
void HandleCard(){ void HandleReader(){
if(!initialized){ if(!initialized){
return; return;
} }

View File

@ -11,7 +11,8 @@ private:
AlarmStatus *status; AlarmStatus *status;
long lastUpdate; long lastUpdate;
// WiFiClient wifiClient; // WiFiClient wifiClient;
CardReader *_cardReader; // CardReader *_cardReader;
WiegandReader *_cardReader;
const String AUTHORIZED_ENTRANCE = "AUTHORIZE_ENTRANCE"; const String AUTHORIZED_ENTRANCE = "AUTHORIZE_ENTRANCE";
const String ServerAddress = "alarm.int.francelsoft.com"; const String ServerAddress = "alarm.int.francelsoft.com";
@ -258,7 +259,7 @@ private:
public: public:
ServerConnector(AlarmStatus *statusObj, CardReader *cardReader) ServerConnector(AlarmStatus *statusObj, WiegandReader *cardReader)
{ {
status = statusObj; status = statusObj;
running = false; running = false;

View File

@ -1,23 +1,40 @@
#include "alarm.h" #include "alarm.h"
#include "Dict.h" #include "Dict.h"
#include "Times.h"
#include <Wiegand.h> #include <Wiegand.h>
#define LED_PIN 6
#define BEEP_PIN 7
class WiegandReader{ class WiegandReader{
private: private:
WIEGAND wg; WIEGAND wg;
AlarmStatus* status; AlarmStatus* status;
int data0_pin; int data0_pin;
int data1_pin; int data1_pin;
int led_pin; int led_pin =0;
int beep_pin; int beep_pin =0;
Dictionary &users = *(new Dictionary()); Dictionary &users = *(new Dictionary());
unsigned long errorTime;
bool beeping = false;
void turnLedGreen(){
digitalWrite(led_pin, LOW);
}
void turnLedRed(){
digitalWrite(led_pin, HIGH);
}
void beepOn()
{
beeping=true;
digitalWrite(beep_pin, LOW);
}
void beepOff()
{
beeping=false;
digitalWrite(beep_pin, HIGH);
}
public: public:
WiegandReader(AlarmStatus* statusObj, int d0, int d1){ WiegandReader(AlarmStatus* statusObj, int d0, int d1){
Serial.println("const.");
status = statusObj; status = statusObj;
data0_pin = d0; data0_pin = d0;
data1_pin = d1; data1_pin = d1;
@ -27,23 +44,62 @@ public:
wg.begin(data0_pin, data1_pin); wg.begin(data0_pin, data1_pin);
} }
void AddUser(String id, String name){
users(id, name);
}
void SetLed(int pin) void SetLed(int pin)
{ {
led_pin=pin; led_pin=pin;
pinMode(led_pin, OUTPUT);
digitalWrite(led_pin, HIGH);
} }
void SetBeep(int pin) void SetBeep(int pin)
{ {
beep_pin=pin beep_pin=pin;
pinMode(beep_pin, OUTPUT);
digitalWrite(beep_pin, HIGH);
} }
void HandleReader() void HandleReader()
{ {
if(beeping)
{
if(millis() > errorTime + FromSeconds(1))
{
beepOff();
}
return;
}
if(!status->isArmed)
{
turnLedGreen();
}else
{
turnLedRed();
}
if(!wg.available()) if(!wg.available())
{ {
return; return;
} }
String code = String(wg.getCode(), HEX); String uidString = String(wg.getCode());
Serial.print("[Card Reader] ");Serial.println(uidString);
for (int i = 0; i < users.count(); i++) {
if(users(i) == uidString){
status->allowed=true;
status->userAllowed=users[i];
return;
}
}
Serial.println("[Card Reader] access not granted");
status->showError =true;
errorTime = millis();
beepOn();
} }
}
};

View File

@ -4,6 +4,7 @@
AlarmStatus* status; AlarmStatus* status;
class DoorSensor { class DoorSensor {
private: private:
int DOOR_SENSOR_PIN = 14; int DOOR_SENSOR_PIN = 14;
AlarmStatus* status; AlarmStatus* status;

View File

@ -6,6 +6,7 @@
#include "LedController.h" #include "LedController.h"
#include "Siren.h" #include "Siren.h"
#include "CardReader.h" #include "CardReader.h"
#include "WiegandReader.h"
#include "soc/rtc_wdt.h" #include "soc/rtc_wdt.h"
//#include <rtc_wdt.h> //#include <rtc_wdt.h>
#include <WiFi.h> #include <WiFi.h>
@ -13,6 +14,7 @@
// #include <WiFiClientSecure.h> // #include <WiFiClientSecure.h>
// #include "FrancelsoftCert.h" // #include "FrancelsoftCert.h"
#include "Times.h" #include "Times.h"
// #include <Dictionary.h> // #include <Dictionary.h>
@ -20,7 +22,8 @@ AlarmStatus s;
DoorSensor doorSensor(&s); DoorSensor doorSensor(&s);
LedController led(&s); LedController led(&s);
Siren siren(&s); Siren siren(&s);
CardReader cardReader(&s); // CardReader cardReader(&s);
WiegandReader cardReader(&s, 18, 19);
ServerConnector serverConnector(&s, &cardReader); ServerConnector serverConnector(&s, &cardReader);
const int SILENCE_JMP_PIN = 12; const int SILENCE_JMP_PIN = 12;
@ -46,6 +49,9 @@ void setup()
doorSensor.Init(); doorSensor.Init();
led.Init(); led.Init();
siren.Init(); siren.Init();
cardReader.SetLed(5);
cardReader.SetBeep(23);
cardReader.Init(); cardReader.Init();
pinMode(SILENCE_JMP_PIN, INPUT_PULLUP); pinMode(SILENCE_JMP_PIN, INPUT_PULLUP);
@ -73,6 +79,9 @@ void addUsers(){
cardReader.AddUser("0438768a2c6a80", "pin verizure"); cardReader.AddUser("0438768a2c6a80", "pin verizure");
cardReader.AddUser("23141f2d", "pin azul"); cardReader.AddUser("23141f2d", "pin azul");
cardReader.AddUser("91cf3e02", "card access"); cardReader.AddUser("91cf3e02", "card access");
cardReader.AddUser("2911999", "nuevo pin 1");
cardReader.AddUser("2648564", "nuevo pin 2");
} }
void loop() void loop()
@ -82,11 +91,12 @@ void loop()
doorSensor.HandleDoor(); doorSensor.HandleDoor();
if(cardReader.IsInit()){ // if(cardReader.IsInit()){
cardReader.HandleCard(); // cardReader.HandleReader();
}else{ // }else{
cardReader.Init(); // cardReader.Init();
} // }
cardReader.HandleReader();
if(s.allowed){ if(s.allowed){
HandleUserPresent(); HandleUserPresent();