From 0d5d64752c60b389ba74f5ccd75ef75594a3fd63 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Mon, 23 Jan 2017 12:00:46 +0000 Subject: [PATCH] Updated wiegand doorlock system --- door_wiegand.ino | 388 +++++++++++++++++----- hardware/doorlock_v1.fzz | Bin 297086 -> 296906 bytes wiring_wiegand.svg | 838 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1141 insertions(+), 85 deletions(-) create mode 100644 wiring_wiegand.svg diff --git a/door_wiegand.ino b/door_wiegand.ino index 7843d0e..4364e54 100644 --- a/door_wiegand.ino +++ b/door_wiegand.ino @@ -1,6 +1,9 @@ +#include +#include #include #include #include +#include #include #include #include @@ -51,17 +54,93 @@ // files to store card/fob data in #define CARD_TMPFILE "/cards.tmp" #define CARD_FILE "/cards.dat" +#define LOG_FILE "/log.dat" // how long to hold the latch open in millis #define LATCH_HOLD 5000 +// webserver for configuration portnumber +#define CONFIG_PORT 80 + +// ntp server to use +#define NTP_SERVER "1.uk.pool.ntp.org" + /*************************** * code below */ WIEGAND wg; -ESP8266WebServer server(80); +ESP8266WebServer server(CONFIG_PORT); + +const unsigned int localPort = 2390; +IPAddress ntpServerIP; + +const int NTP_PACKET_SIZE = 48; // NTP time stamp is in the first 48 bytes of the message + +byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets + +WiFiUDP udp; + + +/* compose and send an NTP time request packet */ +void ntp_send() +{ + if (ntpServerIP == INADDR_NONE) { + WiFi.hostByName(NTP_SERVER, ntpServerIP); + Serial.print("Got NTP server " NTP_SERVER " address "); + Serial.println(ntpServerIP); + } + + + memset(packetBuffer, 0, NTP_PACKET_SIZE); + // Initialize values needed to form NTP request + // (see URL above for details on the packets) + packetBuffer[0] = 0b11100011; // LI, Version, Mode + packetBuffer[1] = 0; // Stratum, or type of clock + packetBuffer[2] = 6; // Polling Interval + packetBuffer[3] = 0xEC; // Peer Clock Precision + // 8 bytes of zero for Root Delay & Root Dispersion + packetBuffer[12] = 49; + packetBuffer[13] = 0x4E; + packetBuffer[14] = 49; + packetBuffer[15] = 52; + + // all NTP fields have been given values, now + // you can send a packet requesting a timestamp: + udp.beginPacket(ntpServerIP, 123); //NTP requests are to port 123 + udp.write(packetBuffer, NTP_PACKET_SIZE); + udp.endPacket(); + + Serial.println("Sending NTP request"); +} + +/* request a time update from NTP and parse the result */ +time_t ntp_fetch() +{ + while (udp.parsePacket() > 0); // discard old udp packets + ntp_send(); + uint32_t beginWait = millis(); + while (millis() - beginWait < 2500) { + int size = udp.parsePacket(); + if (size >= NTP_PACKET_SIZE) { + udp.read(packetBuffer, NTP_PACKET_SIZE); + + // this is NTP time (seconds since Jan 1 1900): + unsigned long secsSince1900 = packetBuffer[40] << 24 | packetBuffer[41] << 16 | packetBuffer[42] << 8 | packetBuffer[43]; + const unsigned long seventyYears = 2208988800UL; + time_t unixtime = secsSince1900 - seventyYears; + + Serial.print("NTP update unixtime="); + Serial.println(unixtime); + return unixtime; + } + } + Serial.println("No NTP response"); + return 0; +} + +/* how big is a file */ int fileSize(const char *filename) { int ret = -1; @@ -73,6 +152,8 @@ int fileSize(const char *filename) return ret; } + +/* HTTP page request for / */ void handleRoot() { char mtime[16]; @@ -92,7 +173,22 @@ void handleRoot() \ \

Door Lock!

\ -

Uptime: " + (String)mtime + "

"; +

Uptime: " + (String)mtime + "

\n"; + + if (timeStatus() == timeSet) { + time_t when = now(); + out += "

Time now: " + getDate(when) + " " + getTime(when) + "

\n"; + } + + + FSInfo fs_info; + if (SPIFFS.info(fs_info)) { + out += "

Onboard Flash disk: - Size:"+String(fs_info.totalBytes)+" Used:"+String(fs_info.usedBytes)+"

\n"; + } + + out += "

Lock is currently "; + if (digitalRead(SENSE) == HIGH) out += "LOCKED"; else out += "OPEN"; + out += "

\n"; if (SPIFFS.exists(CARD_FILE)) { @@ -112,16 +208,18 @@ void handleRoot()
  • Reset Configuration\
  • Upload Cardlist"; - FSInfo fs_info; - if (SPIFFS.info(fs_info)) { - out += "
  • Format SPIFFS - Size:"+String(fs_info.totalBytes)+" Used:"+String(fs_info.usedBytes); + + if (SPIFFS.exists(LOG_FILE)) { + out += "
  • Wipe log file"; + out += "
  • Download full logfile"; } - - out += "
  • Lock is currently "; - if (digitalRead(SENSE) == HIGH) out += "LOCKED"; else out += "OPEN"; + - out += "\ - \ + out += ""; + + if (SPIFFS.exists(LOG_FILE)) out += printLog(true, 10); + + out += "\ "; server.send( 200, "text/html", out); @@ -142,6 +240,24 @@ void handleDownload() f.close(); } +void handleWipelog() +{ + if (!server.authenticate(www_username, www_password)) + return server.requestAuthentication(); + + SPIFFS.remove(LOG_FILE); + server.send(200, "text/plain", "logfile deleted"); +} + +void handleDownloadLogfile() +{ + if (!server.authenticate(www_username, www_password)) + return server.requestAuthentication(); + + String result = printLog(false, 0); + server.send(200, "text/csv", result); +} + void handleNotFound() { String out = "File Not found\n\n"; server.send(404, "text/plain", out); @@ -220,6 +336,7 @@ void handleUploadComplete() SPIFFS.remove(CARD_FILE); SPIFFS.rename(CARD_TMPFILE, CARD_FILE); } + out += "

    Back"; server.send(upload_code, "text/plain", out); } @@ -228,82 +345,32 @@ void returnOK() { server.send(200, "text/plain", ""); } - -static InputDebounce release_button; - -void setup() { - // some serial, for debug - Serial.begin(115200); - - // The lock mechanism, set HIGH to turn on and connect ground to output pin - pinMode(MOSFET, OUTPUT); - digitalWrite(MOSFET, LOCK_CLOSE); - - // lock sense microswitch - pinMode(SENSE, INPUT_PULLUP); - - // emergency door release switch - pinMode(ERELEASE, INPUT); - - // indicators on the keyfob reader - pinMode(BUZZER, OUTPUT); - pinMode(DOORLED, OUTPUT); - digitalWrite(BUZZER, BUZZ_OFF); - digitalWrite(DOORLED, DLED_RED); - - Serial.println("DoorLock. Testing WiFi config..."); - - // if we have no config, enter config mode - WiFiManager wfm; - wfm.autoConnect(MANAGER_AP); - - // we have config, enable web server - server.on( "/", handleRoot ); - server.on( "/reset", handleReset ); - server.onFileUpload( handleFileUpload); - server.on( "/upload", HTTP_GET, handleUploadRequest); - server.on( "/upload", HTTP_POST, handleUploadComplete); - server.on( "/download", handleDownload ); - server.onNotFound( handleNotFound ); - server.begin(); - - // advertise we exist via MDNS - if (!MDNS.begin("doorlock")) { - Serial.println("Error setting up MDNS responder."); - } else { - MDNS.addService("http", "tcp", 80); - } - - // enable internal flash filesystem - SPIFFS.begin(); - - // init wiegand keyfob reader - Serial.println("Starting Wiegand test reader"); - wg.begin(WD0, WD0, WD1, WD1); - - // setup button debounce for the release switch - release_button.setup(ERELEASE, 20, InputDebounce::PIM_EXT_PULL_DOWN_RES); +String getTime(time_t when) +{ + String ans; + int h = hour(when); + int m = minute(when); + int s = second(when); + + if (h<10) ans += "0"; + ans += String(h) + ":"; + if (m<10) ans += "0"; + ans += String(m) + ":"; + if (s<10) ans += "0"; + ans += String(s); + + return ans; } -unsigned long locktime = 0; - - -void unlock_door() +String getDate(time_t when) { - digitalWrite(DOORLED, DLED_GREEN); - digitalWrite(MOSFET, LOCK_OPEN); - if (locktime == 0) { - digitalWrite(BUZZER, BUZZ_ON); - delay(100); - digitalWrite(BUZZER, BUZZ_OFF); - delay(50); - digitalWrite(BUZZER, BUZZ_ON); - delay(100); - digitalWrite(BUZZER, BUZZ_OFF); - } - locktime = millis(); + String ans; + + ans += String(year(when)) + "-" + String(month(when)) + "-" + String(day(when)); + return ans; } + int sanityCheck(const char * filename) { int count = 0; @@ -375,12 +442,161 @@ String findKeyfob(unsigned int code) return answer; } -void loop() { - unsigned long now = millis(); +void logEntry(time_t when, uint32_t card) +{ + unsigned char entry[8]; + + File f = SPIFFS.open(LOG_FILE, "a"); + if (!f) { + Serial.println("Error opening log file"); + return; + } + + // compose the record to write + ((uint32_t *)entry)[0] = when; + ((uint32_t *)entry)[1] = card; + f.write(entry, 8); + f.close(); +} + +String printLog(int html, int last) +{ + String out; + File f = SPIFFS.open(LOG_FILE, "r"); + if (!f) return String("Could not open log file"); + + unsigned char entry[8]; + uint32_t * data = (uint32_t *)entry; + + if (last != 0) { + // print only the last N items + int pos = f.size() / 8; + if (pos > last) pos -= last; else pos = 0; + f.seek( pos * 8, SeekSet); + if (html) out += "Last " + String(last) + " log entries :-"; + } + if (html) out += "
      "; + + while (f.available()) { + f.read(entry, 8); + if (html) out += "
    • "; + out += getDate( data[0] ); + out += " "; + out += getTime( data[0] ); + if (html) out += " - "; else out += "," + String(data[1]) + ","; + + if (data[1] == 0) { + if (html) out += ""; + out += "Emergency Release"; + if (html) out += ""; + } else { + String whom = findKeyfob(data[1]); + if (whom == "") { + if (html) out += "by "; + out += "Unknown keyfob"; + if (html) out += ""; + } else { + out += whom; + } + if (html) out += " (" + String(data[1]) + ")"; + } + out += "\n"; + } + f.close(); + if (html) out += "
    "; + return out; +} + + +static InputDebounce release_button; + +/******************************************** + * Main setup routine + */ +void setup() { + // some serial, for debug + Serial.begin(115200); + + // The lock mechanism, set HIGH to turn on and connect ground to output pin + pinMode(MOSFET, OUTPUT); + digitalWrite(MOSFET, LOCK_CLOSE); + + // lock sense microswitch + pinMode(SENSE, INPUT_PULLUP); + + // emergency door release switch + pinMode(ERELEASE, INPUT); + + // indicators on the keyfob reader + pinMode(BUZZER, OUTPUT); + pinMode(DOORLED, OUTPUT); + digitalWrite(BUZZER, BUZZ_OFF); + digitalWrite(DOORLED, DLED_RED); + Serial.println("DoorLock. Testing WiFi config..."); + + // if we have no config, enter config mode + WiFiManager wfm; + wfm.autoConnect(MANAGER_AP); + + // we have config, enable web server + server.on( "/", handleRoot ); + server.on( "/reset", handleReset ); + server.on( "/download", handleDownload ); + server.on( "/wipelog", handleWipelog ); + server.on( "/download_logfile", handleDownloadLogfile ); + server.onFileUpload( handleFileUpload); + server.on( "/upload", HTTP_GET, handleUploadRequest); + server.on( "/upload", HTTP_POST, handleUploadComplete); + server.onNotFound( handleNotFound ); + server.begin(); + + // advertise we exist via MDNS + if (!MDNS.begin("doorlock")) { + Serial.println("Error setting up MDNS responder."); + } else { + MDNS.addService("http", "tcp", 80); + } + + // enable internal flash filesystem + SPIFFS.begin(); + + // init wiegand keyfob reader + Serial.println("Starting Wiegand test reader"); + wg.begin(WD0, WD0, WD1, WD1); + + // setup button debounce for the release switch + release_button.setup(ERELEASE, 20, InputDebounce::PIM_EXT_PULL_DOWN_RES); + + // listener port for replies from NTP + udp.begin(localPort); + setSyncProvider(ntp_fetch); +} + +unsigned long locktime = 0; + + +void unlock_door() +{ + digitalWrite(DOORLED, DLED_GREEN); + digitalWrite(MOSFET, LOCK_OPEN); + if (locktime == 0) { + digitalWrite(BUZZER, BUZZ_ON); + delay(100); + digitalWrite(BUZZER, BUZZ_OFF); + delay(50); + digitalWrite(BUZZER, BUZZ_ON); + delay(100); + digitalWrite(BUZZER, BUZZ_OFF); + } + locktime = millis(); +} + + +void loop() { // is the latch held open ? if (locktime != 0) { - if (locktime + LATCH_HOLD < now) { + if (locktime + LATCH_HOLD < millis()) { locktime = 0; digitalWrite(MOSFET, LOCK_CLOSE); digitalWrite(DOORLED, DLED_RED); @@ -389,7 +605,7 @@ void loop() { // handle web requests server.handleClient(); - unsigned int ertime = release_button.process(now); + unsigned int ertime = release_button.process(millis()); unsigned int count = release_button.getStateOnCount(); static unsigned last_count = 0; if (ertime > 0) { @@ -397,6 +613,7 @@ void loop() { last_count = count; Serial.println("Door Release button triggered."); unlock_door(); + logEntry(now(), 0); } else { // buttons is still pressed, do nothing } @@ -418,6 +635,7 @@ void loop() { Serial.print("Unlocking door for "); Serial.println(who); unlock_door(); + logEntry(now(), code); } } diff --git a/hardware/doorlock_v1.fzz b/hardware/doorlock_v1.fzz index 66e94bd7f1275bdfc5f614dbf336b36cec99bd32..c87bd5df8066690f218ee60b901be6594da37d3d 100644 GIT binary patch delta 32431 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 delta 32538 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 e3a_9F|NBj + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Programming/Debug Port + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Door Release + + + Gnd + + + + + + + + + + + + + Yellow: Beep + + 2 + 1 + 3 + 4 + 5 + 6 + + Blue: LED + + Green: D0 + 7 + 8 + + white: D1 + +  +  + 12v d.c. + + + + + + 12v IN + 3.3v Out + + + Red: 12v + + Black: ground + + Yellow: NC + + Green: NO + + Orange: COM + + Red: 12v + + Black: Gnd + + NO COM NC + Hackspace Door wiring v1: Jan 2017 + + -- 1.8.3.1