TKK_E32230273/flowchart_alat.md

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.