#include <WiFi.h> // Library untuk menggunakan modul WiFI ESP
#include <HTTPClient.h> // Panggil library HTTPClient yang menyediakan banyak metode yang akan membantu kita bekerja dengan fungsionalitas HTTP
#include "DHTesp.h" // untuk membaca sensor DHT
const int DHT_PIN = 15;
DHTesp dhtSensor;
float hum;
float temp;
HTTPClient httpku; // Membuat Objec bernama "httpku"
const char *ssid = "Wokwi-GUEST"; // SSID yang anda ingin terhunung dengan ESP
const char *password = ""; // Password dari SSID Tersebut
String serverName = "https://api.thingspeak.com/update?api_key="; // Nama target server
String apiKey = "XL21UA8DTMVUXJLR"; // API Key dari server
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
WiFi.mode(WIFI_STA); // Station Mode : ESP32 dapat connect ke AP
WiFi.begin(ssid, password); // Mencoba terhubung ke jaringan ke SSID dan Password yg telah didefinisikan
while (WiFi.status() != WL_CONNECTED) { // Tunggu hingga ESP berhasil terkoneksi ke WiFi
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
hum = data.humidity;
temp = data.temperature;
Serial.print("Temperature:");
Serial.print(temp);
Serial.print("\tHumidity:");
Serial.println(hum);
String url = serverName + apiKey + "&field1=" + String (hum); // Menggabungkan API dengan semua payload data
httpku.begin(url.c_str()); // Mendefinisikan Spesific URL tujuan request
int httpCode = httpku.GET(); // Mengirimkan Request dengan Get Method dan mengembalikan nilai respon
if (httpCode > 0) { // Pengecekan nilai Respon
Serial.println("Data sent to ThingSpeak");
Serial.println(httpCode);
} else {
Serial.println("Error sending data to ThingSpeak");
}
httpku.end(); // Free the resources
delay(10000);
}
// Fungsi untuk membaca data dari Thingspeak
float readTSData(long TSChannel, unsigned int TSField) {
// Gunakan ThingSpeak untuk membaca data dari saluran Thingspeak
float data = ThingSpeak.readFloatField(TSChannel, TSField, readAPIKey);
// Tampilkan data ke dalam monitor serial
Serial.print("Data dari Thingspeak: ");
Serial.println(data, 9); // Menampilkan dengan 9 digit desimal
return data; // Kembalikan data yang telah dibaca
}