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;
}
void HandleCard(){
void HandleReader(){
if(!initialized){
return;
}

View File

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

View File

@ -1,23 +1,40 @@
#include "alarm.h"
#include "Dict.h"
#include "Times.h"
#include <Wiegand.h>
#define LED_PIN 6
#define BEEP_PIN 7
class WiegandReader{
private:
WIEGAND wg;
AlarmStatus* status;
int data0_pin;
int data1_pin;
int led_pin;
int beep_pin;
int led_pin =0;
int beep_pin =0;
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:
WiegandReader(AlarmStatus* statusObj, int d0, int d1){
Serial.println("const.");
status = statusObj;
data0_pin = d0;
data1_pin = d1;
@ -27,23 +44,62 @@ public:
wg.begin(data0_pin, data1_pin);
}
void AddUser(String id, String name){
users(id, name);
}
void SetLed(int pin)
{
led_pin=pin;
pinMode(led_pin, OUTPUT);
digitalWrite(led_pin, HIGH);
}
void SetBeep(int pin)
{
beep_pin=pin
beep_pin=pin;
pinMode(beep_pin, OUTPUT);
digitalWrite(beep_pin, HIGH);
}
void HandleReader()
{
if(beeping)
{
if(millis() > errorTime + FromSeconds(1))
{
beepOff();
}
return;
}
if(!status->isArmed)
{
turnLedGreen();
}else
{
turnLedRed();
}
if(!wg.available())
{
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;
class DoorSensor {
private:
int DOOR_SENSOR_PIN = 14;
AlarmStatus* status;

View File

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