#include <WiFi.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

// Ganti dengan SSID dan Password WiFi kalian
const char* ssid = "Wokwi-GUEST";
const char* wifi_password = "";

// Ganti dengan detail koneksi MySQL kalian
IPAddress server_addr(175, 184, 251, 204);  // Alamat IP MySQL Server
char mysql_user[] = "sensor";               // Username MySQL
char mysql_password[] = "IOT5ensor!";       // Password MySQL
char database[] = "iot";                    // Nama database

WiFiClient client;
MySQL_Connection conn((Client *)&client);

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, wifi_password);

  Serial.print("Connecting to WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" connected");

  Serial.print("Connecting to MySQL");
  Serial.print(conn.connect(server_addr, 3306, mysql_user, mysql_password));
  while (conn.connect(server_addr, 3306, mysql_user, mysql_password)) {
    Serial.println(" connected");
  // } else {
  //   Serial.println(" connection failed.");
  // }
}

void loop() {
  if (conn.connected()) {
    // Dapatkan waktu saat ini
    String tanggal = "2024-06-12";  // Ganti dengan kode untuk mendapatkan tanggal saat ini
    String jam = "12:34:56";        // Ganti dengan kode untuk mendapatkan waktu saat ini
    int nilai = 123;                // Ganti dengan nilai sensor yang sebenarnya
    
    // Format query SQL
    char query[256];
    sprintf(query, "INSERT INTO your_table (tanggal, jam, nilai) VALUES ('%s', '%s', %d)", tanggal.c_str(), jam.c_str(), nilai);
    
    MySQL_Cursor* cursor = new MySQL_Cursor(&conn);
    cursor->execute(query);
    
    delete cursor;
    Serial.println("Data inserted");
    delay(10000); // Delay 10 detik sebelum mengirim data lagi
  } else {
    Serial.println("Not connected to MySQL.");
    // Coba reconnect
    if (conn.connect(server_addr, 3306, mysql_user, mysql_password)) {
      Serial.println("Reconnected to database.");
    } else {
      Serial.println("Reconnection failed.");
    }
    delay(10000); // Delay 10 detik sebelum mencoba kembali
  }
}