85 lines
4.5 KiB
Markdown
85 lines
4.5 KiB
Markdown
# Flowchart Alat (ESP32)
|
|
|
|
Berikut adalah flowchart lengkap khusus untuk alur kerja dan navigasi pada alat (ESP32 + Layar TFT + Sensor Sidik Jari) berdasarkan logika program di `main.cpp`.
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
Mulai([Mulai / Alat Dinyalakan]) --> Init[Inisialisasi Sistem & Koneksi WiFi]
|
|
Init --> Standby[Layar Utama / Standby\nSCR_MAIN]
|
|
|
|
%% Dua jalur utama saat di layar Standby
|
|
Standby -->|Tempelkan Jari| BacaJari[Sensor Membaca Sidik Jari]
|
|
Standby -->|Sentuh Layar| Menu[Layar Daftar Menu\nSCR_MENU_LIST]
|
|
|
|
%% Alur Validasi Sidik Jari (Akses Masuk)
|
|
BacaJari --> Validasi{Cek ID Jari\nAktif & Terdaftar?}
|
|
Validasi -->|Benar| AksesBuka[Pintu Terbuka]
|
|
Validasi -->|Salah| AksesTolak[Tampilkan Layar Akses Ditolak\nBuzzer Bunyi Gagal]
|
|
AksesTolak --> Standby
|
|
|
|
AksesBuka --> Sinkronisasi[Kirim Laporan Absensi ke Server\nSync Task]
|
|
Sinkronisasi --> StatusKoneksi{Apakah Koneksi\nInternet Ada?}
|
|
StatusKoneksi -->|Online| QRReport[Tampilkan Layar QR Laporan\nSCR_QR_REPORT]
|
|
StatusKoneksi -->|Offline| FormOffline[Tampilkan Formulir Aktivitas Offline\nSCR_ACTIVITY_FORM]
|
|
|
|
QRReport --> SelesaiAbsen([Selesai])
|
|
FormOffline --> SimpanOffline[Simpan Log di Memori Alat\nNVS]
|
|
SimpanOffline --> SelesaiAbsen
|
|
SelesaiAbsen -->|Timeout/Tutup Pintu| Standby
|
|
|
|
%% Alur Navigasi Menu
|
|
Menu --> PilihDaftar[Pilih: Registrasi Baru]
|
|
Menu --> PilihHelpdesk[Pilih: Bantuan / Helpdesk]
|
|
Menu --> PilihDarurat[Pilih: Keadaan Darurat]
|
|
|
|
%% Alur Bantuan
|
|
PilihHelpdesk --> LayarHelpdesk[Tampilkan Info Bantuan\nSCR_HELPDESK]
|
|
LayarHelpdesk -->|Kembali| Menu
|
|
|
|
%% Alur Keadaan Darurat
|
|
PilihDarurat --> LayarDarurat[Tampilkan Peringatan Darurat\nSCR_EMERGENCY]
|
|
LayarDarurat --> InputDarurat[Input Nomor HP/PIN Darurat\nSCR_EMERGENCY_HP]
|
|
InputDarurat --> CekDarurat{Verifikasi PIN/HP\nDarurat}
|
|
CekDarurat -->|Benar| AksesBuka
|
|
CekDarurat -->|Salah| AksesTolak
|
|
|
|
%% Alur Pendaftaran Baru (Enrollment)
|
|
PilihDaftar --> MenuDaftar[Layar Menu Pendaftaran\nSCR_REGISTER_MENU]
|
|
MenuDaftar --> InputData[Ketik Keyboard Data Diri:\nNama, NIK, No HP, PIN]
|
|
InputData --> AmbilFoto[Layar QR Code Untuk Foto\nSCR_QR_REG_FOTO]
|
|
AmbilFoto --> DaftarJari[Layar Pendaftaran Sidik Jari\nSCR_REG_FINGER]
|
|
DaftarJari --> RekamJari[Tempel Jari 2x ke Sensor]
|
|
RekamJari --> CekRekam{Perekaman\nBerhasil?}
|
|
CekRekam -->|Gagal| DaftarJari
|
|
CekRekam -->|Sukses| KirimData[Kirim Data Registrasi ke Server]
|
|
KirimData --> SelesaiDaftar([Selesai Pendaftaran])
|
|
SelesaiDaftar --> Standby
|
|
|
|
%% Tambahan Kondisi Akun
|
|
Validasi -->|Akun Diblokir| AkunMati[Layar Akun Dinonaktifkan\nSCR_ACCESS_DEACTIVATED]
|
|
AkunMati --> Standby
|
|
```
|
|
|
|
### Penjelasan Alur Flowchart Alat (ESP32):
|
|
|
|
**1. Kondisi Layar Utama (Standby)**
|
|
Layar utama (`SCR_MAIN`) adalah pusat kendali saat alat tidak sedang dioperasikan. Dari sini, alat mendeteksi 2 (dua) jenis interaksi:
|
|
- **Jari Ditempelkan** langsung ke sensor tanpa menekan layar.
|
|
- **Layar Disentuh** untuk menavigasi menu.
|
|
|
|
**2. Alur Akses (Buka Pintu)**
|
|
- Saat jari ditempel, sistem mengecek ke *local storage* alat apakah ID jari tersebut aktif dan berhak masuk.
|
|
- Jika **Gagal/Ditolak/Diblokir**, alat akan menyalakan lampu merah, buzzer berbunyi, dan menampilkan peringatan.
|
|
- Jika **Berhasil**, alat membuka *relay* (pintu). Setelah pintu terbuka, alat akan mengirimkan data *sync* ke server.
|
|
- Setelah berhasil terbuka, pengguna diminta melakukan absensi. Jika ada internet, muncul **QR Code**. Jika WiFi putus (offline), akan muncul **Formulir Aktivitas** di layar sentuh untuk diisi manual yang akan tersimpan sementara di memori internal ESP32 (NVS).
|
|
|
|
**3. Alur Menu & Fitur Lain**
|
|
Bila pengguna menyentuh layar, ia akan diarahkan ke beberapa opsi:
|
|
- **Bantuan (Helpdesk):** Hanya menampilkan informasi kontak atau bantuan standar.
|
|
- **Darurat (Emergency):** Meminta pengguna memasukkan Nomor HP atau PIN Cadangan Darurat apabila terjadi kendala pada sidik jari untuk memaksa pintu terbuka.
|
|
- **Registrasi Penghuni Baru:** Ini adalah proses berantai yang paling panjang di alat:
|
|
1. Pengguna mengetikkan data pribadi (Nama, NIK, Nomor HP, PIN) di keyboard virtual yang muncul pada layar TFT.
|
|
2. Sistem lalu memunculkan QR Code khusus pendaftaran foto.
|
|
3. Setelah selesai, masuk ke pendaftaran Sidik Jari. Pengguna harus menempelkan jari 2x ke sensor untuk membaca guratan jari.
|
|
4. Bila berhasil direkam di alat, data ID dan biodata akan dilempar (POST) ke server via API untuk disimpan sebagai Penghuni baru.
|