Prototype ini hampir sejenis dengan mesin absensi sederhana yang pernah dibahas pada post sebelumnya. Karena adanya teknologi wireless serta konsep IoT yang mudah dan praktis diimplementasikan maka aplikasi menggunakan board nodeMCU bisa menjadi opsi. Nah untuk memudahkan dalam ujicoba, akan saya sediakan sample sistem informasi (berbasis web) yang dapat dimanfaatkan untuk coba-coba. Saya tidak akan menjelaskan secara rinci terkait pembuatan sistem infomasinya jadi harap maklum. Pastikan kalian sudah memahami/belajar tentang pembuatan aplikasi berbasis web sebagai dasarnya.
Konsep dari sistem absensi online dengan RFID kurang lebih akan seperti gambar diatas walaupun secara spesifik tidaklah sesimpel itu. Ini agak berbeda dari tutorial sebelumnya karena untuk memfasilitasi semua jenis kartu mifare classic (emoney, RFID tag, Sticker Tag) maka data yang akan diolah adalah uid saja (tidak ada proses write data). Reader RC522 akan membaca uid kemudian datanya diproses oleh NodeMCU untuk dikirim ke server (database). Nah dari proses pengiriman data ini, maka akan diperoleh response terkait dengan informasi dari uid hasil pembacaan (misal nama, status absensi, dll). Pengaturan informasi yang berkaitan dengan pengguna kartu dapat di atur dalam sistem informasi. Bagian yang paling penting adalah pembuatan Web API untuk menyediakan layanan penyimpanan data dan juga response. Biar lebih mudah dipahami, silahkan dipelajari tutorial pada post ini. Untuk mempermudah development maka percobaan dilakukan secara local. Pada dasarnya semua aplikasi yang dijalankan di localhost dapat di onlinekan dengan mengupload aplikasi tersebut ke hosting (lebih jelasnya dapat dipelajari sendiri). Ok langsung saja kita mulai proses pembuatan sistem Absensi menggunakan NodeMCU dan modul RFID RC522.
Alat dan Bahan
Hardware:
NodeMCU
RC522 - RFID module
I2C OLED 128x64
Buzzer
Kabel-kabel Jumper
Software:
Arduino IDE
Notepad ++ (text editor)
XAMPP (Saya pakai versi 7.4)
Postman (web API testing)
Membuat Web API
Pertama-tama mari kita siapkan terlebih dahulu Web APInya. Kita mulai dengan pembuatan database MySQL. Disini saya menyimpan data absen pada database absensi dengan 3 buah tabel didalamnya yaitu data_karyawan, data_absen, dan data_invalid. Tabel data_karyawan digunakan untuk menyimpan data umum dari karyawan (nama, alamat, divisi, dll), tabel data_absen digunakan untuk menyimpan data absensi seperti uid, tanggal, jam, status absensi. Sementara itu, untuk tabel data_invalid digunakan untuk meyimpan uid yang belum tersimpan pada data_karyawan atau bisa juga disebut sebagai log untuk hasil pembacaan kartu yang tidak valid (karena belum didaftarkan).
Buka Xampp dan jalankan service apache dan MySQL
Buka phpMyAdmin dan jalankan SQL berikut untuk membuat database yang diperlukan
CREATEDATABASE IF NOTEXISTS absensi;
USE absensi;
/*Table structure for table `data_absen` */CREATETABLE data_absen (
id int(100) NOTNULL AUTO_INCREMENT,
tanggal dateNOTNULLDEFAULTcurrent_timestamp(),
waktu time NOTNULLDEFAULTcurrent_timestamp(),
uid varchar(20) NOTNULL,
status varchar(20) NOTNULL,
PRIMARYKEY (id)
);
/*Table structure for table `data_invalid` */CREATETABLE data_invalid (
id int(100) NOTNULL AUTO_INCREMENT,
tanggal dateNOTNULLDEFAULTcurrent_timestamp(),
waktu time NOTNULLDEFAULTcurrent_timestamp(),
uid varchar(10) NOTNULL,
status varchar(10) NOTNULL,
PRIMARYKEY (id)
);
/*Table structure for table `data_karyawan` */CREATETABLE data_karyawan (
id int(50) NOTNULL AUTO_INCREMENT,
created dateNOTNULLDEFAULTcurrent_timestamp(),
uid varchar(20) NOTNULL,
nama varchar(50) NOTNULL,
division varchar(50) NOTNULL,
mail varchar(50) NOTNULL,
alamat textNOTNULL,
picture varchar(100) NOTNULL,
PRIMARYKEY (id)
);
Setelah database siap lanjut ke directory httdocs (C:\xampp\htdocs). Buat folder absensi dan selanjutnya didalam folder absensi buat folder webapi. Terakhir dalam folder webapi buat folder api, class dan config
Selanjutnya masuk ke folder config (C:\xampp\htdocs\absensi\webapi\config), buat file database.php. Buka file dengan notepad ++ dan isi dengan code berikut. File database.php digunakan untuk melakukan koneksi ke database yang digunakan (absensi). Untuk username dan password silahkan disesuaikan.
database.php
<?phpclassDatabase {
private$host="localhost";
private$database_name="absensi";
private$username="root";
private$password="";
public$conn;
publicfunctiongetConnection(){
$this->conn=null;
try{
$this->conn=new PDO("mysql:host=".$this->host.";dbname=".$this->database_name, $this->username, $this->password);
$this->conn->exec("set names utf8");
}catch(PDOException $exception){
echo"Database could not be connected: ".$exception->getMessage();
}
return$this->conn;
}
}
?>
lanjut ke tahap selanjutnya masuk ke folder class (C:\xampp\htdocs\absensi\webapi\class). Buat file absensi.php. File ini merupakan program untuk mengatur proses penyimpanan data yang dikirim melalui request GET. Alurnya adalah sebagai berikut
Untuk program pada absensi.php , dapat dilihat pada kode dibawah
absensi.php
<?phpdate_default_timezone_set('Asia/Jakarta');
classAbsensi{
// Connectionprivate$conn;
// Tableprivate$db_table="data_absen";
private$db_table1="data_karyawan";
private$db_table2="data_invalid";
// Columnspublic$id;
public$tanggal;
public$waktu;
public$uid;
public$status;
public$last_status;
public$nama;
// Db connectionpublicfunction__construct($db){
$this->conn=$db;
}
// CREATEpublicfunctioncreateData(){
//1. Cek user$sqlQuery="SELECT * FROM ".$this->db_table1." WHERE uid = :uid LIMIT 0,1";
$stmt=$this->conn->prepare($sqlQuery);
$stmt->bindParam(":uid", $this->uid);
$stmt->execute();
if($stmt->errorCode() ==0) {
while(($dataRow=$stmt->fetch(PDO::FETCH_ASSOC)) !=false) {
$this->nama=$dataRow['nama'];
}
} else {
$errors=$stmt->errorInfo();
echo($errors[2]);
}
$itemCount=$stmt->rowCount();
if($itemCount>0){
//UID terdaftar -> cek status terakhir$sqlQuery="SELECT data_absen.id, data_absen.uid, data_absen.status, data_karyawan.nama FROM ".$this->db_table.", ".$this->db_table1." WHERE data_absen.id = (SELECT MAX(data_absen.id) FROM ".$this->db_table." WHERE data_absen.uid = :uid) AND data_karyawan.uid= :uid";
$stmt=$this->conn->prepare($sqlQuery);
$stmt->bindParam(":uid", $this->uid);
$stmt->execute();
$itemCount=$stmt->rowCount();
if($itemCount>0){
//error handlingif($stmt->errorCode() ==0) {
while(($dataRow=$stmt->fetch(PDO::FETCH_ASSOC)) !=false) {
$this->last_status=$dataRow['status'];
$this->nama=$dataRow['nama'];
//echo($this->last_status);
}
} else {
$errors=$stmt->errorInfo();
echo($errors[2]);
}
}else{
$this->last_status="OUT";
}
//set statusif ($this->last_status=="IN"){
$this->status="OUT";
}else{
$this->status="IN";
}
//Insert Data to data_absen $sqlQuery="INSERT INTO ".$this->db_table." SET waktu = :waktu, uid = :uid, status = :now_status";
$this->waktu=date("H:i:s");
$stmt=$this->conn->prepare($sqlQuery);
// sanitize$this->uid=htmlspecialchars(strip_tags($this->uid));
// bind data$stmt->bindParam(":uid", $this->uid);
$stmt->bindParam(":now_status", $this->status);
$stmt->bindParam(":waktu", $this->waktu);
if($stmt->execute()){
returntrue;
}
returnfalse;
}
else{
//UID tidak terdaftar$this->status="INVALID";
$this->nama="Invalid";
//Insert Data to data_invalid $sqlQuery="INSERT INTO ".$this->db_table2." SET waktu = :waktu, uid = :uid, status = :now_status";
$this->waktu=date("H:i:s");
$stmt=$this->conn->prepare($sqlQuery);
// sanitize$this->uid=htmlspecialchars(strip_tags($this->uid));
// bind data$stmt->bindParam(":uid", $this->uid);
$stmt->bindParam(":now_status", $this->status);
$stmt->bindParam(":waktu", $this->waktu);
if($stmt->execute()){
returntrue;
}
returnfalse;
}
}
}
?>
Selanjutnya masuk ke folder api (C:\xampp\htdocs\absensi\webapi\api).File terakhir yang akan dibuat adalah create.php fungsinya digunakan sebagai penghubung dan pengoleksi data (dari proses GET) yang selanjutnya diproses ke fungsi createData() pada absensi.php. Setelah fungsi create data selesai maka akan memberikan response berupa json data dengan struktur sebagai berikut
Ok program PHP Rest API udah selesai dibuat. untuk memastikan susunan dan lokasi foldernya adalah sebagai berikut:
Setelah semuanya ok, mari kita test apakah web API dapat berfungsi dengan baik. Pengetesan dapat dilakukan via browser atau postman dengan mengakses url berikut:
Apabila uid belum didaftarkan di tabel data_karyawan, maka akan diperoleh status invalid. Sementara bila uid sudah terdaftar maka akan diperoleh data nama dan status
data karyawan (uid terdaftar)
uid tidak terdaftar sehingga masuk ke kategori invalid (data disimpan di tabel data_invalid)
uid terdaftar sehingga diperoleh data nama dan status (data disimpan di tabel data_absen)
Apabila tidak ada kendala, maka bagian Web API sudah selesai. Mari kita lanjut ke bagian hardwarenya!
Mesin Absensi NodeMCU + RC522
Wiring Diagram
Sesuai dengan alat dan bahan yang telah disebutkan sebelumnya (NodeMCU, Buzzer, display OLED 0.96", dan RFID reader RC-522) , maka rangkaian mesin absensi online nodeMCU dapat dilihat pada gambar berikut (rev.1 =>062023)
Program NodeMCU
Terdapat beberapa library yang harus di install yaitu: MFRC522, Adafruit_GFX, Adafruit_SSD1306, dan ArduinoJson. Untuk versi library silahkan disesuaikan apabila terdapat error saat compile program.
Setelah library siap, langsung saja copas program dibawah ini. Sesuaikan wifi SSID, wifi Password, dan alamat server (atau IP komputer yang digunakan sebagai server).
*update juli 2022 (error HTTPClient::begin -> esp8266 board v.3.0.0) solved
Nah, karena ada tambahan icon buat visualisasi pada display OLED nya maka buat file header icon.h (new tab - ketik icon.h - Ok). copy kode berikut ke icon.h
Program telah siap. Cus langsung upload ke nodeMCU dan mari lanjut ke tahap pengetesan.
Let's test
Berikut gambaran dari hasil pembacaan kartu, proses pengiriman data - pembacaan respon, dan penyimpanan data kedatabase. Oh iya, kalau lihat di youtube-youtube, reader RC522 dapat digunakan untuk membaca uid eKTP. Namun untuk reader RC522 yang saya gunakan kebetulan tidak dapat membaca uid eKTP.
*just info: setelah dicek eKTP saya jenisnya MIFARE DESFire. menurut info dari si empunya library MFRC522, kartu MIFARE DESFire memang tidak dapat dibaca menggunakan reader ini.
Nah.. apabila data-data tersebut di tampilkan melalui sistem informasi (berbasis web) kurang lebih seperti gambar berikut:
Add some Custumization
Untuk memudahkan proses pendaftaran uid dan melihat rekapitulasi absensi maka kita dapat menggunakan sebuah dashboard. Dasar dari sistem aplikasi web yang digunakan pada dashboard adalah CRUD. Disini saya menggunakan pemrograman PHP untuk pembuatan CRUD ini. Biar mudah prosesnya pembuatannya saya menggunakan Crudiy ( https://github.com/jan-vandenberg/cruddiy).
Download file dashboard diatas kemudian ekstrak di folder absensi (C:\xampp\htdocs\absensi)
Selanjutnya silahkan akses http://localhost/absensi maka akan tampil halaman dashboard dari sistem yang telah dibuat. Dashboard ini bersifat demo, jadi silahkan di modif-modif sendiri sesuai kebutuhan.
Apabila ingin versi fullnya (seperti di web demo dibawah), dapat menghubungi saya via email : thecroser@gmail.com. Just buy me a coffe for that
Make it Online!
Untuk membuat agar service Web API dapat diakses secara online, kita memerlukan web hosting dan perangkat pendukungnya (web hosting, domain). Silahkan teman teman cari sendiri (googling) terkait hal ini dengan kata kunci "Upload website ke hosting". Selanjutnya upload program API dan file aplikasi web nya yang telah dibuat serta konfigurasi database yang ada di web hosting. Sebagai contoh teman-teman dapat mencoba melalui aplikasi yang telah saya publish di http://sistem-presensi.arducoding-projects.my.id/. Untuk masuk ke halaman dahboard silahkan login terlebih dahulu dengan
username:admin dan passwordnya: arducoding
Untuk akses webAPI nya teman-teman dapat mengaksesnya di link berikut. Silahkan test aplikasi hardware yang telah teman-teman buat untuk menyimpan data pada aplikasi demo diatas.
http://sistem-presensi.arducoding-projects.my.id/webapi/api/create.php?uid=CARD_UID //[GET]Proses Absensi
http://sistem-presensi.arducoding-projects.my.id/webapi/api/get_last.php?uid=CARD_UID //[GET] Cek Tap kartu terakhir
*pada program nodmcu,silahkan ubah bagian String server_addr= "192.168.0.5";
menjadi String server_addr= "sistem-presensi.arducoding-projects.my.id";
Kesimpulan
Project ini masih bersifat dasar dan memiliki fitur yang sederhana. Masih terdapat beberapa Error handling yang perlu dibuat / diperbaharui baik dari segi program nodemcu ataupun program web API nya, dari segi keamanan penggunaan kartu, dan dari segi yang lainnya. Sementara dari sisi user interface, diperlukan metode yang cocok sehingga dapat menampilkan data yang diperlukan dengan baik. Silahkan untuk diskusi terkait projek ini agar lebih bermanfaat bagi siapapun yang membutuhkan.
Dalam kesempatan selanjutnya, akan saya coba bahas untuk pembuatan Sistem Informasi berbasis web yang fokus pada pengolahan data (CRUD) menggunakan pemrograman php native (ane gak jago pemrograman web, hanya sebatas tahu)
Troubleshooting Error
=> deserializeJson() failed
Apabila sistem mendapat pesan (pada serial monitor): deserializeJson() failed , ada beberapa kemungkinan yaitu: server tidak merepon, ukuran data json respon tidak sesuai (pada program arduino, ukuran hanya dibatasi dengan 4 objek data saja (waktu, nama, uid, status) => const size_t capacity = JSON_OBJECT_SIZE(4) + 70;). teman-teman bisa cek kondisi berikut apabila menemui error ini:
1. Pastikan service Apache dan MySql sudah aktif (Xampp Control panel)
2. Pastikan alamat direktori file API sudah sesuai
3. Matikan firewall. Bisa jadi komunikasi terhambat karena dihalangi oleh firewall
maaf bang mau tanya kok pas saya tap kartunya malah dapet eror gini ya? Response: deserializeJson() failed: IncompleteInput mohon bantuannya bang terimakasih
code diatas saya gunakan untuk board esp8266 versi 3 (tested di 3.0.2 sampai 3.1.1 program no error),.. jadi coba update dulu board esp8266 nya ke versi terbaru( buka arduino ide >> tools >> board >> boards manager .. >> cari "esp8266" >> pilih esp8266 by esp8266community -- klik update
kak kalau saya pakai hosting 000webhost apa saja yang saya rubah kak soalnya sudah ada yang saya rubah ada error "deserializeJson() failed: InvalidInput" yang saya rubah ini kak "String server_addr= "https://paud-melati-grobogan.000webhostapp.com";" dan apakah yang "address ="http://"+server_addr+"/absensi/webapi/api/create.php?uid="+UIDCard;" harus di ubah juga atai ada yang salah kak Terimakasih semoga di jawab saya ingin belajar kak
Ijin bertanya kak,sudah berhasil di upload tetapi web di bagian Data_karyawan, Data_Absensi, Data Invalid tidak bisa membaca dari database gimana ya kak ? apakah permissionnya perlu di ubah menjadi apa gitu kak ?, Error nya seperti ini kak "ERROR: Could not able to execute SELECT * FROM data_karyawan ORDER BY id desc LIMIT 0, 10." Terimakasih semoga di jawab
webnya yang dipakai yang mana mas? klo yang ini: http://absensipaudmelati.000webhostapp.com/ udah jalan dengan baik, klo yang ini: http://paud-melati-grobogan.000webhostapp.com/ databasenya belum terkoneksi dangn baik (cek ulang username, passwd, nama database..)
52 Komentar
untuk rekap harian dan bulanan nya ada kah om? perlu untuk skripsi nih
BalasHapusbang, mau tanya, kalau port does not exist itu gmana cara troubleshooting nya? terimakasih banyak gan
BalasHapusini erorr message nya bang:
BalasHapusArduino: 1.8.13 (Windows 10), Board: "NodeMCU 0.9 (ESP-12 Module), 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:2MB OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 115200"
Executable segment sizes:
IROM : 274956 - code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 28284 / 32768 - code in IRAM (ICACHE_RAM_ATTR, ISRs...)
DATA : 1340 ) - initialized variables (global, static) in RAM/HEAP
RODATA : 1176 ) / 81920 - constants (global, static) in RAM/HEAP
BSS : 25576 ) - zeroed variables (global, static) in RAM/HEAP
Sketch uses 305756 bytes (29%) of program storage space. Maximum is 1044464 bytes.
Global variables use 28092 bytes (34%) of dynamic memory, leaving 53828 bytes for local variables. Maximum is 81920 bytes.
esptool.py v2.8
Serial port COM3
Connecting........_____....._____....._____....._____....._____....._____.....____Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4/tools/upload.py", line 65, in
esptool.main(cmdline)
File "C:/Users/User/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool\esptool.py", line 2890, in main
esp.connect(args.before)
File "C:/Users/User/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool\esptool.py", line 483, in connect
raise FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_error))
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
_
the selected serial port _
does not exist or your board is not connected
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Bang kasus nya sama kaya saya? benerin nya gimana ya bang?
Hapussekarang erorr gini bang
BalasHapusexit status 1
call to 'HTTPClient::begin' declared with attribute error: obsolete API, use ::begin(WiFiClient, url)
pastikan library yang digunakan memiliki versi yang sama dengan yang ada di tutorial ya.. klo beda tinggal pilih di select version
Hapussudah saya sesuaikan, tapi masih seperti itu
HapusCoba di cek pada alamat API nya gan .. sesuaikan dengan struktur api yang agan buat.
Hapusatau dapat dicoba saja via sissen.000webhostapp.com . sesuai instruksi diatas
mohon infonya bang, untuk tutorial cruddiy ada ngga , sama file dashboarnya error dibuka
BalasHapuslangsung dr si empunya saja gan .. https://github.com/jan-vandenberg/cruddiy
Hapuserrornya gmn gan?
maaf bang mau tanya kok pas saya tap kartunya malah dapet eror gini ya? Response: deserializeJson() failed: IncompleteInput
BalasHapusmohon bantuannya bang terimakasih
kemungkinan ada masalah di arduinojsonnya gan.. pastikan librarynya memakai versi yg sama kayak diatas
Hapusudah sama tapi masih eror sama kaya yang diatas deserializeJson() failed: IncompleteInput kenapa ya?
Hapuskalau disaya ternyata servernya tidak merespon, jd pas saya coba buat hosting dan pakai server hosting itu malahan bisa
Hapustrim dah konfirmasi gan... semoga bermanfaat
Hapusbang, kalo mau nambahin biar kartu rfid ada expired nya gmna yg bang, makasih bang
BalasHapusmunkin perlu diubah untuk mekanisme statusnya gan .. misal, valid, invalid, expired .. dll
Hapussilahkan berkreasi
Bang kalau ntag 215 support ga reader yg ini?
BalasHapuswah .. kurang paham gan .. ane gak ada kartu jenis ntag jd gak bs nyobain..
Hapusbang mau tanya buat daftarin nya liat id nya gmana?
BalasHapusdi invalid gan.. ntr di pilih aja tombol +
Hapuskalo buat rangkaian nya bikin pake apa bang?
Hapusbebas gan.. pake pcb titik/bolong jg bisa.. tinggal di hubung2 kan sesuai wiring diagramny
HapusApakah ini hanya untuk absensi saja , apakah memang tidak bisa untuk mendaftarkan karyawan melaui taping
BalasHapusbang kalo pakae led1602 codingnya jadi seperti apa, sudah nyoba tapi gagal, :( , pencerahannya .....
BalasHapushaloo min,
BalasHapusdashbord yang full ada min??
apakah menjual yang sudah ready ? tinggal pakai dan setting database
BalasHapusmaaf gan .. gak jual saya
HapusKa bisa ajari saya, atau minta kontak untuk konsultasi🙏
BalasHapusdicoba dulu ya.. ikuti aja sesuai tutorial diatas step by step... insyaallah jadi.. klo ada error bisa kontak saya di thecroser@gmail.com
HapusKa maaf saya mau tanya kalau seperti ini kenapa ya? no matching function for call to 'HTTPClient::begin(WiFiClient&, String&)'
Hapuscode diatas saya gunakan untuk board esp8266 versi 3 (tested di 3.0.2 sampai 3.1.1 program no error),.. jadi coba update dulu board esp8266 nya ke versi terbaru( buka arduino ide >> tools >> board >> boards manager .. >> cari "esp8266" >> pilih esp8266 by esp8266community -- klik update
HapusOke makasih ka sudah berhasil, untuk digambar alat ada tambahan ic apa ya ka?
HapusIC yang mana ya.. semua komponen sama seperti yang ada di wiring diagram
HapusYang disamping buzzer ka
Hapusoh iya ... maaf lupa gak dikasih keterangan.. itu display oled 0.96 .. buat nampilin response / status setelah kartu di tap
HapusKomentar ini telah dihapus oleh pengarang.
BalasHapusbang saya coba di 000webhost cuman ada error deserializeJson() failed: InvalidInput
BalasHapusresponya 400 Bad Request
kalau pake niagahoster errornya deserializeJson() failed: IncompleteInput
padahal apinya udh bener saya udh coba cek di postman dan dapet respon.
apakah http.begin tidak cocok untuk https?
bisa share alamat domainnya gan?
Hapuskak kalau saya pakai hosting 000webhost apa saja yang saya rubah kak soalnya sudah ada yang saya rubah ada error "deserializeJson() failed: InvalidInput" yang saya rubah ini kak "String server_addr= "https://paud-melati-grobogan.000webhostapp.com";" dan apakah yang "address ="http://"+server_addr+"/absensi/webapi/api/create.php?uid="+UIDCard;" harus di ubah juga atai ada yang salah kak Terimakasih semoga di jawab saya ingin belajar kak
BalasHapuscb cek lagi databasenya .. pastikan database sudah terkoneksi dengan baik (username, passwd, nama database..)
HapusKalau pakai 000webhost LinkAddr nya isi apa kak ?🙏🏻
BalasHapusIjin bertanya kak,sudah berhasil di upload tetapi web di bagian Data_karyawan, Data_Absensi, Data Invalid tidak bisa membaca dari database gimana ya kak ? apakah permissionnya perlu di ubah menjadi apa gitu kak ?, Error nya seperti ini kak "ERROR: Could not able to execute SELECT * FROM data_karyawan ORDER BY id desc LIMIT 0, 10." Terimakasih semoga di jawab
BalasHapuswebnya yang dipakai yang mana mas? klo yang ini: http://absensipaudmelati.000webhostapp.com/ udah jalan dengan baik, klo yang ini: http://paud-melati-grobogan.000webhostapp.com/ databasenya belum terkoneksi dangn baik (cek ulang username, passwd, nama database..)
HapusKomentar ini telah dihapus oleh pengarang.
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusAlhamdulillah sudah dicoba dan berhasil.
BalasHapusTerima kasih banyak untuk tutorialnya gan.
Ditunggu tutorial untuk aplikasi RFID door lock yang tetap menggunakan esp8266 sebagai mikrokontrollernya gan
semoga bermanfaat ya gan
HapusKak boleh minta kontak Ig nya mau tanya
BalasHapusCek Gmail saya kak terimakasih
BalasHapusbang saya sudah email tolong cek soalnya saya butuh seperti versi demo
BalasHapus