├── README.md ├── gscript_api.txt └── rfid_data_to_google_spreadsheet.ino /README.md: -------------------------------------------------------------------------------- 1 | # Attendance-System-with-storing-Data-on-Google-Spreadsheet-using-RFID-and-Arduino-Ethernet-Shield -------------------------------------------------------------------------------- /gscript_api.txt: -------------------------------------------------------------------------------- 1 | function doGet(e) { 2 | Logger.log( JSON.stringify(e) ); 3 | 4 | var result = 'Ok'; 5 | 6 | if (e.parameter == undefined) { 7 | result = 'No Parameters'; 8 | } 9 | else { 10 | var id = ''; // Spreadsheet ID 11 | var sheet = SpreadsheetApp.openById(id).getActiveSheet(); 12 | var newRow = sheet.getLastRow() + 1; 13 | var rfidData = []; 14 | rfidData[0] = new Date(); 15 | for (var param in e.parameter) { 16 | Logger.log('In for loop, param='+param); 17 | var value = stripQuotes(e.parameter[param]); 18 | switch (param) { 19 | case 'allowed_members': //Parameter 20 | rfidData[1] = value; //Value in column B 21 | break; 22 | case 'Member_ID': 23 | rfidData[2] = value; 24 | break; 25 | default: 26 | result = "Wrong parameter"; 27 | } 28 | } 29 | Logger.log(JSON.stringify(rfidData)); 30 | 31 | // Write new row below 32 | var newRange = sheet.getRange(newRow, 1, 1, rfidData.length); 33 | newRange.setValues([rfidData]); 34 | } 35 | 36 | // Return result of operation 37 | return ContentService.createTextOutput(result); 38 | } 39 | 40 | /** 41 | * Remove leading and trailing single or double quotes 42 | */ 43 | function stripQuotes( value ) { 44 | return value.replace(/^["']|['"]$/g, ""); 45 | } 46 | 47 | -------------------------------------------------------------------------------- /rfid_data_to_google_spreadsheet.ino: -------------------------------------------------------------------------------- 1 | 2 | /* Arduino Code which sends data to google spreadsheet */ 3 | 4 | #include 5 | #include 6 | #include 7 | #define SS_PIN 4 //FOR RFID SS PIN BECASUSE WE ARE USING BOTH ETHERNET SHIELD AND RS-522 8 | #define RST_PIN 9 9 | #define No_Of_Card 3 10 | byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 11 | char server[] = "api.pushingbox.com"; //YOUR SERVER 12 | IPAddress ip(192, 168, 137, 177); 13 | EthernetClient client; 14 | MFRC522 rfid(SS_PIN,RST_PIN); 15 | MFRC522::MIFARE_Key key; 16 | byte id[No_Of_Card][4]={ 17 | {142,76,58,42}, //RFID NO-1 18 | {153,178,60,64}, //RFID NO-2 19 | {141,764,60,94} //RFID NO-3 20 | }; 21 | byte id_temp[3][3]; 22 | byte i; 23 | int j=0; 24 | 25 | 26 | // the setup function runs once when you press reset or power the board 27 | void setup(){ 28 | Serial.begin(9600); 29 | SPI.begin(); 30 | rfid.PCD_Init(); 31 | for(byte i=0;i<6;i++) 32 | { 33 | key.keyByte[i]=0xFF; 34 | } 35 | if (Ethernet.begin(mac) == 0) { 36 | Serial.println("Failed to configure Ethernet using DHCP"); 37 | Ethernet.begin(mac, ip); 38 | } 39 | delay(1000); 40 | Serial.println("connecting..."); 41 | } 42 | 43 | // the loop function runs over and over again forever 44 | void loop(){ 45 | int m=0; 46 | if(!rfid.PICC_IsNewCardPresent()) 47 | return; 48 | if(!rfid.PICC_ReadCardSerial()) 49 | return; 50 | for(i=0;i<4;i++) 51 | { 52 | id_temp[0][i]=rfid.uid.uidByte[i]; 53 | delay(50); 54 | } 55 | 56 | for(i=0;i&allowed_members="); //YOUR URL 106 | if(j!=No_Of_Card) 107 | { 108 | client.print('1'); 109 | // Serial.print('1'); 110 | } 111 | else 112 | { 113 | client.print('0'); 114 | } 115 | 116 | client.print("&Member_ID="); 117 | for(int s=0;s<4;s++) 118 | { 119 | client.print(rfid.uid.uidByte[s]); 120 | 121 | } 122 | client.print(" "); //SPACE BEFORE HTTP/1.1 123 | client.print("HTTP/1.1"); 124 | client.println(); 125 | client.println("Host: api.pushingbox.com"); 126 | client.println("Connection: close"); 127 | client.println(); 128 | } else { 129 | // if you didn't get a connection to the server: 130 | Serial.println("connection failed"); 131 | } 132 | } 133 | 134 | 135 | --------------------------------------------------------------------------------