Penjelasan Program Absensi RFID dan ESP32 (Uji Kompetensi Edition) - 5. callback dan printMACAddress

1. Fungsi void callback(char* topic, byte* payload, unsigned int length)

Fungsi ini adalah penerima perintah jarak jauh dari sistem. Ia tidak dipanggil secara langsung oleh Anda di loop(), melainkan akan dijalankan otomatis oleh library PubSubClient setiap kali ada pesan MQTT yang masuk.

Bayangkan ini seperti layanan pesan singkat (SMS) di ponsel Anda. Ponsel Anda tidak terus-menerus mengecek SMS, tetapi ketika ada pesan masuk, ponsel akan "berbunyi" dan menampilkan pesan tersebut. Fungsi callback adalah "pemberitahuan" dan "penampil pesan" itu.

Pembahasan Kode

void callback(char* topic, byte* payload, unsigned int length) {

  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();

  String sTopic = topic;

  if (sTopic == mqtt_keywords2)
  {
    Serial.println("Sense Control Command");

    if ((char)payload[1] == '1')
    {
      ResetSettings();
    }

    if ((char)payload[0] == '1')
    {
      delay(2000);
      ESP.restart();
      delay(5000);
    }

Kesimpulan callback: Ini adalah "telinga" perangkat Anda di dunia MQTT, yang memungkinkannya untuk menerima dan menjalankan perintah dari jarak jauh, seperti restart atau reset konfigurasi.


2. Fungsi printMACAddress()

Fungsi ini jauh lebih sederhana. Tugasnya hanya satu: menampilkan alamat MAC perangkat ke Serial Monitor.

void printMACAddress() {
  Serial.println();
  Serial.print("MAC Address = ");
  Serial.println(WiFi.macAddress());
}

Pembahasan Kode

Fungsinya dalam Proyek Ini?

  1. Identifikasi & Debugging: Sangat berguna saat Anda memiliki beberapa perangkat ESP32 yang identik. Dengan mencetak MAC address, Anda bisa tahu pasti perangkat mana yang sedang Anda lihat di Serial Monitor.
  2. Verifikasi: Fungsi ini dipanggil di setup_wifi() setelah koneksi berhasil. Ini memberikan konfirmasi visual kepada Anda tentang identitas unik perangkat yang sedang terhubung.

Perbedaan Penting dengan Kode di setup_wifi()

Di setup_wifi(), ada juga kode yang memproses MAC address:

// Di setup_wifi()
WiFi.macAddress(MAC_array);
// ... loop sprintf untuk memformatnya ke MAC_char

Kesimpulan printMACAddress: Ini adalah fungsi utilitas kecil yang membantu Anda mengidentifikasi perangkat secara fisik selama proses pengembangan dan debugging.