Port 80 atau HTTP
#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 53
#define RST_PIN 49
MFRC522 mfrc522(SS_PIN, RST_PIN);
int kirim = 0;
String content = "";
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
boolean received = false;
EthernetClient client;
IPAddress server(192, 168, 1, 2);
IPAddress ip(192, 168, 1, 3);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
unsigned long lastConnectionTime = 0;
boolean lastConnected = false;
const unsigned long postingInterval = 5000;
String pergi = "0";
String record = "myrfid";
String value2 = "-";
String value3 = "-";
int sudahbuka1 = 0;
int sudahbuka3 = 0;
const int relay = 48;
const int buzzer = 22;
int ledunlock = 23;
int ledlock = 24;
void setup() {
Serial.begin(9600);
Ethernet.begin(mac, ip);
Serial.println();
pinMode(relay, OUTPUT);
digitalWrite(relay, HIGH);
pinMode(buzzer, OUTPUT);
pinMode(ledunlock, OUTPUT);
pinMode(ledlock, OUTPUT);
lcd.init();
lcd.backlight();
SPI.begin();
mfrc522.PCD_Init();
// lcd.setCursor(0, 0);
// lcd.print("TUGAS AKHIR PNJ");
// lcd.setCursor(0, 1);
// lcd.print(" ERWIN - SHEILA ");
// delay(3000);
// lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" UNTUK MULAI ");
lcd.setCursor(0, 1);
lcd.print(" TAP e-KTP ");
digitalWrite(ledunlock, LOW);
digitalWrite(ledlock, HIGH);
}
void loop() {
// if (client.available()) {
// char c = client.read();
// Serial.write(c);
// if (c == '@') {
// kirim = 0;
// }
// }
int status = 1;
String gabs = "";
while (client.available() and status == 1) {
char c = client.read();
// Serial.print(c);
gabs = gabs + String(c);
received = true;
if (c == '@') {
status = 0;
//break;
}
}
if (gabs.length() > 1) {
Serial.println("GABS:" + gabs);
pergi = "0";
String value1 = splitString(gabs, '#', 0);
value2 = splitString(gabs, '#', 1);//TX
value3 = splitString(gabs, '#', 2);
pergi = splitString(gabs, '#', 3);//pergi
record = splitString(gabs, '#', 4); //rfid_ktp
Serial.println("X-TX:" + value2);
Serial.println("Y-Nama:" + value3);
Serial.println("Z-PErgi:" + pergi);
cekstatus();
}
if (received) {
client.stop();
received = false;
}
if (!client.connected() && lastConnected) {
Serial.println(); Serial.println("disconnecting.");
client.stop();
}
MFRC522::MIFARE_Key key;
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
else {
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
}
content = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : ""));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
content.toUpperCase();
// Serial.println(kirim);
int sudah = 0;
if (content.length() > 10) {
sudah = 1;
Serial.println("Kirim0");
httpRequest0();//CEK validasi
}
else if (pergi == "1" && content.length() < 10) {
sudah = 2;
Serial.println("Kirim1");
httpRequest1();
}
else if (pergi == "3" && content.length() < 10) {
sudah = 3;
Serial.println("Kirim2");
httpRequest2();
}
Serial.println("");
Serial.println("+++++++++++++++++++");
Serial.println(sudah);
Serial.println(content);
Serial.println(content.length());
Serial.println(kirim);
Serial.println("+++++++++++++++++++");
//=========================
// if (!client.connected() && (millis() - lastConnectionTime > postingInterval)) {
// int i = random(10000);
// String reading = "1:" + String(i);
// httpRequest();
// }
// lastConnected = client.connected();
// delay(1000);
//============================================
cekstatus();
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
if (inChar == '@') {
Serial.print("OK.");
Serial.println(inChar);
}
}
}
void dump_byte_array(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}
void kunci_box () {
digitalWrite(relay, LOW);
digitalWrite(ledunlock, HIGH);
digitalWrite(ledlock, LOW);
delay(8000);
digitalWrite(relay, HIGH);
digitalWrite(ledunlock, LOW);
digitalWrite(ledlock, HIGH);
}
void httpRequest0() {
client.stop();
client.stop();
if (client.connect(server, 80)) {
String myrfid = String(content);
String SQL = "";
SQL = "GET /webkunci/prosescek.php?rfid=" + String(myrfid) + "&rfid2=ok&status=ok HTTP/1.1";
client.println(SQL);
Serial.print(SQL);
client.println("Host: *HOST*");
client.println("Connection: keep-open");
client.println();
client.flush();
// lastConnectionTime = millis();
}
else {
Serial.println("auto-refresh.");
client.stop();
}
}
//===============================================
void httpRequest1() {
client.stop();
client.stop();
if (client.connect(server, 80)) {
String myrfid = String(content);
String SQL = "";
SQL = "GET /webkunci/prosesinsert.php?&ktp=" + String(record) + "&rfid=" + String(myrfid) + "&status=ok HTTP/1.1";
client.println(SQL);
Serial.print(SQL);
client.println("Host: *HOST*");
client.println("Connection: keep-open");
client.println();
client.flush();
// lastConnectionTime = millis();
}
else {
Serial.println("auto-refresh.");
client.stop();
}
}
//===============================================
void httpRequest2() {
client.stop();
client.stop();
if (client.connect(server, 80)) {
String myrfid = String(content);
String SQL = "";
SQL = "GET /webkunci/prosesupdate.php?ktp=" + String(record) + "&rfid=" + String(myrfid) + "&status=ok HTTP/1.1";
client.println(SQL);
Serial.print(SQL);
client.println("Host: *HOST*");
client.println("Connection: keep-open");
client.println();
client.flush();
// lastConnectionTime = millis();
}
else {
Serial.println("auto-refresh.");
client.stop();
}
}
//===============================================
void httpRequest() {
client.stop();
client.stop();
if (client.connect(server, 80)) {
String myrfid = String(content);
String SQL = "";
if (pergi.equals("0")) { //cek
SQL = "GET /webkunci/prosescek.php?rfid=" + String(myrfid) + "&rfid2=ok&status=ok HTTP/1.1";
client.println(SQL);
Serial.print(SQL);
client.println("Host: *HOST*");
client.println("Connection: keep-open");
client.println();
client.flush();
}
else if (kirim == 1) { //PINJAM
SQL = "GET /webkunci/prosesinsert.php?&ktp=" + String(record) + "&rfid=" + String(myrfid) + "&status=ok HTTP/1.1";
client.println(SQL);
Serial.print(SQL);
client.println("Host: *HOST*");
client.println("Connection: keep-open");
client.println();
client.flush();
}
else if (pergi == "3") { //BALIK
SQL = "GET /webkunci/prosesupdate.php?ktp=" + String(record) + "&rfid=" + String(myrfid) + "&status=ok HTTP/1.1";
client.println(SQL);
Serial.print(SQL);
client.println("Host: *HOST*");
client.println("Connection: keep-open");
client.println();
client.flush();
}
// lastConnectionTime = millis();
}
else {
Serial.println("auto-refresh.");
client.stop();
}
}
String splitString(String str, char sep, int index)
{
int found = 0;
int strIdx[] = { 0, -1 };
int maxIdx = str.length() - 1;
for (int i = 0; i <= maxIdx && found <= index; i++)
{
if (str.charAt(i) == sep || i == maxIdx)
{
found++;
strIdx[0] = strIdx[1] + 1;
strIdx[1] = (i == maxIdx) ? i + 1 : i;
}
}
return found > index ? str.substring(strIdx[0], strIdx[1]) : "";
}
void cekstatus() {
if (pergi == "1") {
sudahbuka3 = 0;
if (sudahbuka1 == 0) {
// tone(buzzer, 500);
// delay(500);
// noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(value2);
lcd.setCursor(0, 1);
lcd.print(value3);
delay(2000);
kunci_box ();
sudahbuka1 = 1;
}//sudahbuka
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" SILAKAN ");
lcd.setCursor(0, 1);
lcd.print(" TAP KUNCI ");
delay(2000);
}
else if (pergi == "2" ) {
sudahbuka1 = 0;
sudahbuka3 = 0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(value2);
lcd.setCursor(0, 1);
lcd.print(value3);
delay(1000);
pergi = "0";
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" SILAHKAN ");
lcd.setCursor(0, 1);
lcd.print(" TAP e-KTP ");
delay(1000);
kirim = 0;
}
else if (pergi == "6" ) {
// tone(buzzer, 500);
// delay(500);
// noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(value2);
lcd.setCursor(0, 1);
lcd.print( record );
delay(3000);
pergi = "0";
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" SILAHKAN ");
lcd.setCursor(0, 1);
lcd.print(" TAP e-KTP ");
delay(1000);
kirim = 0;
}
else if (pergi == "3" ) {
sudahbuka1 = 0;
if (sudahbuka3 == 0) {
// tone(buzzer, 500);
// delay(500);
// noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(value2);
lcd.setCursor(0, 1);
lcd.print(value3);
delay(3000);
sudahbuka3 = 1;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" SILAKAN ");
lcd.setCursor(0, 1);
lcd.print(" TAP KUNCI ");
delay(1000);
}
else if (pergi == "4" ) {
sudahbuka1 = 0;
sudahbuka3 = 0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" MASUKAN KUNCI ");
lcd.setCursor(0, 1);
lcd.print(" KE RAK ");
delay(1000);
kunci_box();
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(value2);
lcd.setCursor(0, 1);
lcd.print(value3);
delay(3000);
pergi = "0";
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" SILAHKAN ");
lcd.setCursor(0, 1);
lcd.print(" TAP e-KTP ");
delay(1000);
kirim = 0;
}//
else if (pergi == "5" ) {
sudahbuka1 = 0;
sudahbuka3 = 0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(value2);
lcd.setCursor(0, 1);
lcd.print(value3);
delay(3000);
pergi = "0";
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" SILAHKAN ");
lcd.setCursor(0, 1);
lcd.print(" TAP e-KTP ");
delay(1000);
kirim = 0;
}
else {
pergi = "0";
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" SILAHKAN ");
lcd.setCursor(0, 1);
lcd.print(" TAP e-KTP ");
delay(1000);
}
}