Updated code
This commit is contained in:
parent
b6ad9c455b
commit
fdf825ef02
@ -83,7 +83,7 @@ bool lock_disable = false;
|
|||||||
#define RFID_START_BYTE 0x02 // start byte
|
#define RFID_START_BYTE 0x02 // start byte
|
||||||
#define RFID_STOP_BYTE 0x03 // stop byte
|
#define RFID_STOP_BYTE 0x03 // stop byte
|
||||||
#define RFID_TAG_BYTES 10 // number of bytes in package that represent the tag
|
#define RFID_TAG_BYTES 10 // number of bytes in package that represent the tag
|
||||||
#define RFID_TAGS 5 // Number of tags to be supported to store in EEPROM
|
#define RFID_TAGS 10 // Number of tags to be supported to store in EEPROM
|
||||||
#define EEPROM_CURRENT_TAG_ADDRESS 0 // Addres for storing current address in the tag memory
|
#define EEPROM_CURRENT_TAG_ADDRESS 0 // Addres for storing current address in the tag memory
|
||||||
#define EEPROM_TAG_START_ADDRESS 1 // Start addres for storing RFID tags
|
#define EEPROM_TAG_START_ADDRESS 1 // Start addres for storing RFID tags
|
||||||
int rfid_current_checksum = 0;
|
int rfid_current_checksum = 0;
|
||||||
@ -105,6 +105,17 @@ ZUNO_SETUP_CHANNELS(
|
|||||||
ZUNO_SENSOR_BINARY_DOOR_WINDOW(getterDoor)
|
ZUNO_SENSOR_BINARY_DOOR_WINDOW(getterDoor)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
void load_rfid_keys() {
|
||||||
|
int address = EEPROM_TAG_START_ADDRESS;
|
||||||
|
for (int i = 0; i < RFID_TAGS; i++) {
|
||||||
|
for (int j = 0; j < RFID_TAG_BYTES; j++) {
|
||||||
|
rfid_tags[i][j] = EEPROM.read(address);
|
||||||
|
address++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CONSOLE_SERIAL.println("RFID tags loaded from EEPROM");
|
||||||
|
}
|
||||||
|
|
||||||
void update_rfid() {
|
void update_rfid() {
|
||||||
int rfid_read = 0;
|
int rfid_read = 0;
|
||||||
if (RFID_SERIAL.available()) {
|
if (RFID_SERIAL.available()) {
|
||||||
@ -118,9 +129,10 @@ void update_rfid() {
|
|||||||
// Check for package end
|
// Check for package end
|
||||||
if (rfid_read == RFID_STOP_BYTE) {
|
if (rfid_read == RFID_STOP_BYTE) {
|
||||||
if (rfid_store_tag) {
|
if (rfid_store_tag) {
|
||||||
int rfid_eeprom_pos = rfid_store_tag_nbr * RFID_TAG_BYTES;
|
int rfid_eeprom_pos = rfid_store_tag_nbr-1 * RFID_TAG_BYTES;
|
||||||
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
||||||
EEPROM.write(rfid_eeprom_pos, rfid_package[i + 1]);
|
EEPROM.write(rfid_eeprom_pos, rfid_package[i + 1]);
|
||||||
|
rfid_tags[rfid_store_tag_nbr-1][i] = rfid_package[i + 1];
|
||||||
rfid_eeprom_pos++;
|
rfid_eeprom_pos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,10 +152,10 @@ void update_rfid() {
|
|||||||
if (tag_ok == true) {
|
if (tag_ok == true) {
|
||||||
CONSOLE_SERIAL.println("RFID tag verified");
|
CONSOLE_SERIAL.println("RFID tag verified");
|
||||||
if (sensor_door_locked){
|
if (sensor_door_locked){
|
||||||
set_servo(SERVO_UNLOCK, i+1);
|
set_servo(SERVO_UNLOCK, SOURCE_RFID);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
set_servo(SERVO_LOCK, i+1);
|
set_servo(SERVO_LOCK, SOURCE_RFID);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -309,11 +321,12 @@ void setup() {
|
|||||||
|
|
||||||
pinMode(SERVO_ENABLE_PIN, OUTPUT); // setup pin as output
|
pinMode(SERVO_ENABLE_PIN, OUTPUT); // setup pin as output
|
||||||
digitalWrite(SERVO_ENABLE_PIN, LOW);
|
digitalWrite(SERVO_ENABLE_PIN, LOW);
|
||||||
|
|
||||||
set_servo(SERVO_CENTER, SOURCE_SYSTEM);
|
|
||||||
|
|
||||||
CONSOLE_SERIAL.begin(9600);
|
CONSOLE_SERIAL.begin(9600);
|
||||||
RFID_SERIAL.begin(9600);
|
RFID_SERIAL.begin(9600);
|
||||||
|
|
||||||
|
load_rfid_keys();
|
||||||
|
set_servo(SERVO_CENTER, SOURCE_SYSTEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
// the loop routine runs over and over again forever:
|
// the loop routine runs over and over again forever:
|
||||||
@ -327,7 +340,7 @@ void loop() {
|
|||||||
// Check button status
|
// Check button status
|
||||||
if (btn_lock == true){
|
if (btn_lock == true){
|
||||||
if (rfid_store_tag_nbr > 0 && rfid_store_tag == false){
|
if (rfid_store_tag_nbr > 0 && rfid_store_tag == false){
|
||||||
int rfid_eeprom_pos = rfid_store_tag_nbr * RFID_TAG_BYTES;
|
int rfid_eeprom_pos = rfid_store_tag_nbr-1 * RFID_TAG_BYTES;
|
||||||
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
||||||
EEPROM.write(rfid_eeprom_pos,0xFF);
|
EEPROM.write(rfid_eeprom_pos,0xFF);
|
||||||
rfid_eeprom_pos++;
|
rfid_eeprom_pos++;
|
||||||
@ -366,7 +379,7 @@ void loop() {
|
|||||||
// Check if sensor changed and report to Z-Wave
|
// Check if sensor changed and report to Z-Wave
|
||||||
if (sensor_door_closed_changed){
|
if (sensor_door_closed_changed){
|
||||||
sensor_door_closed_changed = false;
|
sensor_door_closed_changed = false;
|
||||||
zunoSendReport(8);
|
zunoSendReport(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if servo needs to be centered or turned off
|
// Check if servo needs to be centered or turned off
|
||||||
@ -495,20 +508,11 @@ void setterLockDisable(byte value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
byte getterLockDisable(void) {
|
byte getterLockDisable(void) {
|
||||||
if (lock_disable || sensor_not_home_activated){
|
return lock_disable;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
byte getterDoor(void) {
|
|
||||||
return sensor_door_closed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void setterStoreRFID(byte value) {
|
void setterStoreRFID(byte value) {
|
||||||
if (rfid_store_tag_nbr == 0 && value > 0){
|
if (rfid_store_tag_nbr == 0 && value > 0 && value < RFID_TAGS + 1){
|
||||||
rfid_store_tag_nbr = value;
|
rfid_store_tag_nbr = value;
|
||||||
rfid_timeout_timestamp = current_timestamp + 30000;
|
rfid_timeout_timestamp = current_timestamp + 30000;
|
||||||
}
|
}
|
||||||
@ -522,4 +526,7 @@ byte getterStoreRFID(void) {
|
|||||||
return rfid_store_tag_nbr;
|
return rfid_store_tag_nbr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
byte getterDoor(void) {
|
||||||
|
return sensor_door_closed;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user