#include <DHT.h>
#include <WiFi.h>
#include <HTTPClient.h>
#define DHTPIN 4 // DHT22 sensor pin
#define DHTTYPE DHT22 // DHT11/22 sensor type
const char* ssid = "Wokwi-GUEST"; // ganti sesuai nama wifi
const char* password = ""; // ganti sesuai password wifi
const char* webAppUrl = "https://script.google.com/macros/s/AKfycbxpekfP--35-xD3KksjDkD_6w-rcuUifDwbnUJfpvQirBhmfqDt0fe3JRWV4FdI-fRm/exec";
DHT dht(DHTPIN, DHTTYPE);
unsigned long previousMillis = 0;
const long interval = 60000; // Interval 1 menit dalam milliseconds
void setup() {
Serial.begin(115200);
delay(100);
WiFi.begin(ssid, password);
Serial.println("Connecting to WiFi...");
int timeout = 0;
while (WiFi.status() != WL_CONNECTED && timeout < 20) {
delay(1000);
Serial.print(".");
timeout++;
}
if (WiFi.status() != WL_CONNECTED) {
Serial.println("\nFailed to connect to WiFi. Restarting...");
ESP.restart();
}
Serial.println("\nConnected to WiFi");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
dht.begin();
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi connection lost. Reconnecting...");
WiFi.reconnect();
return;
}
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor");
return;
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
sendDataToScript(temperature, humidity);
}
}
void sendDataToScript(float temperature, float humidity) {
HTTPClient http;
String serverPath = String(webAppUrl) + "?temperature=" + String(temperature, 2) + "&humidity=" + String(humidity, 2);
Serial.print("Sending data to server: ");
Serial.println(serverPath);
if (http.begin(serverPath)) {
int httpCode = http.GET();
if (httpCode > 0) {
Serial.print("Server response code: ");
Serial.println(httpCode);
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println("Data logged successfully");
}
} else {
Serial.print("HTTP GET request failed with error: ");
Serial.println(http.errorToString(httpCode));
}
http.end();
} else {
Serial.println("Unable to connect to the server");
}
}