Penjelasan Program Absensi RFID dan ESP32 (Uji Kompetensi Edition) - 4. wifi_setup

Ini adalah salah satu fungsi paling penting yang membuat proyek ini menjadi sangat user-friendly.

Tujuan Utama: Fungsi ini bertanggung jawab untuk menghubungkan ESP32 ke jaringan Wi-Fi. Namun, ia melakukan ini dengan cara yang sangat cerdas: jika belum ada pengaturan, ia akan memudahkan pengguna untuk mengaturnya melalui browser.

Bayangkan fungsi ini sebagai "Teknisi Jaringan Otomatis" yang ada di dalam perangkat Anda.


Pembahasan Blok per Blok

Blok 1: Membuat Identitas Unik (Client ID)

WiFi.macAddress(MAC_array);
for (int i = 0; i < sizeof(MAC_array) - 1; ++i) {
  sprintf(MAC_char, "%s%02x:", MAC_char, MAC_array[i]);
}
sprintf(MAC_char, "%s%02x", MAC_char, MAC_array[sizeof(MAC_array) - 1]);

Blok 2: Membuat Formulir Konfigurasi

WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40);
String(mqtt_port).toCharArray(smqtt_port, 5);
WiFiManagerParameter custom_mqtt_port("port", "mqtt port", smqtt_port, 5);
// ... dan seterusnya untuk user, password, keyword1, keyword2

Blok 3: Mengonfigurasi dan Menjalankan WiFiManager

WiFiManager wifiManager;
wifiManager.setSaveConfigCallback(saveConfigCallback);
wifiManager.addParameter(&custom_mqtt_server);
wifiManager.addParameter(&custom_mqtt_port);
// ... dan seterusnya

Blok 4: Memulai Proses Koneksi

if (!wifiManager.autoConnect("AbesensiRFID", "password")) {
  Serial.println("failed to connect and hit timeout");
  delay(3000);
  ESP.reset();
  delay(5000);
}

Blok 5: Menampilkan Status Koneksi

Serial.println("");
Serial.println("WiFi connected To:");
Serial.println(WiFi.SSID());
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
printMACAddress();

Alur Kerja dari Perspektif Pengguna

Skenario 1: Penggunaan Pertama Kali

  1. ESP32 dinyalakan.
  2. setup_wifi() dijalankan.
  3. autoConnect() tidak menemukan pengaturan Wi-Fi yang tersimpan.
  4. ESP32 membuat hotspot bernama AbesensiRFID.
  5. Pengguna terhubung ke hotspot ini dengan password password.
  6. Browser pengguna otomatis terbuka ke halaman konfigurasi yang berisi semua form (server, port, user, dll).
  7. Pengguna mengisi form dan klik Save.
  8. saveConfigCallback dipanggil, shouldSaveConfig menjadi true.
  9. ESP32 terhubung ke Wi-Fi yang baru disetel.
  10. Program mencetak status sukses dan melanjutkan ke loop().

Skenario 2: Penggunaan Normal (Setelah Konfigurasi)

  1. ESP32 dinyalakan.
  2. setup_wifi() dijalankan.
  3. autoConnect() menemukan pengaturan Wi-Fi yang tersimpan di config.json.
  4. ESP32 langsung terhubung ke Wi-Fi tanpa membuat hotspot.
  5. Program mencetak status sukses dan melanjutkan ke loop().

Dengan desain ini, setup_wifi() membuat perangkat IoT Anda menjadi plug-and-play dan sangat mudah dikonfigurasi oleh siapa saja.