Updated code

This commit is contained in:
Christoffer Martinsson 2018-02-19 16:21:49 +01:00
parent b6ad9c455b
commit fdf825ef02

View File

@ -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;
}