Updated code
This commit is contained in:
parent
4e7e685b84
commit
b6ad9c455b
218
zuno/zuno.ino
218
zuno/zuno.ino
@ -23,14 +23,10 @@ const int LED_UNLOCK_PIN = 6;
|
||||
#define SERVO_CENTER 3
|
||||
|
||||
#define SOURCE_EXTERNAL 0
|
||||
#define SOURCE_RFID_1 1
|
||||
#define SOURCE_RFID_2 2
|
||||
#define SOURCE_RFID_3 3
|
||||
#define SOURCE_RFID_4 4
|
||||
#define SOURCE_RFID_5 5
|
||||
#define SOURCE_ZWAVE 6
|
||||
#define SOURCE_BUTTONS 7
|
||||
#define SOURCE_SYSTEM 8
|
||||
#define SOURCE_RFID 1
|
||||
#define SOURCE_ZWAVE 2
|
||||
#define SOURCE_BUTTONS 3
|
||||
#define SOURCE_SYSTEM 4
|
||||
|
||||
#define SERVO_TRIM 2
|
||||
|
||||
@ -94,13 +90,8 @@ int rfid_current_checksum = 0;
|
||||
int rfid_package[RFID_PACKAGE_LENGHT];
|
||||
int rfid_package_pos = 0;
|
||||
int rfid_tags[RFID_TAGS][RFID_TAG_BYTES];
|
||||
bool rfid_store_tag = false;
|
||||
int rfid_store_tag_nbr = 0;
|
||||
bool rfid_tag_1 = false;
|
||||
bool rfid_tag_2 = false;
|
||||
bool rfid_tag_3 = false;
|
||||
bool rfid_tag_4 = false;
|
||||
bool rfid_tag_5 = false;
|
||||
bool rfid_store_tag = false;
|
||||
|
||||
ServoController servo(12);
|
||||
|
||||
@ -110,17 +101,12 @@ ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_ALWAYS_AWAKE);
|
||||
ZUNO_SETUP_CHANNELS(
|
||||
ZUNO_SWITCH_BINARY(getterLock, setterLock),
|
||||
ZUNO_SWITCH_BINARY(getterLockDisable, setterLockDisable),
|
||||
ZUNO_SWITCH_BINARY(getterRfidTag1, setterRfidTag1),
|
||||
ZUNO_SWITCH_BINARY(getterRfidTag2, setterRfidTag2),
|
||||
ZUNO_SWITCH_BINARY(getterRfidTag3, setterRfidTag3),
|
||||
ZUNO_SWITCH_BINARY(getterRfidTag4, setterRfidTag4),
|
||||
ZUNO_SWITCH_BINARY(getterRfidTag5, setterRfidTag5),
|
||||
ZUNO_SWITCH_MULTILEVEL(getterStoreRFID, setterStoreRFID),
|
||||
ZUNO_SENSOR_BINARY_DOOR_WINDOW(getterDoor)
|
||||
);
|
||||
|
||||
void update_rfid() {
|
||||
int rfid_read = 0;
|
||||
// Pass through BMC -> LCD communication
|
||||
if (RFID_SERIAL.available()) {
|
||||
while (RFID_SERIAL.available() > 0) {
|
||||
rfid_read = RFID_SERIAL.read();
|
||||
@ -131,30 +117,16 @@ void update_rfid() {
|
||||
}
|
||||
// Check for package end
|
||||
if (rfid_read == RFID_STOP_BYTE) {
|
||||
if (rfid_store_tag == true) {
|
||||
if (rfid_store_tag) {
|
||||
int rfid_eeprom_pos = rfid_store_tag_nbr * RFID_TAG_BYTES;
|
||||
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
||||
EEPROM.write(rfid_eeprom_pos, rfid_package[i + 1]);
|
||||
rfid_eeprom_pos++;
|
||||
}
|
||||
|
||||
if (rfid_store_tag_nbr == 0){
|
||||
rfid_tag_1 = true;
|
||||
}
|
||||
else if (rfid_store_tag_nbr == 1){
|
||||
rfid_tag_2 = true;
|
||||
}
|
||||
else if (rfid_store_tag_nbr == 2){
|
||||
rfid_tag_3 = true;
|
||||
}
|
||||
else if (rfid_store_tag_nbr == 3){
|
||||
rfid_tag_4 = true;
|
||||
}
|
||||
else if (rfid_store_tag_nbr == 4){
|
||||
rfid_tag_5 = true;
|
||||
}
|
||||
|
||||
zunoSendReport(3 + rfid_store_tag_nbr);
|
||||
rfid_store_tag = false;
|
||||
rfid_store_tag_nbr = 0;
|
||||
zunoSendReport(3);
|
||||
|
||||
} else {
|
||||
// Check for match of RFID tag
|
||||
@ -354,13 +326,29 @@ void loop() {
|
||||
|
||||
// Check button status
|
||||
if (btn_lock == true){
|
||||
set_servo(SERVO_LOCK, SOURCE_BUTTONS);
|
||||
btn_lock = false;
|
||||
btn_unlock = false;
|
||||
if (rfid_store_tag_nbr > 0 && rfid_store_tag == false){
|
||||
int rfid_eeprom_pos = rfid_store_tag_nbr * RFID_TAG_BYTES;
|
||||
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
||||
EEPROM.write(rfid_eeprom_pos,0xFF);
|
||||
rfid_eeprom_pos++;
|
||||
}
|
||||
rfid_store_tag_nbr = 0;
|
||||
zunoSendReport(3);
|
||||
}
|
||||
else{
|
||||
set_servo(SERVO_LOCK, SOURCE_BUTTONS);
|
||||
btn_lock = false;
|
||||
btn_unlock = false;
|
||||
}
|
||||
}
|
||||
else if (btn_unlock == true){
|
||||
set_servo(SERVO_UNLOCK, SOURCE_BUTTONS);
|
||||
btn_unlock = false;
|
||||
if (rfid_store_tag_nbr > 0 && rfid_store_tag == false){
|
||||
rfid_store_tag = true;
|
||||
}
|
||||
else{
|
||||
set_servo(SERVO_UNLOCK, SOURCE_BUTTONS);
|
||||
btn_unlock = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Check if sensor changed and report to Z-Wave
|
||||
@ -393,28 +381,11 @@ void loop() {
|
||||
}
|
||||
|
||||
// Check if store RFID has timed out
|
||||
if (rfid_store_tag) {
|
||||
if (rfid_store_tag_nbr > 0) {
|
||||
if (current_timestamp >= rfid_timeout_timestamp) {
|
||||
|
||||
if (rfid_store_tag_nbr == 0){
|
||||
rfid_tag_1 = false;
|
||||
}
|
||||
else if (rfid_store_tag_nbr == 1){
|
||||
rfid_tag_2 = false;
|
||||
}
|
||||
else if (rfid_store_tag_nbr == 2){
|
||||
rfid_tag_3 = false;
|
||||
}
|
||||
else if (rfid_store_tag_nbr == 3){
|
||||
rfid_tag_4 = false;
|
||||
}
|
||||
else if (rfid_store_tag_nbr == 4){
|
||||
rfid_tag_5 = false;
|
||||
}
|
||||
|
||||
rfid_store_tag = false;
|
||||
zunoSendReport(3 + rfid_store_tag_nbr);
|
||||
|
||||
rfid_store_tag = false;
|
||||
rfid_store_tag_nbr = 0;
|
||||
zunoSendReport(3);
|
||||
}
|
||||
}
|
||||
|
||||
@ -451,8 +422,13 @@ void loop() {
|
||||
}
|
||||
}
|
||||
else if (servo_status == SERVO_DISABLE){
|
||||
// Indicate RFID storing mode
|
||||
if (rfid_store_tag_nbr > 0){
|
||||
digitalWrite(LED_LOCK_PIN, HIGH);
|
||||
digitalWrite(LED_UNLOCK_PIN, HIGH);
|
||||
}
|
||||
// Indicate that the lock/unlock is disabled
|
||||
if (sensor_not_home_activated == true || lock_disable == true){
|
||||
else if (sensor_not_home_activated == true || lock_disable == true){
|
||||
if (current_timestamp >= activity_timestamp) {
|
||||
if (activity_flash == 0){
|
||||
digitalWrite(LED_LOCK_PIN, HIGH);
|
||||
@ -531,113 +507,19 @@ byte getterDoor(void) {
|
||||
return sensor_door_closed;
|
||||
}
|
||||
|
||||
void setterRfidTag1(byte value) {
|
||||
if (value == 0){
|
||||
int rfid_eeprom_pos = 0 * RFID_TAG_BYTES;
|
||||
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
||||
EEPROM.write(rfid_eeprom_pos,0xFF);
|
||||
rfid_eeprom_pos++;
|
||||
}
|
||||
rfid_tag_1 = false;
|
||||
void setterStoreRFID(byte value) {
|
||||
if (rfid_store_tag_nbr == 0 && value > 0){
|
||||
rfid_store_tag_nbr = value;
|
||||
rfid_timeout_timestamp = current_timestamp + 30000;
|
||||
}
|
||||
else{
|
||||
if (rfid_store_tag == false){
|
||||
rfid_store_tag_nbr = 0;
|
||||
rfid_store_tag = true;
|
||||
rfid_timeout_timestamp = current_timestamp + 10000;
|
||||
}
|
||||
else if (value == 0){
|
||||
rfid_store_tag_nbr = 0;
|
||||
rfid_store_tag = false
|
||||
}
|
||||
}
|
||||
|
||||
byte getterRfidTag1(void) {
|
||||
return rfid_tag_1;
|
||||
byte getterStoreRFID(void) {
|
||||
return rfid_store_tag_nbr;
|
||||
}
|
||||
|
||||
void setterRfidTag2(byte value) {
|
||||
if (value == 0){
|
||||
int rfid_eeprom_pos = 1 * RFID_TAG_BYTES;
|
||||
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
||||
EEPROM.write(rfid_eeprom_pos,0xFF);
|
||||
rfid_eeprom_pos++;
|
||||
}
|
||||
rfid_tag_2 = false;
|
||||
}
|
||||
else{
|
||||
if (rfid_store_tag == false){
|
||||
rfid_store_tag_nbr = 1;
|
||||
rfid_store_tag = true;
|
||||
rfid_timeout_timestamp = current_timestamp + 10000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
byte getterRfidTag2(void) {
|
||||
return rfid_tag_2;
|
||||
}
|
||||
|
||||
void setterRfidTag3(byte value) {
|
||||
if (value == 0){
|
||||
int rfid_eeprom_pos = 2 * RFID_TAG_BYTES;
|
||||
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
||||
EEPROM.write(rfid_eeprom_pos,0xFF);
|
||||
rfid_eeprom_pos++;
|
||||
}
|
||||
rfid_tag_3 = false;
|
||||
}
|
||||
else{
|
||||
if (rfid_store_tag == false){
|
||||
rfid_store_tag_nbr = 2;
|
||||
rfid_store_tag = true;
|
||||
rfid_timeout_timestamp = current_timestamp + 10000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
byte getterRfidTag3(void) {
|
||||
return rfid_tag_3;
|
||||
}
|
||||
|
||||
void setterRfidTag4(byte value) {
|
||||
if (value == 0){
|
||||
int rfid_eeprom_pos = 3 * RFID_TAG_BYTES;
|
||||
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
||||
EEPROM.write(rfid_eeprom_pos,0xFF);
|
||||
rfid_eeprom_pos++;
|
||||
}
|
||||
rfid_tag_4 = false;
|
||||
}
|
||||
else{
|
||||
if (rfid_store_tag == false){
|
||||
rfid_store_tag_nbr = 3;
|
||||
rfid_store_tag = true;
|
||||
rfid_timeout_timestamp = current_timestamp + 10000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
byte getterRfidTag4(void) {
|
||||
return rfid_tag_4;
|
||||
}
|
||||
|
||||
void setterRfidTag5(byte value) {
|
||||
if (value == 0){
|
||||
int rfid_eeprom_pos = 4 * RFID_TAG_BYTES;
|
||||
for (int i = 0; i < RFID_TAG_BYTES; i++) {
|
||||
EEPROM.write(rfid_eeprom_pos,0xFF);
|
||||
rfid_eeprom_pos++;
|
||||
}
|
||||
rfid_tag_5 = false;
|
||||
}
|
||||
else{
|
||||
if (rfid_store_tag == false){
|
||||
rfid_store_tag_nbr = 4;
|
||||
rfid_store_tag = true;
|
||||
rfid_timeout_timestamp = current_timestamp + 10000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
byte getterRfidTag5(void) {
|
||||
return rfid_tag_5;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user