Penjelasan Program Absensi RFID dan ESP32 (Uji Kompetensi Edition) - 9. ConfigFile.ino
File ini adalah modul administrasi dan penyimpanan yang bertanggung jawab atas semua hal yang berhubungan dengan "ingatan" jangka panjang perangkat.
Bayangkan file ini sebagai arsiparis dan administrator dari proyek Anda. Ia yang mengurus semua dokumen penting.
1. void saveConfigCallback()
void saveConfigCallback () {
Serial.println("Should save config");
shouldSaveConfig = true;
}
- Fungsi Utama: Penanda (Flag) untuk Menyimpan.
- Penjelasan: Fungsi ini sangat sederhana. Ia tidak menyimpan apa pun. Tugasnya hanya satu: mengubah variabel global
shouldSaveConfigmenjaditrue. - Bagaimana Dipanggil? Fungsi ini tidak dipanggil oleh Anda secara langsung. Anda memberikan alamat fungsi ini kepada
WiFiManagerdisetup_wifi()dengan perintahwifiManager.setSaveConfigCallback(saveConfigCallback);. - Kapan Dijalankan?
WiFiManagerakan menjalankan fungsi ini tepat saat pengguna menekan tombol "Save" di halaman konfigurasi web. - Peran dalam Proyek: Ia adalah pemicu. Ia memberi sinyal ke bagian lain program, "Hei, pengguna baru saja menyimpan pengaturan baru, tolong simpan ke file ya!".
2. void ReadConfigFile()
void ReadConfigFile() {
// ... kode untuk membaca file ...
}
- Fungsi Utama: Memuat Pengaturan dari Memori.
- Penjelasan: Fungsi ini bertugas membaca file
config.jsonyang tersimpan di LittleFS dan memuat isinya ke dalam variabel-variabel program. - Alur Kerja:
LittleFS.begin(): Menyiapkan sistem file.LittleFS.exists("/config.json"): Mengecek apakah file konfigurasi sudah ada.LittleFS.open(..., "r"): Jika ada, buka file dalam mode baca (read).- Baca & Parsing: Membaca seluruh isi file dan menggunakan
ArduinoJson(deserializeJson) untuk mengubah teks JSON menjadi data terstruktur. - Salin ke Variabel: Jika parsing berhasil, salin nilai-nilai (seperti
mqtt_server,mqtt_user) dari data JSON ke variabel global diconfig.h. - Penanganan Error: Memberikan pesan error di Serial Monitor jika file tidak ada atau isinya tidak valid.
- Peran dalam Proyek: Ini adalah memori jangka panjang perangkat. Fungsi ini dipanggil sekali di awal
setup()untuk "mengingat" pengaturan terakhir, sehingga perangkat bisa langsung terhubung ke Wi-Fi dan MQTT tanpa bantuan pengguna.
3. String IpAddress2String(const IPAddress& ipAddress)
String IpAddress2String(const IPAddress& ipAddress) {
// ... kode konversi IP ...
}
- Fungsi Utama: Mengubah Alamat IP menjadi Teks.
- Penjelasan: Ini adalah fungsi bantuan (utility). Ia mengambil objek
IPAddress(misalnya dariWiFi.localIP()) dan mengubahnya menjadi bentuk stringString(misalnya"192.168.1.100"). - Peran dalam Proyek (Saat Ini): TIDAK DIGUNAKAN. Fungsi ini ada di file tetapi tidak dipanggil di mana pun dalam kode yang Anda berikan. Ini kemungkinan besar adalah sisa kode dari versi sebelumnya atau disiapkan untuk fitur masa depan (misalnya, untuk mencatat IP address ke file log atau mengirimnya via MQTT). Anda bisa menghapusnya dengan aman jika tidak dibutuhkan.
4. void SaveConfigFile()
void SaveConfigFile() {
// ... kode untuk menyimpan file ...
}
- Fungsi Utama: Menyimpan Pengaturan ke Memori.
- Penjelasan: Ini adalah kebalikan dari
ReadConfigFile(). Ia mengambil nilai dari variabel-variabel global dan menuliskannya ke dalam fileconfig.json. - Alur Kerja:
if (shouldSaveConfig): Fungsi ini hanya akan bekerja jika flagshouldSaveConfigbernilaitrue. Ini sangat efisien, karena tidak menulis ulang file setiap saat.- Buat JSON: Menggunakan
ArduinoJson(DynamicJsonDocument) untuk membuat struktur JSON di memori. - Isi Data: Mengisi struktur JSON tersebut dengan nilai dari variabel global (
mqtt_server, dll.). LittleFS.open(..., "w"): Membuka fileconfig.jsondalam mode tulis (write). Mode ini akan menimpa file yang sudah ada.- Tulis: Menggunakan
serializeJsonuntuk menulis struktur JSON dari memori ke dalam file. configFile.close(): Menutup file untuk memastikan semua data tersimpan dengan aman.
- Peran dalam Proyek: Ini adalah tindakan "Save". Fungsi ini dipanggil di
setup_wifi()setelahWiFiManagerselesai dansaveConfigCallbacktelah menyalakan flag-nya. Ia yang membuat pengaturan baru menjadi permanen.
5. void ResetSettings()
void ResetSettings() {
WiFiManager wifiManager;
wifiManager.resetSettings();
delay(2000);
ESP.restart();
}
- Fungsi Utama: Melakukan Reset Pabrik (Factory Reset).
- Penjelasan: Fungsi ini akan menghapus semua pengaturan jaringan yang disimpan oleh
WiFiManager. - Alur Kerja:
wifiManager.resetSettings(): Ini adalah perintah kunci. Ia menghapus kredensial Wi-Fi (SSID dan password) dari area memori khusus ESP32.ESP.restart(): Me-restart perangkat.
- Peran dalam Proyek: Ini adalah tombol "reset to default". Fungsi ini dipanggil dari
callback()jika perangkat menerima perintah khusus via MQTT. Setelah restart, karena tidak ada lagi pengaturan Wi-Fi, perangkat akan kembali ke mode Access Point (AbesensiRFID) dan siap untuk dikonfigurasi ulang dari awal. Sangat berguna jika perangkat akan dipindahkan ke lokasi baru.
Kesimpulan
File ConfigFile.ino adalah otak administrasi yang membuat perangkat Anda menjadi:
- Otonom: Bisa mengingat pengaturannya sendiri (
ReadConfigFile). - Fleksibel: Bisa menerima dan menyimpan pengaturan baru (
SaveConfigFile). - Dapat Diatur Ulang: Bisa di-reset ke kondisi pabrik (
ResetSettings).
Tanpa file ini, perangkat Anda akan "lupa" semua pengaturan setiap kali dimatikan.