How to Update the google spreadsheet in iot based biometric attendence system.
using components
1.esp
2.fingersensor(r305)
3.lcd (i2c)
and pushing box data hosting for sending data from finger sensor to sheet
my question is that how i update the sheet on the daily basis automaticlly. like sheet for day 1 sheet for day 2......further
#include <Adafruit_Fingerprint.h>
#include <ESP8266WiFi.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
SoftwareSerial mySerial(D3, D4);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
const char* ssid = "Home"; //replace with your own SSID
const char* password = "Khan6232"; //replace with your own password
const char* host = "api.pushingbox.com";
String member = "";
int flag = 0;
void setup()
{
lcd.begin(16, 2);
lcd.init();
lcd.backlight();
lcd.setCursor(4, 0);
lcd.print("WELCOMEinBIIT");
delay(2000);
lcd.clear();
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
lcd.setCursor(0, 0);
Serial.print("Connecting to WiFi... ");
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
lcd.setCursor(0, 0);
lcd.print("WiFi connected ");
lcd.setCursor(0, 1);
lcd.print("IP:");
lcd.setCursor(4, 1);
lcd.print(WiFi.localIP());
delay(1500);
while (!Serial);
delay(100);
Serial.println("\n\n Waiting for Fingerprint Sensor");
lcd.setCursor(0, 0);
lcd.print(" Waiting for ");
lcd.setCursor(0, 1);
lcd.print(" Sensor ");
delay(1500);
finger.begin(57600);
if (finger.verifyPassword())
{
Serial.println("Found Successfully");
lcd.setCursor(0, 0);
lcd.print("Sensor found! ");
lcd.setCursor(0, 1);
lcd.print(" ");
delay(1500);
} else
{
Serial.println("Fingerprint sensor not found!!!");
lcd.setCursor(0, 0);
lcd.print("Sensor Not found! ");
lcd.setCursor(0, 1);
lcd.print(" ");
while (1)
{
delay(1);
}
}
}
void loop()
{
int fingerprintID = getFingerprintID();
delay(50);
if (fingerprintID == 52)
{
Serial.println("Welcome KhaaN");
lcd.setCursor(0, 0);
lcd.print("Welcome Debasis ");
lcd.setCursor(0, 1);
lcd.print(" ");
connecthost("Debasis");
flag = 0;
}
else if (fingerprintID == 2)
{
Serial.println("Welcome Manas");
lcd.setCursor(0, 0);
lcd.print("Welcome Manas ");
lcd.setCursor(0, 1);
lcd.print(" ");
connecthost("Manas");
flag = 0;
}
else if (fingerprintID == 3)
{
Serial.println("Welcome Tara");
lcd.setCursor(0, 0);
lcd.print("Welcome Tara ");
lcd.setCursor(0, 1);
lcd.print(" ");
connecthost("Tara");
flag = 0;
}
else
{
Serial.println("Waiting for valid finger!!!");
lcd.setCursor(0, 0);
lcd.print(" Place a Valid ");
lcd.setCursor(0, 1);
lcd.print(" Finger ");
}
}
int getFingerprintID()
{
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) return -1;
p = finger.image2Tz();
if (p != FINGERPRINT_OK) return -1;
p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) return -1;
return finger.fingerID;
}
void connecthost(String data)
{
if (flag == 0)
{
member = data;
flag = 1;
Serial.print("connecting to ");
Serial.println(host);
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort))
{
Serial.println("connection failed");
return;
}
// We now create a URL for the request
String url = "/pushingbox?";
url += "devid=";
url += "v762EE80BB919CB3";
url += "&Name=" + String(member);
Serial.print("Requesting URL: ");
Serial.println(url);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
Serial.print("Data Sent!");
}
Serial.println();
Serial.println("closing connection");
}
}
//Code for Enrollment:
//#include <Adafruit_Fingerprint.h>
//SoftwareSerial mySerial(D3,D4);
//Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
uint8_t id;
void setup_1()
{
Serial.begin(9600);
while (!Serial); // For Yun/Leo/Micro/Zero/...
delay(100);
Serial.println("\n\nAdafruit Fingerprint sensor enrollment");
// set the data rate for the sensor serial port
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}
}
uint8_t readnumber(void) {
uint8_t num = 0;
while (num == 0) {
while (! Serial.available());
num = Serial.parseInt();
}
return num;
}
void loop_1() // run over and over again
{
Serial.println("Ready to enroll a fingerprint!");
Serial.println("Please type in the ID # (from 1 to 127) you want to save this finger as...");
id = readnumber();
if (id == 0) {// ID #0 not allowed, try again!
return;
}
Serial.print("Enrolling ID #");
Serial.println(id);
while (! getFingerprintEnroll() );
}
uint8_t getFingerprintEnroll() {
int p = -1;
Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id);
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.println(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}
// OK success!
p = finger.image2Tz(1);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}
Serial.println("Remove finger");
delay(2000);
p = 0;
while (p != FINGERPRINT_NOFINGER) {
p = finger.getImage();
}
Serial.print("ID "); Serial.println(id);
p = -1;
Serial.println("Place same finger again");
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.print(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}
// OK success!
p = finger.image2Tz(2);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}
// OK converted!
Serial.print("Creating model for #"); Serial.println(id);
p = finger.createModel();
if (p == FINGERPRINT_OK) {
Serial.println("Prints matched!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_ENROLLMISMATCH) {
Serial.println("Fingerprints did not match");
return p;
} else {
Serial.println("Unknown error");
return p;
}
Serial.print("ID "); Serial.println(id);
p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Stored!");
return p;
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not store in that location");
return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");
return p;
} else {
Serial.println("Unknown error");
return p;
}
}