# Rencana Perbaikan UI ESP32 (Sistem Notifikasi) Tujuan: Menampilkan pesan peringatan yang jelas di layar ESP32 tanpa berkedip, tertimpa frame kamera, atau saling tumpang tindih. ## Masalah Saat Ini Fungsi showStatus() saat ini melakukan ft.fillScreen(TFT_BLACK) lalu menggambar teks. Namun, karena loop utama terus memanggil drawFrameToTFT() setiap 80ms, teks tersebut akan langsung tertimpa oleh gambar dari kamera dalam hitungan milidetik. Akibatnya pesan hanya berkedip atau tidak terlihat sama sekali, dan teks bisa tumpang tindih. ## Solusi (Overlay System) Kita akan mengubah cara kerja showStatus() menjadi sistem **Overlay**: 1. **Penyimpanan Status**: Pesan akan disimpan di variabel global (misal gOverlayMsg, gOverlayColor, gOverlayExpire). 2. **Durasi**: Setiap pesan akan memiliki durasi (misal 3 detik). 3. **Penggambaran (Render)**: Teks tidak lagi memanggil illScreen. Teks akan digambar **di atas** frame kamera *setelah* drawFrameToTFT() selesai dipanggil, dan diberikan background hitam transparan/solid agar mudah dibaca. 4. **Antrean / Multiline**: Pesan yang masuk akan diformat dengan baik. Jika ada \n, akan digambar baris per baris di tengah layar agar rapi dan tidak tumpang tindih. ## Skenario Pesan (Simulasi) - **Gagal Deteksi Wajah**: Saat API mengembalikan error atau tidak menemukan wajah, layar akan menampilkan kotak merah berisi GAGAL DETEKSI\nWajah tidak terlihat selama 3 detik. - **RFID Daftar Wajah**: Saat kartu RFID ditap untuk mendaftar, layar menampilkan kotak kuning berisi RFID DAFTAR\nSilakan lihat kamera. - **Gagal Daftar**: Jika gambar buram/wajah tidak terdeteksi saat daftar, layar menampilkan GAGAL DAFTAR\nUlangi lagi. ## Langkah Implementasi 1. Buat fungsi drawOverlayMessage() yang dipanggil setiap frame kamera. 2. Ubah showStatus() agar hanya memperbarui variabel gOverlayMsg dan mereset timer. 3. Tambahkan validasi respon dari API di handleCommand() untuk menampilkan teks spesifik yang diminta.