//Nama : Irfan Mahrubi
//NIM : 2409511003
//UTS Instrumentasi Dan Sistem Pengukuran
//----------------------------------------Including the libraries.
#include "WiFi.h"
#include <HTTPClient.h>
#include "DHT.h"
//----------------------------------------
#define On_Board_LED_PIN 2
// Defines the DHT22 PIN and DHT sensor type.
#define DHTPIN 4
// #define DHTTYPE DHT22
#define DHTTYPE DHT22 //22 sensor type
//----------------------------------------SSID and PASSWORD of your WiFi network.
const char* ssid = "Wokwi-GUEST"; //--> Your wifi name
const char* password = ""; //--> Your wifi password
//----------------------------------------
// Google script Web_App_URL.
String Web_App_URL = "https://script.google.com/macros/s/AKfycbw2hG8Tnq045H3jOMSfPhAHTDyOMPSR5H8nWYnTPx7lN7E_zTJnp4niCHRl1TX5oXo/exec";
String Status_Read_Sensor = "";
float Temp;
int Humd;
unsigned long previousMillis = 0;
const long interval = 1000;
DHT dht22(DHTPIN, DHTTYPE);
void Getting_DHT22_Sensor_Data() {
Humd = dht22.readHumidity();
Temp = dht22.readTemperature();
if (isnan(Humd) || isnan(Temp)) {
Serial.println();
Serial.println(F("Failed to read from DHT sensor!"));
Serial.println();
Status_Read_Sensor = "Failed";
Temp = 0.00;
Humd = 0;
} else {
Status_Read_Sensor = "Success";
}
Serial.println();
Serial.println("-------------");
Serial.print(F("Status_Read_Sensor : "));
Serial.print(Status_Read_Sensor);
Serial.print(F(" | Humidity : "));
Serial.print(Humd);
Serial.print(F("% | Temperature : "));
Serial.print(Temp);
Serial.println(F("°C"));
Serial.println("-------------");
}
void setup() {
Serial.begin(115200);
Serial.println();
delay(1000);
pinMode(On_Board_LED_PIN, OUTPUT);
Serial.println();
Serial.println("-------------");
Serial.println("WIFI mode : STA");
WiFi.mode(WIFI_STA);
Serial.println("-------------");
Serial.println();
Serial.println("------------");
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
int connecting_process_timed_out = 20;
connecting_process_timed_out = connecting_process_timed_out * 2;
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
digitalWrite(On_Board_LED_PIN, HIGH);
delay(250);
digitalWrite(On_Board_LED_PIN, LOW);
delay(250);
if (connecting_process_timed_out > 0) connecting_process_timed_out--;
if (connecting_process_timed_out == 0) {
delay(1000);
ESP.restart();
}
}
digitalWrite(On_Board_LED_PIN, LOW);
Serial.println();
Serial.println("WiFi connected");
Serial.println("------------");
delay(100);
Serial.println();
Serial.println("DHT12 Begin");
Serial.println();
delay(1000);
dht22.begin();
delay(2000);
}
void loop() {
Getting_DHT22_Sensor_Data();
if (millis() - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = millis();
if (WiFi.status() == WL_CONNECTED) {
digitalWrite(On_Board_LED_PIN, HIGH);
// Create a URL for sending or writing data to Google Sheets.
String Send_Data_URL = Web_App_URL + "?sts=write";
Send_Data_URL += "&srs=" + Status_Read_Sensor;
Send_Data_URL += "&temp=" + String(Temp);
Send_Data_URL += "&humd=" + String(Humd);
Serial.println();
Serial.println("-------------");
Serial.println("Send data to Google Spreadsheet...");
Serial.print("URL : ");
Serial.println(Send_Data_URL);
HTTPClient http;
// HTTP GET Request.
http.begin(Send_Data_URL.c_str());
http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
// Gets the HTTP status code.
int httpCode = http.GET();
Serial.print("HTTP Status Code : ");
Serial.println(httpCode);
// Getting response from google sheets.
String payload;
if (httpCode > 0) {
payload = http.getString();
Serial.println("Payload : " + payload);
}
http.end();
digitalWrite(On_Board_LED_PIN, LOW);
Serial.println("-------------");
}
}
}
//________________________________________________________________________________